數值微分

微分是一個取極限的概念,抽象地取極限概念在電腦上是無法真正實現,這個章節會介紹在數值方法上如何計算一個函數在特定點上的微分。

我們都知道函數某一點的微分是取函數在該點的切線斜率

\(f'(x) = \lim_{h\to 0}\frac{f(x+h)-f(x)}{h}\)

這個取極限的概念在微積分裡是自然的,但是到了計算機的世界就少了這種連續取極限的能力。我們僅能以差分的方式來逼近微分,意思是h 只能是一個在電腦能力允許下的一個大於零而無法真正趨近於0 的數字。

最簡單的數值微分方法是forward difference approximation

\(D_{f1}(x,h) = \frac{f(x+h)-f(x)}{h}\)

這樣的差分法取代微分到底差多遠呢?我們可以簡單的用泰勒展開式來觀察。

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

和剛剛的差分式比較一下,得到

\(D_{f1}(x,h) = f'(x) + \frac{h}{2}f^{(2)}(x) + \frac{h^2}{3!}f^{(3)}(x)+\dots = f'(x) +O(h)\)

這裡我們用符號\(O(h)\) 表示後段的誤差,我們看到這個誤差是由\(h \)的一次方主導,簡單說當誤差\(\frac{E(h)}{h^n}\) 取極限為一個非零的常數時,我們稱 \(E(h)\) 的收斂行為是 \(O(h^n)\)。數值分析裡面有兩種主要的誤差型態,一種是像這種等號成立其實是對應一個很長(甚至是無窮的級數),為了計算的需要我們直接砍掉。這種誤差我們稱為truncation error。另外一種誤差是電腦數位表示無法展開所有實數的誤差,我們稱為round-off error。如何平衡這兩種誤差,使得計算誤差最小,接下來的小節我們會學到如何分析。