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