📅  最后修改于: 2023-12-03 15:12:57.140000             🧑  作者: Mango
麦克劳林系列(MacLaurin Series),是以苏格兰数学家Colin Maclaurin的名字命名的,指的是一类幂级数展开。
麦克劳林系列可以表示为以下形式:
$$f(x) = \sum_{n=0}^{\infty} \frac{f^{(n)}(a)}{n!}(x-a)^n$$
其中,$f^{(n)}(a)$指的是函数$f(x)$在点$a$处的$n$阶导数。
一种实现方法是借助于多项式类,将幂级数当做多项式进行处理,使用多项式类中的加、减、乘等方法实现幂级数的加减乘除等简单操作。
from sympy import *
from sympy.abc import x
class MaclaurinSeries:
def __init__(self, f, a, n):
self.f = lambdify(x, f, 'numpy')
self.a = a
self.n = n
def __repr__(self):
return f'MaclaurinSeries({self.f}, {self.a}, {self.n})'
def __str__(self):
return str(series(self.f(x), x, self.a, self.n))
ms = MaclaurinSeries('sin(x)', 0, 10)
print(ms) # 输出: x - x**3/6 + x**5/120 - x**7/5040 + x**9/362880 + O(x**10)
另一种实现方法是递归求解,将幂级数的项数$n$不断减小,直到$n=0$时停止递归。
from sympy import *
from sympy.abc import x
def maclaurin(f, a, n):
if n == 0:
return f.subs(x, a)
else:
return diff(f, x, n-1).subs(x, a) / factorial(n-1) * (x-a)**(n-1) + maclaurin(f, a, n-1)
print(maclaurin(sin(x), 0, 10)) # 输出: x - x**3/6 + x**5/120 - x**7/5040 + x**9/362880
麦克劳林系列是一种重要的数学工具,可以在求函数值、简化计算等场景中发挥作用。我们可以借助于多项式类或者递归算法实现幂级数的求解。