hkh*_*hkh 6 python math sympy python-2.7 polynomials
我目前正在处理多个变量的函数,需要收集类似的术语以尝试简化表达式。
说表达式写成如下:
x = sympy.Symbol('x')
y = sympy.Symbol('y')
k = sympy.Symbol('k')
a = sympy.Symbol('a')
z = k*(y**2*(a + x) + (a + x)**3/3) - k((2*k*y*(a + x)*(n - 1)*(-k*(y**2*(-a + x) + (-a + x)**3/3) + k*(y**2*(a + x) + (a + x)**3/3)) + y)**2*(-a + k*(n - 1)*(y**2 + (a + x)**2)*(-k*(y**2*(-a + x)))))
zEx = z.expand()
print type(z)
print type(zEx)
Run Code Online (Sandbox Code Playgroud)
编辑:格式化以增加清晰度并更改表达式 z 以使问题更容易理解。
Sayz包含很多术语,需要通过眼睛筛选它们。并选择适当的条款,将花费不令人满意的时间。
我想收集所有的条款只有一个的** 1倍数。我不关心 a 的二次或更高次幂,也不关心不包含 a 的项。
的类型z并zEx返回以下内容:
print type(z)
print type(zEx)
>>>
<class 'sympy.core.add.Add'>
<class 'sympy.core.mul.Mul'>
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何收集是 的倍数的术语,而a不是 a^0 或 a^2?
医生
其中 z(x,y) 与常量 a 和 k 描述为zandzEx和它们的 type():如何从表达式中删除所有非a项z和a从表达式中删除所有二次或更高项?这样剩下的只是包含 的统一幂的项a。
除了给出的其他答案,您还可以collect用作字典。
print(collect(zEx,a,evaluate=False)[a])
Run Code Online (Sandbox Code Playgroud)
产生表达式
k*x**2 + k*y**2
Run Code Online (Sandbox Code Playgroud)