在 sympy 中分解分数
Factoring fractions in sympy
我如何要求 sympy 将 x**2 - 3/2*x + 1/2 分解为 (x-1)*(x-1/2)?
我得到的最接近的是:
>>> (x**2 - Rational(3/2)*x + Rational(1/2)).factor()
(x - 1)*(2*x - 1)/2
一个简单的方法:
In [1]: expr = (x**2 - Rational(3/2)*x + Rational(1/2))
In [2]: expr
Out[2]:
2 3*x 1
x - --- + -
2 2
In [3]: fe = factor(expr)
In [4]: fe
Out[4]:
(x - 1)*(2*x - 1)
-----------------
2
In [5]: fe.args
Out[5]: (1/2, x - 1, 2*x - 1)
In [6]: fe.args[0]*fe.args[2]*fe.args[1]
Out[6]: (x - 1)*(x - 1/2)
也就是说,将表达式 [3] 因式分解,然后得到乘积参数 [5],并将它们相乘 [6]。步骤 [6] 中的乘法调用了一些计算例程,这些例程稍微简化了表达式,但没有达到扩展它的程度。
我如何要求 sympy 将 x**2 - 3/2*x + 1/2 分解为 (x-1)*(x-1/2)? 我得到的最接近的是:
>>> (x**2 - Rational(3/2)*x + Rational(1/2)).factor()
(x - 1)*(2*x - 1)/2
一个简单的方法:
In [1]: expr = (x**2 - Rational(3/2)*x + Rational(1/2))
In [2]: expr
Out[2]:
2 3*x 1
x - --- + -
2 2
In [3]: fe = factor(expr)
In [4]: fe
Out[4]:
(x - 1)*(2*x - 1)
-----------------
2
In [5]: fe.args
Out[5]: (1/2, x - 1, 2*x - 1)
In [6]: fe.args[0]*fe.args[2]*fe.args[1]
Out[6]: (x - 1)*(x - 1/2)
也就是说,将表达式 [3] 因式分解,然后得到乘积参数 [5],并将它们相乘 [6]。步骤 [6] 中的乘法调用了一些计算例程,这些例程稍微简化了表达式,但没有达到扩展它的程度。