數值分析實驗報告 樣例

2022-05-06 23:15:04 字數 1680 閱讀 3168

日期 2006.9.20 學號 2314130 班級信科41 姓名劉建煒

【實驗課題】 捨入誤差對計算的影響、數值微分精度與步長的關係

【實驗目標】

1. 理解數值計算中的兩類主要誤差的概念:截斷誤差與捨入誤差。

2. 初步了解:演算法的選擇帶來不同的截斷誤差,從而使得計算結果的精度不同。

3. 初步體會捨入誤差對計算結果的影響--數值微分中適當選取步長。

【理論概述與演算法描述】

1. 由導數定義得導數的一種近似公式。

演算法1.

利用泰勒公式可匯出演算法1的截斷誤差:

.當函式f(x)在x0的鄰域內二階連續可導時,可得截斷誤差界:

其中是常數.

2. 由等式,得到導數的另一種近似公式。

演算法2:

利用taylor定理可得,.

兩式相減得演算法2的截斷誤差

當函式f(x)在x0的鄰域內三階連續可導時,可得截斷誤差界:

其中是常數.

我們知道,不論採用何種演算法,一般說來計算結果都是有誤差的。本實驗要求分別對以上兩種數值微分的演算法,依次取不同步長進行導數值的近似計算,並同時算出誤差。從上面的理論分析可預見:

(1)對每一種演算法,步長越小,誤差越小。

(2)對演算法1:步長減半時,誤差應大致減小為1/2;對演算法2:步長減半時,誤差應大致減小為1/4。

(3)對同樣的步長,演算法2比演算法1更精確。

【實驗問題】

計算函式在和處的導數值。

【實驗過程與結果】

1. 設函式,對h=10-1, 10-2,…,10-10,用演算法1:

編寫程式計算,並給出截斷誤差,觀察截斷誤差隨步長變化而變化的規律。(計算結果略)

2. 對上述函式f, 計算, 並給出截斷誤差,觀察截斷誤差隨步長變化而變化的規律。(計算結果略)

3. 對函式, 重複上述兩步。(計算結果略)

4. 用演算法2:,編寫程式重複上述各步。(計算結果略)

【結果分析、討論與結論】

【結果分析】

1. 驗證理論分析的正常結果。由上面各部計算結果看,誤差與演算法有關。

對給定函式和同樣的步長h,演算法2的結果更為精確,即演算法2的所得函式導數值的誤差更小。這個結果驗證了上面的關於兩種演算法理論分析。

2. 意外現象及其解釋。觀察上面步驟1的結果發現,當逐步減小步長到一定數量級時,出現了意外現象:

步長隨著步長的減小,誤差反而增大。這與理論預見相衝突。我們認為這種現象是由於計算過程中捨入誤差的累積所致。

3. 最佳步長的探索。於是對這類問題,實際上存在乙個「最佳步長」。為了得到這個最小步長,繪出步長---誤差圖形(圖略)。結果如下:

(1)對於, 使用演算法1時,最佳步長為:10-8 ,在x=0,1;使用演算法2時,最佳步長為:10-7 , 在x=0,1;

(2)對於, 使用演算法1時,最佳步長為:10-8 ,在x=0,1;使用演算法2時,最佳步長為:10-7 ,在x=0,1。

【結論】

(1)一般說來數值微分的演算法2比演算法1更精確。

(2) 在涉及選取一定步長的計算問題中,一般在理論上認為,誤差隨步長減小而減小。但在實際計算時,當步長減小到一定程度時,由於舍人誤差的積累,誤差反而增大,因此存在所謂「最佳步長」。

(3) 最佳步長依賴於演算法,與函式和點的選取無關。

【附程式】

1. 用演算法1計算導數的程式略)。

2. 用演算法2計算導數的程式略)。

語法分析實驗報告樣例

呼叫上次實驗編寫的詞法分析程式,實現 類pascal語言子集 的語法分析功能。該語言的語法元素包括以下幾條 程式開始符號 program 變數定義 varint string a,b,c,賦值語句 x a b c 復合語句 以begin end作為開始和結束的語句 分支語句 if then,if t...

數值分析實驗報告

實驗一題目一 已知函式表如下 試用三次lagrange插值多項式求x 0.5635時的函式值。解 lagrange插值法公式 程式框圖如下 本題中n 4 分析設計思想 設計思路如上面的流程圖所示,用我們學過的c語言程式設計實現。程式清單 include include include float l...

數值分析實驗報告

數值分析 課程設計實驗報告模板 常微分方程資料值解 用龍格 庫塔法分析lorenz方程的特性 一 考慮著名的lorenz方程 其中s,r,b為變化區域內有一定限制的實引數,該方程形式簡單,表面上看並無驚人之處,但由該方程揭示出的許多現象,促使 混沌 成為數學研究的嶄新領域,在實際應用中產生了巨大的影...