从SymPy表达式中删除系数

时间:2017-01-14 22:37:37

标签: python sympy

我在SymPy中有一个符号表达式,我需要从表达式的二阶导数中删除所有系数。这是代码

import sympy as sym

x, y = sym.symbols('x y')

# define the shape function 
S_function =                0                                 +\
                         x + y                                +\
                   x**2 + x*y + y**2                          +\
             x**3 + x**2*y + x*y**2 + y**3                   

# take the 2nd derivative of the shape function for the x components
S_function_xx = sym.expand(sym.diff(S_function,x,2))

print(S_function_xx)

我得到6 * x + 2 * y + 2的输出,我需要将其转换为x + y。欢迎任何建议。

1 个答案:

答案 0 :(得分:3)

如果表达式实际上是多项式(如此处所示),则可以使用以下内容:将其转换为Poly object,获取带有monoms的单项式列表,然后重新组合,删除常量术语

monom_list = sym.Poly(S_function_xx, x, y).monoms()
new_function = sum([x**a*y**b for a, b in monom_list if a + b > 0]) 

如果S_function_xx不是多项式,那么它不是很清楚什么是"系数"。