數值分析實驗報告

2022-09-20 23:57:03 字數 4417 閱讀 3670

一、 實驗名稱

非線性方程數值解法

二、 目的和意義

1、通過實驗進一步了解方程求根的演算法;

2、認識選擇迭代格式的重要性;

3、掌握迭代演算法和精度控制;

4、明確迭代收斂性與初值選取的關係。

三、 計算公式

將非線性方程同解變換成下列形式

然後用根的近似值(或者在根所在的區間內任取一點)代入上式的右端,計算得到。再將代入上式右端,計算得到。依此類推,有簡單迭代格式

由簡單迭代格式可以計算得到乙個根的近似值序列

這個序列在一定條件下收斂於非線性方程的乙個根,即

如果預先給定的精度要求為,則上述計算過程一般進行到滿足條件

為止,最後就可以得到滿足精度要求的根的近似值。

四、 結構程式設計

format long;

f=inline作內聯函式

disp('x=');

x=feval(f迭代初始值

disp(x);

eps=1e-5;

i=1;

while 1%進入迭代

x0=x;

i=i+1;

x=feval(f,x);

disp(x);

if ~isreal(x)%不是實數不進行迭代

break;

endif x>1e10%發散不進行迭代

break;

end;

if abs(x-x0) break;

endend;

i, x

format short;

五、 結果討論和分析

根據所給六種不同的迭代格式,具體對的根或進行討論和分析。

● 迭代格式(1)對應的求解程式編制如下:

format long;

f=inline('(3*x+1)/(x^2)')

disp('x=');

x=feval(f,1.5);

disp(x);

eps=1e-5;

i=1;

while 1

x0=x;

i=i+1;

x=feval(f,x);

disp(x);

if ~isreal(x)

break;

endif x>1e10

break;

end;

if abs(x-x0) break;

endend;

i, x

format short;

執行結果如下:

f = inline function:

f(x) = (3*x+1)/(x^2)

x=2.444444444444445

1.394628099173554

2.665253223593965

1.266370805206470

2.992534345310733

1.114160953638459

3.498180740480689

0.939306204481126

4.327252965706014

0.746684679154990

5.811359905259593

0.545840*********

8.852466176393030

0.351649225150196

16.618102694772709

0.184147095334617

45.781017231460218

0.066006465063750

2.749735363791990e+002

0.010923366492476

8.655469808118060e+003

3.466149845575090e-004

8.332142649749191e+006

3.600514592855000e-007

7.713852285587652e+012

i = 25

x =7.713852285587652e+012

迭代25次後,所得結果大得令人吃驚,表明構造的式子並不收斂。

● 只需將內聯函式改為f=inline('(x^3-1)/3') ,即可得到迭代格式(2)的求解程式。執行結果如下:

f = inline function:

f(x) = (x^3-1)/3

x= 0.791666666666667

-0.167944637345679

-0.334912315292645

-0.345855287159176

-0.347123261469069

-0.347275488062960

-0.347293838584247

-0.347296051778914

i = 8

x = -0.347296051778914

從結果中可知,該式子收斂很快,只需8次迭代即可達到精度要求。

● 將內聯函式改為f=inline('(3*x+1)^(1/3)') ,得到迭代格式(3)的求解程式。執行結果如下:

f = inline function:

f(x) = (3*x+1)^(1/3)

x= 1.765174167663032

1.846477104143911

1.870021763063919

1.876730518646633

1.878633339399364

1.879172339977175

1.879324963240741

1.879368175501175

1.879380409837660

1.879383873617094

i = 10

x = 1.879383873617094

該式子收斂也較快,只需10次迭代即可達到精度要求。

● 將內聯函式改為f=inline('1/(x^2-3)') ,可得迭代格式(4)的求解程式。執行結果如下:

f = inline function:

f(x) = 1/(x^2-3)

x= -1.333333333333333

-0.818181818181818

-0.429078014184397

-0.355127249018671

-0.347961079273642

-0.347352106906797

-0.347301026534225

-0.347296746681374

i = 8

x = -0.347296746681374

從結果中可知,該式子收斂很快,只需8次迭代即可達到精度要求。

● 將內聯函式改為f=inline('(3+(1/x))^(1/2)') ,得迭代格式(5)的求解程式。執行結果如下:

f = inline function:

f(x) = (3+(1/x))^(1/2)

x= 1.914854215512676

1.876761297519504

1.879583148521969

1.879370336310110

1.879386364276382

1.879385157007371

i = 6

x = 1.879385157007371

該式子收斂非常快,只需6次迭代即可達到精度要求。

● 將內聯函式改為f=inline('x-((x^3-3*x-1)/(x^2-1))/3') ,可得到迭代格式(6)的求解程式。執行結果如下:

f = inline function:

f(x) = x-((x^3-3*x-1)/(x^2-1))/3

x= 2.066666666666666

1.900875603864734

1.879719904423836

1.879385324669270

1.879385241571822

i = 5

x = 1.879385241571822

該式子收斂最快,只需5次迭代即可達到精度要求。

● 下面,通過改變預先設定的精度來控制迭代次數。

不妨選取迭代格式(3)作為研究物件。設定迭代初始值為1.5,分別按照不同的精度要求執行原程式,觀察執行結果,得到下表。

● 討論初始值的選取對迭代收斂的影響。

選取迭代格式(1)作為研究物件。設定精度要求為eps=1e-5,改變迭代初始值,執行程式觀察結果,得到下表。

由此可見,迭代的斂散性與初始值的選擇有較大的關係。

● 最後,分析迭代收斂和發散的原因。

已知其中,在與之間且。

若,則在迭代過程中的每一步迭代值的誤差絕對值將越來越小,且趨於0,即迭代過程收斂。

數值分析實驗報告

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

數值分析實驗報告

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

數值分析實驗報告

實驗專案 a 列主元高斯消去法 b 矩陣直接三角分解法 c 雅可比迭代法 d 高斯 賽德爾迭代法 e sor迭代法 f 冪法求最大特徵值 實驗名稱 列主元高斯消去法 實驗目的 熟悉了解高斯消去法的原理,並知道如何用高斯消去法求方程組的解 實驗所用的軟體 win tc 版本 1.9.0.0 例項用高斯...