close

辛普森積分法則分為  法則與  法則兩個方法,且同樣具有代數精度

時間複雜度也同樣為,不過法則的截尾誤差$E_t= -\frac{h^{5}}{90}f^{\left (4 \right )}\left (\xi \right )$法則$E_t= -\frac{3h^{5}}{80}f^{\left (4 \right )}\left (\xi \right )$還要小一點

在表現上也是稍優於法則的。

因此,個人在設計上主要是以法則為主,再以法則為輔。

先來看一下法則的表示式:

$\int_{x0}^{x10}f\left ( x \right )dx\approx \frac{\Delta }{3}\left [f\left ( x_0 \right ) +4f\left ( x_1 \right )+2f\left ( x_2 \right ) +4f\left ( x_3 \right )+\cdot \cdot \cdot +f\left ( x_{10} \right )\right ]$

其中$\Delta = \frac{b-a}{n}= \frac{x_{10}-x_0}{10}$

以及法則的表示式:

$\int_{x_{10}}^{x_{13}}f\left ( x \right )dx\approx \frac{3\Delta}{8}\left [f\left ( x_{10} \right )+3f\left ( x_{11} \right )+3f\left ( x_{12} \right )+f\left ( x_{13} \right ) \right ]$

其中$\Delta = \frac{b-a}{n}= \frac{x_{13}-x_{10}}{13-10}= \frac{x_{13}-x_{10}}{3}$

有公式就簡單一點了,照著公式的邏輯去刻程式碼…,大致的思路如虛擬碼(亂寫)

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

辛普森積分法(Simpson's rule)演算法(Algorithm)

dim a,b as double,n as long,function as double,ε as double

a = x0

b=xn

ε=1E-25

if n mod 2 =0 then

run   Simpson's one third rule

elseif n  mod 3 = 0 then

run  Simpson's three eighth rule

else

run combine Simpson's both rule

end if

do until abs∣result-exact∣ ≤ ε

run result

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

來測試一下效果如何,以計算$\int_{0}^{3}x\left ( 1+x^{2} \right )dx$為例

其精確解為,程式跑出來的結果如下…。

※順帶一提,上圖的N是經由辛普森積分法反推所需之區間數為何(也就是大概要切多細的意思)。

 

arrow
arrow
    文章標籤
    simpson rule 程式
    全站熱搜
    創作者介紹
    創作者 haruka 的頭像
    haruka

    【wei*2】

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