簡體   English   中英

如何在sympy中獲得方程的系數?

[英]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 可以為您提供這些系數,但這個問題有幾個細微差別:

  1. 如何讓 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
  1. 將項與其系數分開的最簡單方法是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)
  1. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM