數(shù)值計算matlab_第1頁
數(shù)值計算matlab_第2頁
數(shù)值計算matlab_第3頁
數(shù)值計算matlab_第4頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、精品文檔數(shù)值計算非線性方程五種數(shù)值解法的matlab程序一、算法描述計算 n A 的值可以將問題轉(zhuǎn)化為求函數(shù)f ( x) xnA0 時的解,可以利用函數(shù)的收斂性結(jié)合數(shù)值逼近的思想進(jìn)行算法設(shè)計。1.1 二分法設(shè) f ( x) 在區(qū)間( x,y)上連續(xù),假定 f ( a)0, f (b)0,a<b ,取中點 a b,若 f ( ab )0 ,22該點就是零點。若 f ( a b)0 , 則在區(qū)間( (a+b)/2 , b)內(nèi)有零點, (a+b)/2>=a,令 aa b 繼續(xù)22使用中點函數(shù)值判斷。 若 f ( ab) 0 ,則在區(qū)間 (a,(a+b)/2)內(nèi)有零點, (a+b)/2&l

2、t;=b ,令 bab 繼22續(xù)使用中點函數(shù)值判斷。這樣就可以不斷接近零點。通過每次把f(x) 的零點所在小區(qū)間收縮一半的方法,使區(qū)間的兩個端點逐步逼近函數(shù)的零點,以求得零點的近似值從以上可以看出,每次運算后,區(qū)間長度減少一半,是線形收斂。Matlab 實現(xiàn) :function erfen(A,n,a,b,e)a0=a;b0=b;f = (x)xn-A;m= 0;tic;if f(a)* f(b)<0m=1;c=(a+b)/2;fprintf('x%d=%12.9fn',m,c)while abs(a-b)>eif f(a)* f(c)<0b=c;c=(a+b

3、)/2;elseif f(c)*f(b)<0a=c;c=(a+b)/2;else y=c;endm=m+1;fprintf('x%d=%12.9fn',m,c)endformat longy=c;elseif f(a)=0。1歡迎下載精品文檔y=a;elseif f(b)=0y=b;else disp ('may not be a root')endmt = toc;fprintf('根為 : %.10fn',c);fprintf('初始值 : %.5f , %.5fn',a0,b0);fprintf('迭代次數(shù) :

4、 %dn',m);fprintf('迭代時間 : %.10fn',t);1.2 牛頓法在 已 知 方 程 的 近 似 根 x0 ,且 在 x0附 近 將 f ( x)用一階泰勒多項式展開即f ( x)f ( x0 ) f ' (x0 )( x x0 ) ,令 f (x)0即可解得 xx0f (x0 )。取此 x 作為原方程的新f ' (x0 )近似根繼續(xù)重復(fù)以上步驟,于是可得迭代公式xk 1f ( xk )xkf '( xk )Matlab 實現(xiàn):functionNewton(A,n,x0,e)begin=x0;f = (x)xn-A;df =

5、(x)n*x(n-1);x1=x0-f (x0)/df (x0);m=1;fprintf('x%d=%12.9fn',m,x1);tic;while (abs (x1-x0)>=e)&(m<=100000000)x0=x1;x1=x0-f(x0)/df(x0);m=m+1;fprintf('x%d=%12.9fn',m,x1);endx1mt = toc;fprintf('根為 : %.10fn',x1);fprintf('初始值 : %.5fn',begin);fprintf('迭代次數(shù) : %dn&

6、#39;,m);fprintf('迭代時間 : %.10fn',t);1.3 簡易牛頓法為簡化計算,在牛頓迭代公式中用一常數(shù)M代替 f '( xk ) 即為簡化牛頓迭代法,在此取f ' (x0 )f ' ( xk )。2歡迎下載精品文檔Matlab 實現(xiàn): function sNewton(A,n,x0,e)xk0=x0;f = (x)xn-A;df = (x)n*x(n-1);xk1=xk0-f (xk0)/df (x0);m=1;fprintf('x%d=%12.9fn',m,xk1);tic;while (abs (xk1-xk0)

7、>=e)&(m<=100000000)xk0=xk1;xk1=xk0-f(xk0)/df(x0);m=m+1;fprintf('x%d=%12.9fn',m,xk1);endxk1mt = toc;fprintf('根為 : %.10fn',xk1);fprintf('初始值 : %.5fn',x0);fprintf('迭代次數(shù) : %dn',m);fprintf('迭代時間 : %.10fn',t)1.4 割線法在牛頓迭代公式中用差商f ( xk )f (xk 1) 代替 f '( x

8、k ) 即為割線法xkxk 1Matlab 實現(xiàn)function gexian(A,n,a,b,e)x0=a;x1=b;f = (x)xn-A;x2=x1-f (x1)*(x1-x0)/(f(x1)-f(x0);m=1;fprintf('x%d=%12.9fn',m,x2);tic;while (abs (x2-x1)>=e)&(m<=100000000)x0=x1;x1=x2;x2=x1-f (x1)*(x1-x0)/(f(x1)-f(x0);m=m+1;fprintf('x%d=%12.9fn',m,x2);endx2mt = toc;f

9、printf('根為 : %.10fn',x2);fprintf('初始值 : %.5fn',a,b);。3歡迎下載精品文檔fprintf('迭代次數(shù) : %dn',m);fprintf('迭代時間 : %.10fn',t1.5 斯特芬森法該迭代法解方程x( x) 可以看成是另一種不動點迭代:xk 1(xk ), k0,1,2,L 其中迭代函數(shù)為(x)( x)x)2得 到 迭 代 公 式 為 :yk( xk ), zk( yk ) ;x2 (x)( (x)xxk 1( ykxk )20,1, 2Lxk2 yk, kzkxkMatl

10、ab 實現(xiàn)function Steffensen(A,n,x0,e)begin=x0;f = (x)xn-A;g = (x)A/(x(n-1);x1= x0-(g(x0)-x0)2/(g(g(x0)-2*g(x0)+x0)m=1;fprintf('x%d=%12.9fn',m,x1)tic;while (abs (x1-x0)>=e)&(m<=100000000)x0=x1;x1= x0-(g(x0)-x0)2/(g(g(x0)-2*g(x0)+x0);m=m+1;fprintf('x%d=%12.9fn',m,x1)endx1mt = to

11、c;fprintf('根為 : %.10fn',x1);fprintf('初始值 : %.5fn',begin);fprintf('迭代次數(shù) : %dn',m);fprintf('迭代時間 : %.10fn',t);二計算機軟硬件配置電腦型號華碩 K52JU 筆記本電腦操作系統(tǒng)Windows 7 旗艦版 32 位 SP1 ( DirectX 11 )處理器英特爾 Core i3 M 380 2.53GHz雙核筆記本處理器內(nèi)存2 GB (昱聯(lián) DDR3 1333MHz )Matlab 版本三參數(shù)設(shè)置n A , e(精度),a,b(區(qū)

12、間), x0 初始值。4歡迎下載精品文檔四計算結(jié)果(以計算3 500 為例)erfen(500,3,0,10,0.000001)gexian(500,3,0,10,0.000001)newton(500,3,10,0.000001)snewton(500,3,10,0.000001)steffensen(500,3,10,0.000001)迭代次數(shù)二分法割線法牛頓法簡易牛頓斯特芬森15.0000005.0000008.3333338.3333338.75000027.5000007.1428577.9555558.0709878.08548138.7500008.3561647.9370487

13、.9851517.94244148.1250007.8937927.9370057.9546367.93701257.8125007.9347937.9370057.9435047.93700567.9687507.9370177.9394077.93700577.8906257.9370057.93789387.9296877.9370057.93733397.9492187.937126107.9394537.937050117.9345707.937021127.9370117.937011137.9357917.937007147.9364017.937006157.9367067.9

14、37005167.936859177.936935187.936973197.936992207.937002217.937006227.937004237.937005247.937005257.937005迭代次數(shù)2585156迭代時間0.0500000.0100000.0000000.0000000.010000根7.9370057.9370057.9370057.9370057.937005四分析結(jié)果及結(jié)論由以上運行結(jié)果可知,牛頓法的收斂速度最快,二分法收斂速度最慢。5歡迎下載精品文檔牛頓法、割線法和斯特芬森得到的結(jié)果精度最高,迭代次數(shù)由低到高排列為:牛頓法,斯特芬森,割線法,簡易牛頓法,二分法。出現(xiàn)這種結(jié)果的原因是:二分法

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論