如何通过SymPy操作将(1/x)^a / x^2简化为x^(-2-a)?
SymPy表达式简化:将(1/x)^a / x²转化为x^(-2-a)的正确方法
我需要把表达式(1/x)^a / x^2简化为数学上等价的x^(-2-a),但尝试了SymPy的simplify、expand_power_exp等多个函数都没得到预期结果,测试代码如下:
import sympy as sym expr = sym.sympify("(1/x)^a / x^2") print(sym.simplify(expr)) print(sym.expand_power_exp(expr)) print(sym.expand_power_base(expr, force=True)) print(sym.powsimp(expr, force=True)) print(sym.collect(expr, "x")) print(sym.ratsimp(expr)) # 所有输出均为(1/x)**a/x**2
正确简化步骤
需要结合powdenest和powsimp两个函数,强制展开底数并合并同底数幂:
import sympy as sym expr = sym.sympify("(1/x)^a / x^2") # 强制展开(1/x)^a为x^(-a) step1 = sym.powdenest(expr, force=True) # 合并x^(-a)和x^(-2)为x^(-a-2) result = sym.powsimp(step1, force=True) print(result) # 输出x**(-a - 2)
或者合并为一行代码:
result = sym.powsimp(sym.powdenest(expr, force=True), force=True)
原理说明
SymPy默认对带有符号指数(比如这里的a)的底数展开会比较保守,powdenest(force=True)可以强制将(1/x)^a这类形式转化为x^(-a);之后powsimp会自动合并同底数的幂运算,将x^(-a) / x^2转化为x^(-a-2)。
内容的提问来源于stack exchange,提问作者Carlos Pinzón
相关产品推荐
相关产品推荐

