如何在 sympy 表达式中获取系数/ Python
How to get coefficients in sympy expression/ Python
如何在 sympy 表达式中获取系数
b = sympy.Symbol('b')
a = sympy.Symbol('a')
x = sympy.Symbol('x')
y = 2*x**3 + a*x**2 +b*x
结果应该是:
coeff for x**3 =2
coeff for x**2 = a
coeff for x = b
得到多项式中项的表达形式出奇地尴尬,但你可以这样做:
In [28]: b = sympy.Symbol('b')
...: a = sympy.Symbol('a')
...: x = sympy.Symbol('x')
...:
...: y = 2*x**3 + a*x**2 +b*x
In [29]: p = Poly(y, x)
In [30]: p
Out[30]: Poly(2*x**3 + a*x**2 + b*x, x, domain='ZZ[a,b]')
In [31]: {x**m[0]:p.coeff_monomial(m) for m in p.monoms()}
Out[31]:
⎧ 2 3 ⎫
⎨x: b, x : a, x : 2⎬
⎩ ⎭
虽然得到系数很容易
>>> y = 2*x**3 + a*x**2 + b
>>> p = Poly(y, x)
>>> p.coeffs()
[2, a, b]
>>> p.all_coeffs()
[2, a, 0, b]
将它们链接到它们的单项式是 unimplemented/ackward 部分。 @OscarBenjamin 展示了如何使用 Poly 的单项式来做到这一点。您还可以在不将其转换为 Poly 的情况下使用表达式:
>>> dict(i.as_independent(x)[::-1] for i in Add.make_args(y))
{1: b, x**3: 2, x**2: a}
如果 SymPy 在 Poly.coeffs
上包含一个 mapping
关键字,这将允许返回此字典,这将是一个很好的 "battery"。或者,可以给 Expr.as_coefficients_dict
一个可选的 variable
关键字,允许返回独立于 variable
.
中任何符号的系数
如果表达式中有未收集的术语,如 a*x + b*x
,这个简单的字典理解将失败。发布了一个更强大的小功能 here.
如何在 sympy 表达式中获取系数
b = sympy.Symbol('b')
a = sympy.Symbol('a')
x = sympy.Symbol('x')
y = 2*x**3 + a*x**2 +b*x
结果应该是:
coeff for x**3 =2
coeff for x**2 = a
coeff for x = b
得到多项式中项的表达形式出奇地尴尬,但你可以这样做:
In [28]: b = sympy.Symbol('b')
...: a = sympy.Symbol('a')
...: x = sympy.Symbol('x')
...:
...: y = 2*x**3 + a*x**2 +b*x
In [29]: p = Poly(y, x)
In [30]: p
Out[30]: Poly(2*x**3 + a*x**2 + b*x, x, domain='ZZ[a,b]')
In [31]: {x**m[0]:p.coeff_monomial(m) for m in p.monoms()}
Out[31]:
⎧ 2 3 ⎫
⎨x: b, x : a, x : 2⎬
⎩ ⎭
虽然得到系数很容易
>>> y = 2*x**3 + a*x**2 + b
>>> p = Poly(y, x)
>>> p.coeffs()
[2, a, b]
>>> p.all_coeffs()
[2, a, 0, b]
将它们链接到它们的单项式是 unimplemented/ackward 部分。 @OscarBenjamin 展示了如何使用 Poly 的单项式来做到这一点。您还可以在不将其转换为 Poly 的情况下使用表达式:
>>> dict(i.as_independent(x)[::-1] for i in Add.make_args(y))
{1: b, x**3: 2, x**2: a}
如果 SymPy 在 Poly.coeffs
上包含一个 mapping
关键字,这将允许返回此字典,这将是一个很好的 "battery"。或者,可以给 Expr.as_coefficients_dict
一个可选的 variable
关键字,允许返回独立于 variable
.
如果表达式中有未收集的术语,如 a*x + b*x
,这个简单的字典理解将失败。发布了一个更强大的小功能 here.