會寫到數值微分主要是因為…之前所提到的牛頓法會需要用到

基本上,如果只是單純要跑牛頓法,可以使用Richardson's Extrapolation得到的公式,這邊就不再細講。

比較讓我感到有興趣的,當然是推廣到N階都可以應用的方法…。

幾經尋找,總算找到所謂的…Finite Difference Method

一般來說,數值微分大概都分為Forward、Backward跟Central三種方式。

個人是採用Central來實作,公式大概是這個樣子…。

研究了一下,會發現需要使用到Pascal's triangle…。整理思緒來列虛擬碼(一樣是亂寫)…。

==================================================================

N階數值微分    演算法(Algorithm)

宣告  階數(項次) n 、i 、代入值 x 、步長 h 、function 

For i = 0 to n step 1

next

程式結束

==================================================================

先來測試一下  

解析解  

再來試試  

解析解為  

比較起來,都還ok啦。

上一篇提到的牛頓法程式當中,則是採用精度比較高,利用Richardson's Extrapolation改善過後的Central difference formula

來處理的。

嗯,大概就是這樣…,至於Pascal's triangle…,有空再說吧…。

文章標籤
全站熱搜
創作者介紹
創作者 haruka 的頭像
haruka

【wei*2】

haruka 發表在 痞客邦 留言(0) 人氣(425)