高階微分法與一階微分法有一定關連性,故此文需先看過 一階微分法。
要了解背景原理必須從差分法開始細說,此處略過不提,直接將結果寫下。
一次微分近似式
(A) 向前差近似
雙點
fi' = [ f(i+1) - f(i) ] / h ,
O(h) = -1/2 * h * f''i < fi 二次微分 >
三點
fi' = [ -f(i+2) + 4f(i+1) -3 f(i) ] / 2h ,
O(h) = 1/3 * h*h * f'''i < fi 三次微分 >
四點
fi' = [ 2f(i+3) - 9f(i+2) + 18 f(i+1) -11 f(i) ] / 6h ,
O(h) = -1/4 * h*h * h * f''''i < fi 四次微分 >
(B) 向後差近似
雙點
fi' = [ f(i) - f(i-h) ] / h ,
O(h) = -1/2 * h * f''i < fi 二次微分 >
三點
fi' = [ 3f(i) - 4f(i-1) + f(i-2) ] / 2h ,
O(h) = 1/3 * h*h * f'''i < fi 三次微分 >
四點
fi' = [ 11f(i) - 18f(i-1) + 9 f(i-2) - 2f(i-3) ] / 6h ,
O(h) = 1/4 * h*h * h * f''''i < fi 四次微分 >
(C) 中央近似
雙點
fi' = [f(i+1) - f(i-1)] / 2h ,
O(h) = -1/6 * h *h * f'''i < fi 三次微分 >
三點
中央近似沒有三點
四點
f' = [ -f(i+2) + 8 f(i+1) - 8 f(i-1) + f(i-2) ] / 12h ,
O(h) = 1 / 30 * h * h * h * h * f'''''i < fi 五分微分 >
二次微分近似式
(A) 向前差
f''(x) = [ f(x+2h) - 2f(x+h) + f(x) ] / (h^2)
O(h) = -h * [ f(x) 三次微分 ]
f''(x) = [ -f(x+3h) +4f(x+2h) - 5f(x+h) + 2f(x) ] / (h^2)
O(h) = 11/12 h^2 * [ f(x) 四次微分 ]
(B) 向後差
f''(x) = [ f(x) - 2f(x-h) + f(x-2h) ] / (h^2)
O(h) = h * [ f(x) 三次微分 ]
f''(x) = [ 2f(x) - 5f(x-h) + 4f(x-2h) - 3f(x-3h) ] / (h^2)
O(h) = 11/12 h^2 * [ f(x) 四次微分 ]
(C) 中央差
f''(x) = [ f(x+h) - 2f(x) + f(x-h) ] / (h^2)
O(h) = -h^2 /12 * [ f(x) 四次微分 ]
f''(x) = [ f(x+2h) + 16f(x+h) -30f(x) +16f(x-h) -f(x-2h) / 12 h^2
O(h) = h^4 / 90 * [ f(x) 六次微分 ]
其他高階微分
事實上是有一串公式,可參考 wiki Finite difference 網頁 ,拉到 higher-order differences ,規則都在裡面,甚至這篇對於雙變數 f(x,y) 微分 亦有詳細說明。了解原理後,欲撰程式碼已不是難事,此處便不再附上。
Reference
wiki - Numerical differentation
留言列表