← 回部落格 數學

泰勒展開:計算機其實不會算 sin x,它只會加減乘除

威威 Willy · 2026-10-12

威威學長|高中數學


把計算機切到弧度模式,輸入 $\sin 0.1$,螢幕會吐出一串數字:$0.099833\ldots$。這個動作你按過幾百次,快得像是理所當然,但整件事其實有點離奇:計算機的電路不認識「對邊除以斜邊」,它手上只有加減乘除和比較大小。真正跑進處理器裡的,是把 $\sin$ 換成一串加減乘除。

這裡先用泰勒展開理解多項式近似。真實的計算機或函式庫可能採取不同演算法,也可能先把角度縮到較小的範圍,再用控制過誤差的多項式計算;不能把接下來的推導當成每一台計算機內部都照做的程式。

離奇的地方在於 $\sin x$ 的長相完全不像多項式。$\sin x$ 週而復始,值永遠被夾在 $-1$ 與 $1$ 之間,怎麼加都跑不出去;一條非零次的多項式不可能這樣,$x$ 一大它就爆走。這兩種函數看起來是不同物種,一個會繞圈,一個只會一路衝。

泰勒的方法先要求多項式在選定的點附近接近原函數。算 $\sin0.1$ 時,展開中心放在 $0$ 就很方便;不用為了這一個值,逼多項式在整條實軸都長得像正弦😎

為什麼多項式可以假裝別的函數

多項式的優點很實際:算值只要乘與加,微分積分都是同一套規則,程式寫起來也短。它的缺點同樣實際,行為太溫和,做不出週期,也做不出在某一點附近突然爆掉的樣子。

讓多項式在一個點附近「像」,有好幾種定義可以挑,泰勒的選擇是把各階導數全部對齊。這個選擇有道理:值決定圖形的高度,一階導數決定傾斜,二階導數決定彎曲,這三樣東西全部來自同一點附近的資訊,所以它們是可以在單一個點上被檢查、被複製的。

對齊這件事為什麼有用,用兩台車想最快。兩台車從同一個位置出發,初速相同、加速度也相同,出發後的短時間內,兩台車的距離幾乎是零,因為它們的狀態一模一樣。泰勒多項式就是那台「狀態完全複製」的車:位置、速度、加速度、加速度的變化率,一階一階複製下去。距離拉長就會分家,因為多項式沒有真的複製無限多階。

展開中心是 $a$,多項式先在附近給出近似。要不要加項、要不要換中心,要看誤差;不能保證離 $a$ 越遠誤差就單調增加,也不能只憑「可微很多次」就斷言無窮級數一定等於原函數。

每一項各修掉一種誤差

多項式一項一項加上去的過程,很像修圖:每一項都在修上一版留下的那一種誤差。

  • 常數項先把高度對準:要求 $p(a)=f(a)$,所以常數項是 $f(a)$。這一版是一條水平線。
  • 一次項再加 $f'(a)(x-a)$,把斜率對準。修完之後你得到的是 $f(a)+f'(a)(x-a)$,也就是切線,這條你在單變數裡已經認識:它是 $f$ 在 $a$ 附近的線性近似。
  • 二次項再加 $\frac{f''(a)}{2}(x-a)^2$,把彎曲程度對準,切線是直的、原函數多半在彎,這一項負責補上那個彎。

