如何按指定符号变形分式?SymPy实现a/(a+b)转1/(1+b/a)
如何用SymPy将分式a/(a+b)转换为1/(1+b/a)
factor函数的核心作用是因式分解,无法直接实现这种分子分母同除以某一变量的变形。要得到目标形式,可通过手动对分子分母进行同除操作,或结合因式分解后约分来实现,以下是两种可行方案:
方案一:直接对分子分母同除以a
通过分别提取表达式的分子和分母,各自除以a后再重新组合,最后简化即可:
import sympy as sp a = sp.Symbol("a") b = sp.Symbol("b") expr = a/(a + b) # 分子分母同时除以a transformed_expr = (expr.numerator / a) / (expr.denominator / a) # 简化表达式 print(sp.simplify(transformed_expr))
执行后会输出1/(1 + b/a),符合预期形式。
方案二:提取分母公因子后约分
先对分母提取公因子a,再与分子的a进行约分:
import sympy as sp a = sp.Symbol("a") b = sp.Symbol("b") expr = a/(a + b) # 对分母提取公因子a factored_denom = sp.factor(expr.denominator, a) # 分子除以因式分解后的分母 result = expr.numerator / factored_denom print(sp.simplify(result))
注:SymPy默认假设符号变量不为零(如a≠0),因此无需额外声明即可完成上述变形。
内容的提问来源于stack exchange,提问作者Rémi Delaporte-Mathurin
相关产品推荐
相关产品推荐

