数值计算方法”上机实验指导书——实验一 误差分析
實驗要求:
**1、**選擇充分小的 ess,反復進行上述實驗,記錄結果的變化并分析它們。如果擾動項的系數 ε 很小,我們自然感覺(1.1)和(1.2)的解應當相差很小。計算中你有什么出乎意料的發現?表明有些解關于如此的擾動敏感性如何?
令ess分別等于0.000000001(1e-8)、0.000000000001(1e-11)和0.000000000000001(1e-14),計算式(1.2)中的解,并使用MATLAB在坐標軸中將各點分別使用綠色、紅色和藍色連接起來。圖示如下:
從圖中可以看到,隨著ess值變小,(1.2)的解的變化幅度也越來越小。
當ess=0.000000000000001(1e-14)時,如圖中藍線所示,此時擾動項的系數ε 很小,式(1.0)和(1.2)的解相差很小。
當解x<=6時,此時無論擾動項的系數ε 怎樣變化,式(1.2)的解值不變與(1.1)相同,所有線段均呈直線。說明這些解的擾動敏感性較低。
代碼如下:
2、將方程(1.2)中的擾動項改成εx^18或其它形式,實驗中又有怎樣的現象出現?
改變方程的擾動項為εx^18后,令ess分別等于0.000000001、0.000000000001和0.000000000000001,得到的圖形如下:
從圖中可以看出,相較于擾動項為εx^19,此時解的變化幅度小了很多。
改變方程的擾動項為εx^20后,圖像如下:
思考題一:(上述實驗的改進)
在上述實驗中我們會發現用 roots 函數求解多項式方程的精度不高,為此你可以考慮用符號函數 solve 來提高解的精確度,這需要用到將多項式轉換為符號多項式的函數 poly2sym,函數的具體使用方法可參考 MATLAB 的幫助。
使用solve提高精度的代碼如下:
得到的圖形如下:
綠色為不加擾動項圖形,紅色為使用solve添加擾動項的圖形。
將使用roots和solve計算的解結果圖繪于同一圖形中,如下:
綠色為使用roots添加擾動項圖形,紅色為使用solve添加擾動項的圖形。
結果顯示區別并不明顯。
思考題二:(二進制產生的誤差)
計算公式的代碼如下:
t=0;
for n=1:1000
t=t+0.1;
end
l=t-100; %l為計算的結果
得到的結果l為-1.4069e-12,與理論值0不同。
思考題三:(一個簡單公式中產生巨大舍入誤差的例子)
由于n很大時,數據量較大,所以采取分段的思想。
首先在n=1~1e50之間取10整數倍冪,即:1、10、100……1e49、1e50,并將對應的誤差:f(n)-exp(1)的值存入數組Sn,得到如下圖所示圖形:
從圖中可以看出,誤差最大值大約在n=1e15附近。
代碼如下:
為準確計算出n的值,接下來把區間(1e14, 1e16)等分成100000份,一份為1e11,計算誤差f(n)-exp(1)的值存入數組Sn。結果如下:
結果顯示,誤差在區間份數的第89070份時有最大值,即此時n=9.901e15,誤差最大為4.671。
代碼如下:
舍入誤差是計算機進行實數計算時所產生的。之所以產生舍入誤差是因為機器中進行的算術運算所涉及的數是有限位的,從而導致計算只能用實際數值的近似表示式來完成。在典型的計算機中,僅實數系統的一個相對小的子集用來表示所有的實數。這個子集包含了正負有理數,且存儲了小數和指數部分。
總結
以上是生活随笔為你收集整理的数值计算方法”上机实验指导书——实验一 误差分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科学记数法
- 下一篇: 新概念模拟电路——初识晶体管