从SymPy表达式中删除系数

3

我有一个在 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。欢迎提供任何建议。


正确,我已经删除了“leading”这个术语。我只想从表达式中删除系数。 - Austin Downey
1个回答

3

如果表达式实际上是一个多项式(如此处),可以采用以下方法:将其转换为Poly对象,使用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 不是一个多项式,"系数" 的含义就不那么清晰了。

是的,我一开始就应该将它视为多项式。我对SymPy的理解还不够深入。 - Austin Downey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接