在同情中考虑分数

时间:2015-09-21 05:52:43

标签: math sympy algebra fractions factoring

如何让同情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

1 个答案:

答案 0 :(得分:1)

一种简单的方法:

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] 中的乘法调用了一些评估例程,这些例程略微简化了表达式,但没有扩展它。