2017-07-16 40 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