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