我有一个简单的因子分解问题,我无法理清。我已经取得了很大的成功,同时处理了相当复杂的积分,但是我被一些简单的东西弄得晕头转向。
我如何获得
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)
产生相同的旧解决方案。
答案 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
方法。