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

标签 python sympy symbolic-math computer-algebra-systems polynomials

使用 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/

相关文章:

python - sympysolve() 无法找到解决方案

python-3.x - 在 sympy 中集成对数正态 PDF

r - 任意阶多项式的函数(首选符号方法)

java - Java中线性系统的符号解

python - 在 App Engine 上将大型 CSV 文件写入 GCS

python - 如何同时遍历多个列表

python - 计算列表中的连续零

python - 终端最后一行的 apt-like 进度

python - 不同的 sympy 表达结果

matlab - 如何将泰勒级数系数存储到 Matlab 脚本中的数组中