一、 實驗名稱
非線性方程數值解法
二、 目的和意義
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 例項用高斯...