提取SymPy表达式的仿射部分

时间:2016-08-05 12:01:57

标签: python sympy

我有一个带有一个变量x的表达式,例如,

import sympy
x = sympy.Symbol('x')

f = 3*x**2 + 5*x + 7 + sympy.exp(x)

我想以编程方式提取该表达式的仿射部分,即不依赖于x的部分;上例中的7。请注意,某些术语可能是非线性的。

任何提示?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您需要使用coeff

>>> import sympy
>>> x = sympy.Symbol('x')
>>> f = 2*(3*x**2 + 5*x + 7 + sympy.exp(x))
>>> f.coeff(x, 0)
14

如果您的表达式包含多个变量,则可以尝试as_coefficients_dict

>>> import sympy
>>> x = sympy.Symbol('x')
>>> y = sympy.Symbol('y')
>>> f = 4 + 3 * (2 * x + 4 * y + 3 * x * y + sympy.exp(x + y) + 6)
>>> coeffs = f.as_coefficients_dict()
>>> coeffs
defaultdict(<class 'int'>, {exp(x + y): 3, 1: 22, y: 12, x: 6, x*y: 9})
>>> coeffs[1]
22 # 4 + 3 * 6
相关问题