




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上課題一 迭代格式的比較一、問題提出設方程f(x)=x - 3x1=0 有三個實根x*1=1.8793, x*2=0.34727,x*3 =-1.53209現采用下面六種不同計算格式,求f(x)=0的根 x*1 或x*21. 2. 3. 4. 5. 6. 二、要求1、編制一個程序進行運算,最后打印出每種迭代格式的斂散情況;2、用事后誤差估計來控制迭代次數,并且打印出迭代的次數;3、初始值的選取對迭代收斂有何影響;4、分析迭代收斂和發散的原因。三、目的和意義1、通過實驗進一步了解方程求根的算法;2、認識選擇計算格式的重要性;3、掌握迭代算法和精度控制;4、明確迭代收斂性與
2、初值選取的關系。專心-專注-專業1六種不同計算格式運行程序及運算結果1.1 運行程序(1)function iteration_1x0=input('輸入初始值x0 = ');k=input('輸入迭代次數k = ');x(1)=x0 ;i=1;while i <= kx(i+1)=fun(x(i) i=i+1;xk=x(i);end function y =fun(x) y=(3*x+1)/x2;(2)function iteration_2x0=input('輸入初始值x0 = ');k=input('輸入迭代次數k =
3、9;);x(1)=x0 ;i=1;while i <= kx(i+1)=fun(x(i) i=i+1;xk=x(i);end function y =fun(x) y=(x3-1)/3;(3)function iteration_3x0=input('輸入初始值x0 = ');k=input('輸入迭代次數k = ');x(1)=x0 ;i=1;while i <= kx(i+1)=fun(x(i) i=i+1;xk=x(i);end function y =fun(x) y=(3*x+1)(1/3);(4)function iteration_4x
4、0=input('輸入初始值x0 = ');k=input('輸入迭代次數k = ');x(1)=x0 ;i=1;while i <= kx(i+1)=fun(x(i) i=i+1;xk=x(i);end function y =fun(x) y=1/(x2-3);(5)function iteration_5x0=input('輸入初始值x0 = ');k=input('輸入迭代次數k = ');x(1)=x0 ;i=1;while i <= kx(i+1)=fun(x(i) i=i+1;xk=x(i);end fu
5、nction y =fun(x) y=(3+1/x)(1/2);(6)function iteration_6x0=input('輸入初始值x0 = ');k=input('輸入迭代次數k = ');x(1)=x0 ;i=1;while i <= kx(i+1)=fun(x(i) i=i+1;xk=x(i);end function y =fun(x) y=x-(1/3)*(x3-3*x-1)/(x2-1);1.2運行結果在matlab的command window中調用寫好的m文件,運行方式如下>>iteration輸入初始值x0 = 輸入迭
6、代次數k = (1)>>iteration_1輸入初始值x0 = 1 輸入迭代次數k = 5計算格式(1)最終運行結果如下:x = 1.0000 4.0000 0.8125 5.2071 0.6130 7.5549由此知,計算格式(1)發散。(2)>>iteration_2輸入初始值x0 = 1 輸入迭代次數k = 5計算格式(2)最終運行結果如下:x = 1.0000 0 -0.3333 -0.3457 -0.3471 -0.3473由此知,計算格式(2)收斂。(3)>>iteration_3輸入初始值x0 = 1 輸入迭代次數k = 8計算格式(2)最終
7、運行結果如下:x = 1.0000 1.5874 1.7928 1.8545 1.8723 1.8774 1.8788 1.8792 1.8793由此知,計算格式(3)收斂。(4)>>iteration_4輸入初始值x0 = 1 輸入迭代次數k = 5計算格式(2)最終運行結果如下:x = 1.0000 -0.5000 -0.3636 -0.3487 -0.3474 -0.3473由此知,計算格式(4)收斂。(5)>>iteration_5輸入初始值x0 = 1 輸入迭代次數k = 8計算格式(5)最終運行結果如下:x = 1.0000 2.0000 1.8708 1.
8、8800 1.8793 1.8794 1.8794 1.8794 1.8794由此知,計算格式(5)收斂。(6)>>iteration_6輸入初始值x0 = 2 輸入迭代次數k = 5計算格式(6)最終運行結果如下:x = 2.0000 1.8889 1.8795 1.8794 1.8794 1.87942.matlab事后誤差估計控制迭代次數,程序如下(注:此程序只能夠在迭代式收斂的情況下有意義;如果要采用不同的計算格式,只要將matlab程序的子函數中的迭代式修改即可。)function k,control,xk=iteration% k為輸出的迭代次數% control為控制
9、條件,使循環結束% xk為迭代方程的一個根% 此函數只能夠在迭代式收斂的情況下有意義N=input('輸入最大迭代次數N = ');x(1)=input('輸入初始值x0 = ');m=input('輸入控制誤差m = ');for i = 1:Nx(i+1)=fun(x(i) control=abs(x(i+1)-x(i); (i-1) control x(i) if (control< m) k=i;xk=x(i);break end i=i+1; end function y =fun(x) y=(3*x+1)(1/3);將程序存為m
10、文件,并且進行調用,有如下運行方式(程序以計算格式(3)為例)>> k control xk=iteration輸入最大迭代次數N = 30輸入初始值x0 = 1輸入控制誤差m = 0.運行輸出結果為:x = 1.0000 1.5874 1.7928 1.8545 1.8723 1.8774 1.8788 1.8792 1.8793 1.8794 1.8794 1.8794 1.8794 1.8794k = 13control = 2.0924e-007xk = 1.8794有輸出結果可以看出,方程的一個根為1.8794,迭代了13次,并且最后一次的偏差為2.0924e-007。3. 初始值的選取對迭代收斂有何影響?如果函數在Ca,b滿足不動點的兩個條件,那么對于任意的x0a,b,得到的迭代序列xk收斂到函數的不動點。在此情況下,初始值的選取對迭代收斂沒有任何影響,只是影響迭代收斂的速度
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論