2016-08-05 61 views
0

我有一個sympy表達與一種可變x,例如提取仿射部分

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

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

我想以編程提取表達式,即的仿射部分,該部分,做不取決於x;上例中的7。請注意,某些術語可能是非線性的。

任何提示?

回答

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