2017-07-16 42 views
-1

转换为字符串假设我有一些表达如何分割的总和成其组成部分,而不在python

from sympy import * 
a,b,c,x,y = symbols('a c b x y') 
eq=a*x + b*x*y + c*y**2 

需要被分成含有单项式的阵列。

目前的解决方案我是

parts = str(eq).split(' + ') 

然后,我使用eval功能的阵列部分中的每个元素将被解释为表达式上。

如何在不首先将表达式转换为字符串的情况下将多元多项式分解为单项部分?

回答

0

您可以explore a sympy expression using .func and .args

eq.func 
> <class 'sympy.core.add.Add'> 
eq.args 
> (a*x, b*y**2, c*x*y) 

每个参数的个数再次是sympy表达式,可以以同样的方式进行探讨:

eq.args[0].func 
> <class 'sympy.core.mul.Mul' 
eq.args[0].args 
> (a, x) 

等。请注意,在表达式树的最终级别,您需要除.func.args之外的其他函数,例如:

eq.args[0].args[0].name # the a in a*x 
> 'a' 
eq.args[1].args[1].args[1].n() # the 2 in y**2 
> 2.00000000000000