[英]how to get the coefficients of the equation in sympy?
我有一個很長的 sympy 方程,如下所示:
a^2 + 2ab + 2a^2*b + 3b^2
我想得到這個列表:
[1,2,2,3]
我怎樣才能做到這一點?
import sympy as sy
a,b = sy.symbols('a,b')
your_poly = sy.poly(a**2 + 2*a*b + 2*a**2*b + 3*b**2)
print(your_poly.coeffs())
output 將是:
[2, 1, 2, 3]
因為 function 從最高到最低的多項式次數排序。
SymPy 可以為您提供這些系數,但這個問題有幾個細微差別:
>>> from sympy import parse_expr
>>> eq = parse_expr('a^2 + 2ab + 2a^2*b + 3b^2', transformations='all')
>>> eq
2*a**2*b + a**2 + 2*a*b + 3*b**2
as_coeff_Mul
獲得總和項的方法是使用.args
所以 >>> co, trm = zip(*[i.as_coeff_Mul() for i in eq.args])
>>> co
(1, 3, 2, 2)
>>> trm
(a**2, b**2, a*b, a**2*b)
Poly.coeffs()
的問題在於,對於哪個單項式給出系數是不透明的,並且 Poly 方法在信息方面是較低級別的。 但是為了完整性 >>> p = Poly(eq)
>>> p.gens
(a, b)
>>> p.terms()
[((2, 1), 2), ((2, 0), 1), ((1, 1), 2), ((0, 2), 3)]
你看到gens、單項式指數和系數之間的關系了嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.