Featured image of post 泰勒展开与麦克劳林展开:用多项式近似复杂函数的魔法

泰勒展开与麦克劳林展开:用多项式近似复杂函数的魔法

详细讲解微积分的秘诀——泰勒展开和麦克劳林展开,从直观含义到数学推导,再到编程和物理学中的应用。

引言

在数学、物理学甚至计算机科学的世界里,泰勒级数(Taylor series)和麦克劳林级数(Maclaurin series)是极其强大的工具。它们是将“难以计算的复杂函数”(如指数函数和三角函数)表示为“仅用加法和乘法就能计算的简单多项式”的无穷和的方法。

计算器和计算机之所以能瞬间计算出 $\sin(37^\circ)$ 或 $e^{2.5}$ 这样的值,是因为它们在内部运用了这些展开式进行近似计算。在本文中,我们将详细解释这种神奇的数学技术,从其直观含义到严格的公式,再到实际应用。

为什么要用多项式来近似函数?

首先,为什么有必要将一个函数表示为多项式( $a + bx + cx^2 + \dots$ )呢?

  flowchart LR
    A["复杂函数"] -->|"泰勒展开"| B["多项式的无穷和"]
    B -->|"有限项截断"| C["多项式近似"]
    C -->|"仅基本算术运算"| D["高速计算机计算"]

许多描述自然现象的函数是非线性的,这使得它们很难直接用手算,或者仅仅依靠计算机的 CPU 指令来计算。然而,由于多项式只由加法乘法组成,它们具有极其容易被计算机处理的优势。

麦克劳林展开的直观理解

首先,让我们考虑麦克劳林展开,它在一个特定点 $x = 0$ 附近近似一个函数。 假设我们有一个未知函数 $f(x)$。我们想在 $x = 0$ 附近用如下的多项式 $P(x)$ 来近似这个函数:

$$ P(x) = c_0 + c_1 x + c_2 x^2 + c_3 x^3 + \dots $$

提高近似精度的条件如下:

  1. 0阶近似 : 在 $x=0$ 处的函数值匹配( $P(0) = f(0)$ )。 这导致 $c_0 = f(0)$。
  2. 1阶近似 : 在 $x=0$ 处的斜率(一阶导数)匹配( $P'(0) = f'(0)$ )。 这导致 $c_1 = f'(0)$。在图表上,这就是函数 $f(x)$ 在 $x=0$ 处的切线。
  3. 2阶近似 : 在 $x=0$ 处的曲率(二阶导数)匹配( $P''(0) = f''(0)$ )。 因为 $P''(x) = 2 c_2$,我们有 $c_2 = \frac{f''(0)}{2}$。
  4. $n$阶近似 : 一般来说,通过匹配到第 $n$ 阶导数,我们可以更准确地模仿 $x=0$ 附近的行为。

麦克劳林展开的公式与推导

通过无限次重复上述的直观条件,我们可以得到一个使用函数各阶导数系数的美丽级数。这就是所谓的麦克劳林展开

$$ f(x) = f(0) + f'(0)x + \frac{f''(0)}{2!}x^2 + \frac{f^{(3)}(0)}{3!}x^3 + \dots $$

使用西格玛记号书写,看起来像这样:

$$ f(x) = \sum_{n=0}^{\infty} \frac{f^{(n)}(0)}{n!} x^n $$

这里, $f^{(n)}(0)$ 是函数 $f(x)$ 求导 $n$ 次并代入 $x=0$ 得到的值,而 $n!$ 表示 $n$ 的阶乘( $n \times (n-1) \times \dots \times 1$ )。

典型函数的麦克劳林展开

在这里,我们介绍经常出现的重要函数的麦克劳林展开。

1. 指数函数 $e^x$

指数函数 $f(x) = e^x$ 无论求导多少次,仍然是 $e^x$。因此,当代入 $x=0$ 时,所有阶的导数系数都变成 $1$( $f^{(n)}(0) = 1$ )。

$$ e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \dots = \sum_{n=0}^{\infty} \frac{x^n}{n!} $$

2. 三角函数 $\sin x$ 和 $\cos x$

当 $\sin x$ 被反复求导时,它会循环变化: $\cos x, -\sin x, -\cos x, \sin x, \dots$。通过代入 $x=0$,只有奇数阶的导数系数保留下来,偶数阶变为 $0$。

$$ \sin x = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!} + \dots = \sum_{n=0}^{\infty} \frac{(-1)^n}{(2n+1)!} x^{2n+1} $$

同样,对于 $\cos x$,只有偶数阶的项保留下来。

$$ \cos x = 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \frac{x^6}{6!} + \dots = \sum_{n=0}^{\infty} \frac{(-1)^n}{(2n)!} x^{2n} $$

推广到泰勒展开

虽然麦克劳林展开是在 $x=0$ 附近的近似,但将其推广到任意点 $x=a$ 附近的近似就得到了泰勒展开

$$ f(x) = f(a) + f'(a)(x-a) + \frac{f''(a)}{2!}(x-a)^2 + \dots = \sum_{n=0}^{\infty} \frac{f^{(n)}(a)}{n!} (x-a)^n $$

当你想要预测在距离 $x=a$ 稍微有一段距离的位置( $x = a + \Delta x$ )的函数值时,这个公式就显示出了它的威力。

泰勒展开的应用

物理学中的线性近似

在物理学中,使用泰勒展开的近似经常被用来使运动方程更容易求解。例如,在钟摆运动中,如果摆角 $\theta$ 足够小,我们只提取 $\sin \theta$ 的麦克劳林展开的 1阶项,并作如下近似:

$$ \sin \theta \approx \theta \quad (\text{当 } \theta \text{ 足够小时}) $$

这就把复杂的非线性微分方程转化为容易求解的线性微分方程,从而推导出单摆的等时性。

编程与数值计算

在计算机的标准库(如 math 模块)内部,也利用泰勒展开(或其改进版本,如切比雪夫近似)来计算函数。下面是用 Python 近似计算 $\sin x$ 的一个简单例子。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import math

def approx_sin(x, terms=10):
    """
    使用麦克劳林展开近似计算 sin(x) 的函数
    x: 以弧度为单位的角度
    terms: 要计算的项数
    """
    result = 0.0
    for n in range(terms):
        # 计算每一项: (-1)^n * x^(2n+1) / (2n+1)!
        sign = (-1) ** n
        numerator = x ** (2 * n + 1)
        denominator = math.factorial(2 * n + 1)
        result += sign * (numerator / denominator)
    return result

# 测试: x = 1.0 弧度 (约 57.3 度)
x_val = 1.0
print(f"近似值: {approx_sin(x_val)}")
print(f"真实值: {math.sin(x_val)}")

收敛半径与泰勒定理

并不是所有的函数在每一个 $x$ 处都能被泰勒级数精确表示。无穷级数收敛到一个有限值的范围被称为收敛半径。例如, $\ln(1+x)$ 的麦克劳林展开只在 $-1 < x \le 1$ 的范围内有效。

此外,泰勒定理(余项的评估)是一个用于估计当截断在有限项(直到第 $n$ 阶)时,真实值和近似值之间会有多少误差的定理。这使得我们在数学上能保证“根据所需的精度,我们应该展开到哪一阶”。

结论

可以说,泰勒展开和麦克劳林展开是“数学翻译器”,用来将复杂世界翻译成一种容易处理的形式——多项式。从微分的概念出发,通过无限次相加完全恢复原函数的过程,象征着数学之美。从物理学中的近似到人工智能中的优化算法,它们的应用范围不可估量。请务必利用这一强大的工具,加深您对数学和编程的理解。

comments powered by Disqus