我有一个相对简单的复杂sympy表达式,可以很容易地从变量中读取系数。但是coeff功能似乎无法正常工作
import sympy as sp
a,b = sp.symbols("a, b")
expr = 2640.0*a - 4.5*(1 + 1j)*(264.0*a + 264.0*b) - 4.5*(+1 - 1j)*(264.0*a + 264.0*b)
print(expr.coeff(a))
> 2640.00000000000
print(sp.simplify(expr))
> 264.0*a - 2376.0*b
我希望expr.coeff(a)的输出返回264.0,但显然不是吗?任何帮助表示赞赏。
答案 0 :(得分:0)
您的第一个表达式具有2640.0
作为系数a
。如您所见,系数简化后变为 only 。确实,如果您在简化表达式后打印系数,则会得到264.0
import sympy as sp
a,b = sp.symbols("a, b")
expr = 2640.0*a - 4.5*(1 + 1j)*(264.0*a + 264.0*b) - 4.5*(+1 - 1j)*(264.0*a + 264.0*b)
print(expr.coeff(a))
# 2640.00000000000
print(sp.simplify(expr))
# 264.0*a - 2376.0*b
print(sp.simplify(expr).coeff(a)) # <--- Simplified expression
# 264.000000000000
答案 1 :(得分:0)
coeff
给出顶层表达式的系数。如果您在查找系数之前使用 expand
,那么您将获得数学(不是表达式相关的文字)系数。如果您知道表达式在感兴趣的符号中是线性的,您也可以微分一次:
>>> expr.diff(a)
264.000000000000
>>> expr.expand().coeff(a)
264.000000000000
Poly
自动扩展表达式并允许查询单项式:
>>> Poly(expr).coeff_monomial(a)
264.000000000000