📌  相关文章
📜  麦克劳林系列(1)

📅  最后修改于: 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$阶导数。

应用场景
  1. 求函数的值: 在给定函数$f(x)$和$x$的值时,可以通过麦克劳林系列求出$f(x)$的值。
  2. 简化计算: 在计算一些复杂函数的时候,可以使用麦克劳林系列将原函数展开成一个简单的幂级数。
实现方法
1. 利用多项式类求解

一种实现方法是借助于多项式类,将幂级数当做多项式进行处理,使用多项式类中的加、减、乘等方法实现幂级数的加减乘除等简单操作。

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)
2. 利用递归求解

另一种实现方法是递归求解,将幂级数的项数$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
总结

麦克劳林系列是一种重要的数学工具,可以在求函数值、简化计算等场景中发挥作用。我们可以借助于多项式类或者递归算法实现幂级数的求解。