Sympy:删除多项式中的高阶项

zz

使用Sympy,假设我们有一个表达式f,它是符号“ x”(以及可能的其他符号)的多项式。

我想知道是否有一种有效的方法可以将所有项以大于某个整数n的f降阶。

作为一种特殊情况,我有一个非常复杂的函数,但我只想将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 ⎠

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章