使用 Sympy,假设我们有一个表达式 f,它是符号“x”(以及可能的其他符号)的多项式。
我想知道是否有一种有效的方法可以删除 f 中大于某个整数 n 的所有项。
作为一个特例,我有一个非常复杂的函数,但我只想保留 x 中的二阶项。执行此操作的有效方法是什么?
一种明显但效率不高的方法是,对于每一个小于 n 的 m,取 m 个导数并将 x 设置为 0 以获得 x^m 的系数。我们以这种方式获得每个系数,然后重建多项式。但是采取衍生品并不是最有效的事情。
最佳答案
一个简单的方法是将 O(x**n)
添加到表达式中,例如
In [23]: x + x**2 + x**4 + x**10 + O(x**3)
Out[23]:
2 ⎛ 3⎞
x + x + O⎝x ⎠
如果以后要删除它,请使用removeO
方法
In [24]: (x + x**2 + x**4 + x**10 + O(x**3)).removeO()
Out[24]:
2
x + x
您还可以使用series
对表达式进行级数展开。这里的区别在于非多项式项在表达式中结束时的行为:
In [25]: x + sin(x) + O(x**3)
Out[25]:
⎛ 3⎞
sin(x) + x + O⎝x ⎠
In [26]: (x + sin(x)).series(x, 0, 3)
Out[26]:
⎛ 3⎞
2⋅x + O⎝x ⎠
关于python - Sympy:删除多项式中的高阶项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25001896/