同情因素简单的关系

时间:2014-01-08 13:29:01

标签: python sympy

我有一个简单的因子分解问题,我无法理清。我已经取得了很大的成功,同时处理了相当复杂的积分,但是我被一些简单的东西弄得晕头转向。

我如何获得

phi**2 - 2*phi*phi_0 + phi_0**2 - 8

要素

(phi - phi_0)**2 - 8

我已经尝试过因子函数

factor(phi**2 - 2*phi*phi_0 + phi_0**2 - 8,phi-phi_0)

产生相同的旧解决方案。

1 个答案:

答案 0 :(得分:1)

正如我在评论中所指出的,这种“部分因素化”并不是唯一的(例如,x**2 + 5*x + 7等于(x + 2)*(x + 3) + 1(x + 1)*(x + 4) + 3,一旦你明白发生了什么,就不难想出你自己的例子。

有很多方法可以手动完成这些事情,但很难知道该告诉你什么,因为我不知道你在寻找什么。例如,执行此特定示例的最简单方法可能是

>>> print(A.subs(phi, x + phi_0).factor().subs(x, phi - phi_0))
(phi - phi_0)**2 - 8

也就是说,让x = phi - phi_0(SymPy不够聪明,不能用phi - phi_0替换x,但它足够聪明,可以用{{1}替换phi },这是一回事)。如果您想要考虑更大的多项式,或者如果您不知道您的目标是什么,这并不能很好地概括。但是考虑到变量的名称,我猜你只关心x - phi_0

除此之外,我应该指出,您可以通过挖掘和编写自己的挖掘表达式的算法,或多或少地做任何您想要的简化。看一下http://docs.sympy.org/latest/tutorial/manipulation.html让您入门。另请查看phi - phi_0的所有方法。如果您最终编写了这样的东西,有很多有用的辅助函数,例如各种Expr方法。