二次項除的 $2$、三次項除的 $6$,是為了抵銷反覆微分冒出來的階乘。$x^3$ 微分三次剩下 $6$,所以要讓三次項的三階導數等於 $f'''(a)$,係數得除以 $6$。一般項除以 $n!$ 也是同一個原因;$n!$ 是 $n(n-1)\cdots1$,並約定 $0!=1$。

這些係數也是唯一的:次數高於 $n$ 的項,微分 $n$ 次後代 $x=a$ 仍為零;次數低於 $n$ 的項則已消失,所以第 $n$ 階導數只決定第 $n$ 項的係數。有限次的結果叫泰勒多項式 $p_n$,它近似 $f$。若繼續加項,而且餘項 $f(x)-p_n(x)$ 確實趨近 $0$,才能把下式寫成等號:

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

符號拆開看:$f^{(n)}$ 代表 $f$ 的第 $n$ 階導數(括號是為了不要跟次方混淆,$f^{(0)}$ 就是 $f$ 自己),$f^{(n)}(a)$ 是那一階導數在 $a$ 的值,$\sum$ 表示把每一項加起來。把 $a$ 選在 $0$,式子會乾淨很多,這個特例叫做麥克勞林展開:

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

泰勒展開以 Brook Taylor 命名,$a=0$ 的特例則以 Colin Maclaurin 命名。換名字沒有多一套算法,只是把展開中心選在 $0$。

把 $e^x$ 在 $0$ 附近的版本排出來:$p_0(x)=1$、$p_1(x)=1+x$、$p_2(x)=1+x+x^2/2$。代 $x=0.5$,分別得到 $1$、$1.5$、$1.625$,而 $e^{0.5}\approx1.648721$,三個誤差約為 $0.648721$、$0.148721$、$0.023721$。

這個例子確實越加越準,但我們不必靠「看起來差不多」來猜。下面的餘項會告訴你怎麼替誤差畫出範圍。

四個展開,前幾項就夠用

$e^x$。$e^x$ 是最省事的例子,因為它的每一階導數都還是 $e^x$ 自己,在 $x=0$ 的值全部等於 $1$:

$$e^x=1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+\cdots$$

這條式子對所有實數都成立,代入 $x=1$ 得 $e=1+1+\frac12+\frac16+\cdots$。分母的階乘越來越大,後面的項很快就變小。

$\sin x$ 與 $\cos x$。這兩個的導數會循環:$\sin$ 微分得 $\cos$,$\cos$ 微分得 $-\sin$,再來是 $-\cos$、回到 $\sin$。把各階導數在 $0$ 的值排出來會看到 $0,1,0,-1$ 一直輪,所以 $\sin$ 的偶數次項全部變成零:

$$\sin x=x-\frac{x^3}{3!}+\frac{x^5}{5!}-\frac{x^7}{7!}+\cdots$$

$\cos$ 的循環從 $1$ 開始,換成奇數次項消失:

$$\cos x=1-\frac{x^2}{2!}+\frac{x^4}{4!}-\frac{x^6}{6!}+\cdots$$

順手做個檢查:把 $\sin$ 的展開逐項微分,$x$ 給 $1$、$-\frac{x^3}{6}$ 給 $-\frac{x^2}{2}$、$\frac{x^5}{120}$ 給 $\frac{x^4}{24}$,拼起來正好是 $\cos$ 的展開。這種便宜的一致性檢查,比重新推一次快得多。

$\frac{1}{1-x}$。這一條不需要算任何導數,它就是等比級數的和:

$$\frac{1}{1-x}=1+x+x^2+x^3+\cdots,\qquad |x|<1$$

國中學過的部分和公式 $\frac{1-x^{n+1}}{1-x}$ 在這裡派上用場:當 $|x|<1$,$x^{n+1}$ 會趨近 $0$,剩下的就是 $\frac{1}{1-x}$。那個 $|x|<1$ 的條件不能省,硬代 $x=2$ 進去,左邊是 $1+2+4+8+\cdots$ 一路衝到無窮,右邊卻是 $\frac{1}{-1}=-1$,兩邊擺在一起就知道有人亂來。🙃

上面幾個級數,在各自有效的範圍內確實等於原函數;取有限項才有截斷誤差。令 $R_n(x)=f(x)-p_n(x)$,表示取到 $n$ 次項後還差多少。若 $f$ 在包含 $a,x$ 的區間上有連續的 $n+1$ 階導數,拉格朗日餘項可寫成

$$R_n(x)=\frac{f^{(n+1)}(c)}{(n+1)!}(x-a)^{n+1},$$

其中 $c$ 介於 $a$ 和 $x$ 之間。只要估得出那一階導數的大小,就能估誤差。正負交錯的級數還有另一個方法:若省略部分的各項絕對值遞減並趨近 $0$,誤差不超過第一個省略項的絕對值。光有正負交錯,還不夠。

小角度近似:課本公式的來源與它的邊界

把 $\sin$ 的展開留第一項、$\cos$ 的展開留前兩項,就得到物理課和國中理化裡那些「憑空出現」的公式:

$$\sin x\approx x,\qquad \cos x\approx 1-\frac{x^2}{2}$$

前提是 $x$ 用弧度講,而且要夠小。$x$ 必須是弧度這件事沒有商量餘地,因為整條推導從頭到尾都在對 $x$ 微分,$x$ 是長度比,不是度數;$1^\circ$ 換成弧度大約是 $0.01745$(弧度量)。

拿 $x=0.1$ 試一次。$\sin 0.1$ 的真值是 $0.0998334\ldots$,用 $x$ 估計得 $0.1$,差了大約 $1.7\times10^{-4}$,而這個數字幾乎就是下一個被丟掉的項 $\frac{x^3}{6}=\frac{0.001}{6}=0.000167$。$\cos 0.1$ 的真值是 $0.9950042\ldots$,用 $1-\frac{x^2}{2}=0.995$ 估計,誤差約 $4\times10^{-6}$,對上被丟掉的 $\frac{x^4}{24}=0.00000417$。階乘和指數在這些數字裡咬得很緊,估誤差時甚至不需要計算機。

單擺是這條近似的經典舞台:重力把擺錘拉回來的分量正比於 $\sin\theta$,方程裡因此卡了一個 $\sin$,但只要擺角小,$\sin\theta\approx\theta$ 讓方程瞬間變成最單純的簡諧運動。這個動作有個很現代的說法:把非線性的東西在一個工作點附近換成多項式,然後只相信它在工作點附近講的話。

同一個近似拿去算 $x=1$ 弧度(約 $57.3^\circ$),$\sin1\approx0.8415$,用 $1$ 估的絕對誤差約 $0.1585$;若以真值為分母,相對誤差約 $18.8\%$。$\cos1\approx0.5403$,用 $0.5$ 估則差約 $0.0403$。誤差要不要緊,得看你的用途,不能只記「角度小就可以」😅

換你動手

練習 1:寫出 $e^x$ 在 $a=0$ 的前四個非零項,並用它估計 $e^{0.1}$。

前四個非零項是 $1+x+\frac{x^2}{2!}+\frac{x^3}{3!}$。代入 $x=0.1$:$1+0.1+0.005+0.0001667=1.1051667$。計算機給的 $e^{0.1}=1.1051709\ldots$,兩者差了大約 $4\times10^{-6}$,剛好是下一個被丟掉的項 $\frac{x^4}{24}=4.17\times10^{-6}$ 的量級。四項就能對到小數第五位,這也是為什麼程式庫裡的多項式近似可以又快又準。

練習 2:用 $\cos x\approx1-\frac{x^2}{2}$ 估計 $\cos 0.2$,並用下一項說出誤差的上界。

代進去得 $1-\frac{0.04}{2}=0.98$。$\cos$ 的展開正負交錯,而且 $x=0.2$ 時每一項都比前一項小得多,所以真值被夾在相鄰兩個部分和之間:下界是 $0.98$,上界是 $0.98+\frac{x^4}{24}=0.98+0.0000667=0.9800667$。計算機的答案 $0.9800666$ 落在裡面,誤差不超過 $6.7\times10^{-5}$,而這個範圍在真值還沒算出來之前就能講定。

練習 3:取 $\frac{1}{1-x}$ 的展開前四項,估計 $\frac{1}{1-0.5}$,並與真值比較誤差。

前四項是 $1+0.5+0.25+0.125=1.875$,真值是 $\frac{1}{0.5}=2$,誤差 $0.125$。想更準就多取一項 $x^4=0.0625$,得到 $1.9375$,誤差縮到 $0.0625$:每多一項誤差就乘上 $x=0.5$,因為被丟掉的尾巴正好是 $\frac{x^{n+1}}{1-x}$ 這種等比數列。這裡也順便看出 $|x|<1$ 的角色,$x$ 小的時候尾巴短、收斂快,$x$ 逼近 $1$ 的時候要多算很多項才夠,而 $x$ 一旦超過 $1$,再多項也沒用。


拿計算機比較 $\sin0.1$、$\sin0.2$、$\sin0.5$,旁邊寫下用 $x-x^3/6$ 算出的值,再把兩欄相減。不要只看哪個角度比較大:先決定你要準到小數第幾位,再看誤差是否已經小到夠用。

如果某一項的係數你算出來跟課本差一個階乘,通常是微分少做了一次、或是階乘多寫了一個數字。把你的算式貼給我,我們一起抓那一處。

威威
威威 Willy
德國數學碩士、前 Amazon 資料科學家。數學是邏輯的語言,英文是世界的窗口。
← 回部落格