劉 浩,李夢爽
南京大學,江蘇南京 211102
[1]中的證明可知:在 n<=8 時數值穩定,誤差隨n 的增大而減小,同時n>8 時,會產生數值不穩定性,造成巨大計算誤差。但是,實際的計算過程中誤差并沒有像[1]中所言在n小于8時候會隨著n的增大而減小,而是減小到一定程度之后就不再減小。
經過實驗分析(在精度更高的計算環境下,誤差的減小微乎其微)我們確定這不是由于計算機表示精度的原因造成的。進一步分析和對比[2]中的給定積分系數Ai,我們確定這是由于其中在計算過程中計算Ai多項式積分引入了額外的誤差。于是我們提出了一種改進的Newton-Cotes數值積分算法。我們稱新算法為后置秦氏Newton-Cotes算法。
經典的復合Newton-Cotes算法和相關結果
Newton-Cotes計算方法是將問題轉化為計算積分的近似值
當階數過大時會產生數值不穩定性,所以采用復合Newton-Cotes算法增加計算的精度。其思想是講區間[a,b]平分成m段,在每段上使用Newton-Cotes算法,最后將各段結果求即為積分的近似值。
【定理1】[1]n階Newton-Cotes算法的離散誤差
為
由此當n較大時離散誤差會發散。
但是實際數值計算試驗中并沒有表現出上述定理所述的結果,這是因為上述定理認為Ai的計算是絕對準確的,但實際計算中只是還是使用數值積分方法計算該Ai,只是計算多項式積分的計算更準確一點。然而這卻導致了在n上升到較小值的之后誤差就不再明顯下降。于是我們提出了如下算法。
在經典的復合Newton-Cotes算法中我們會使用,秦九韶算法計算多項式的值之后再進行數值積分。我們這里觀察發現其實Ai的計算可以利用多項式積分的特點進行優化。在后置秦氏復合Newton-Cotes算法中我們先計算出Ai中多項式的系數,之后對系數矩陣做加權平移就可以得到積分后多項式的系數矩陣,然后再使用秦九韶算法計算Ai。這相當于將秦氏算法后置,所以我們取名為后置秦氏復合Newton-Cotes算法。具體介紹之前我們先引入一個引理。
【引理1】k次多項式Pk(t)的系數矩陣為
下圖表示了后置秦氏復合Newton-Cotes算法的圖示。
我們將分別使用經典的復合Newton-Cotes算法和后置秦氏復合Newton-Cotes算法計算計算積分,并對比計算結果。
【試驗一】:使用經典的復合Newton-Cotes算法(m是分段數,n表示Newton-Cotes算法的階數)
下圖中上方曲線是m=100時誤差隨n變化的曲線,下方是m=10000時的曲線??v坐標是對數坐標表示誤差的絕對值。
實驗表明經典算法在n在3和8之間精度沒有明顯增長,并驗證了定理一中的關于數值不穩定的結論。
【實驗二】:使用后置秦氏復合Newton-Cotes算法
上圖中上方兩條是實驗一中的數據。最下方曲線是m=10000時候誤差隨n上升變化的曲線。
實驗表明使用改進之后的后置秦氏復合Newton-Cotes算法可以明顯地增強算法的精度。
【實驗三】:對比上述試驗中計算出的Newton-Cotes系數Ai
參考[2]中給定的Cotes系數,我們發現經典算法的系數對稱性和精確度都沒有改進算法好,我們分析認為這正是新算法精度較高的原因。
使用我們設計的后置秦氏復合Newton-Cotes算法在不明顯增加計算量的情況下可以大大增加計算結果的精度,尤其在Cotes系數的對稱性上有比較大的改進。
參考文獻
[1]林成森.《數值計算方法.上冊》.科學出版社.
[2]黃云清.《數值計算方法》.科學出版社.