如何在 Sympy 中找到泰勒级数的第 n 项

问题描述 投票:0回答:3

有没有一种方法可以在不定义 n 值的情况下计算泰勒级数展开式的第 n 项?对于正弦,它是

(-1)**n*x**(2*n+1)/(2*n+1)!
。在 Maxima 中,它是一个(某种程度上)与
powerseries(sin(x), x, 0)
相关的形式。

python sympy
3个回答
0
投票

使用数学表达式:f^(n)(x) / n! x^n:

diff(f(x), *[x for _ in xrange(n)]) / factorial(n) * x**n

*
的魔力只是解压列表:

 diff(f(x), *[x, x, x])

相当于:

 diff(f(x), x, x, x)

0
投票

问题提出近十年后,Sympy 得到改进并实施了Formal Power Series。唯一的问题是文档中没有涵盖部分 API(特别是类属性,因此请参阅 sympy/series/formal.py 源代码来深入研究)。

因此,这是一个获取正弦函数幂级数第 nth 项的示例,如最初所问:

from sympy import simplify, fps, sin
from sympy.abc import x, n

FormalPowerSeries
使用关键函数
fps
:

计算
sin_fps = fps(sin(x))

结果并不像问题中所述的那样紧凑,因为对所有整数进行级数求和,而只有奇数项是非零。 LaTeX display of Formal Power Series of sine computed by sympy.fps(sin(x))

从该系列中,可以使用

.ak
属性访问每个系数的公式,该属性返回一个
SeqFormula
序列,该序列本身具有
.formula
属性:

ak = sin_fps.ak.formula

现在,在正弦和余弦的特殊情况下,系数公式是一个Piecewise定义的函数对象)。从中,我可以通过深入研究分段表达式的

.args
来仅提取奇数系数:

ak_odd = ak.args[0][0]

odd coefficient of the power series of sine

最后,这个表达式可以通过用 2*n+1 替换 k 来简化。然而,这需要获取对构建公式时实际使用的Dummy变量 k 的引用。查看

FormalPowerSeries
的源代码给了我这个:

k = sin_fps.ak.variables[0]
ak_odd.subs(k, 2*n+1)

odd coefficient of the power series of sine with k replaced by 2n+1

这与正弦级数系数的经典公式相匹配,请记住 Γ(2n+2) = (2n+1)!(参见 Gamma 函数)。


-1
投票

这是一系列数字:

4、10、16、22、28

序列的第 n 项始终写成“?n + ?”的形式。

“n”前面的数字始终是从一项到下一项的差值。由于差值为 6,因此我们规则的第一部分将是“6n”。规则遵循六次乘法表:6、12、18、24...等。

序列中的数字总是比 6 乘法表小 2,因此我们通过减去 2 来“调整”我们的规则。现在将其放在一起得出: 第 n 项 = 6n - 2。

欢迎您的光临,很乐意为您提供帮助:-)

© www.soinside.com 2019 - 2024. All rights reserved.