第6章MATLAB解方程及最優(yōu)化問題求解_第1頁
第6章MATLAB解方程及最優(yōu)化問題求解_第2頁
第6章MATLAB解方程及最優(yōu)化問題求解_第3頁
第6章MATLAB解方程及最優(yōu)化問題求解_第4頁
第6章MATLAB解方程及最優(yōu)化問題求解_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第6章 MATLAB解方程u MATLAB線性方程組求解u MATLAB非線性方程數(shù)值求解u MATLAB常微分方程初值問題的數(shù)值解法u MATLAB最優(yōu)化問題求解6.1 線性方程組求解線性方程組求解Axb 12nxxxx12nbbbb.,22112222212111212111nnnnnnnnnnbxaxaxabxaxaxabxaxaxa111212122212nnnnnnaaaaaaAaaa求解線性方程組解法:直接解法;迭代解法直接解法;迭代解法寫成矩陣形式:主要討論恰定方程(系數(shù)為方陣)6.1 線性方程組求解線性方程組求解6.1.1 直接解法直接解法1利用左除運(yùn)算符的直接解法對于線性方程

2、組Ax=b,可以利用左除運(yùn)算符“”求解: x=Ab例6-1 用直接解法求解下列線性方程組。程序如下:A=2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4;b=13,-9,6,0;x=Ab2利用第二章學(xué)習(xí)的求矩陣的逆矩陣來解線性方程組Ax=bx=A-1b例:A=2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4;b=13,-9,6,0;x=inv(A)*b3利用矩陣的分解求解線性方程組(線性代數(shù)) 矩陣分解是指根據(jù)一定的原理用某種算法將一個矩陣分解成若干個矩陣的乘積。常見的矩陣分解有LU分解、QR分解、Cholesky分解,以及Schur分解、Hes

3、senberg分解、奇異分解等。 將線性方程組系數(shù)矩陣分解后,再進(jìn)行求解。LU分解分解 矩陣的LU分解就是將一個矩陣表示為一個下三角矩陣(變換形式的變換形式的)和一個上三角矩陣的乘積形式。線性代數(shù)中已經(jīng)證明,只要方陣A是非奇異的,LU分解總是可以進(jìn)行的。MATLAB提供的lu函數(shù)用于對矩陣進(jìn)行LU分解,其調(diào)用格式為:L,U=lu(X):產(chǎn)生一個上三角陣U和一個變換形式變換形式的下三角陣L(行交換),使之滿足X=LU。注意,這里的矩陣X必須是方陣方陣。L,U,P=lu(X):產(chǎn)生一個上三角陣U和一個下三角陣L以及一個置換矩陣P,使之滿足PX=LU。當(dāng)然矩陣X同樣必須是方陣。將系數(shù)矩陣實現(xiàn)LU分解

4、后,線性方程組Ax=b的解:x=U(Lb) 對應(yīng)第一種分解x=U(LP*b) 對應(yīng)第二種分解例6-2 用LU分解求解例6-1中的線性方程組。命令如下:第一種分解A=2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4;b=13,-9,6,0;L,U=lu(A);x=U(Lb)采用LU分解的第二種格式:A=2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4;b=13,-9,6,0;L,U ,P=lu(A);x=U(LP*b)6.1.2 迭代解法迭代解法迭代解法非常適合求解大型系數(shù)矩陣的方程組。在數(shù)值分析中,迭代解法主要包括 Jacobi迭代法;迭代法;G

5、auss-Serdel迭代法;迭代法;超松弛迭代法;超松弛迭代法;兩步迭代法。兩步迭代法。1Jacobi迭代法對于線性方程組Ax=b,如果A為非奇異方陣,即aii0(i=1,2,n),則可將A分解為A=D-L-U,其中D為對角陣,其元素為A的對角元素,L與U為A的下三角陣和上三角陣,于是Ax=b化為:x=D-1(L+U)x+D-1b與之對應(yīng)的迭代公式為:x(k+1)=D-1(L+U)x(k)+D-1b這就是Jacobi迭代公式。如果序列x(k+1)收斂于x,則x必是方程Ax=b的解。Jacobi迭代法的MATLAB函數(shù)文件Jacobi.m如下:function y,n=jacobi(A,b,x

6、0,eps)if nargin=3 eps=1.0e-6;elseif nargin=eps x0=y; y=B*x0+f; n=n+1;end例6-5 用Jacobi迭代法求解下列線性方程組。設(shè)迭代初值為0,迭代精度為10-6。在命令文件或命令窗口中調(diào)用函數(shù)文件Jacobi.m,命令如下:A=10,-1,0;-1,10,-2;0,-2,10;b=9,7,6;x,n=jacobi(A,b,0,0,0,1.0e-6)2Gauss-Serdel迭代法 在Jacobi迭代過程中,將迭代公式Dx(k+1)=(L+U)x(k)+b改進(jìn)為:Dx(k+1)=Lx(k+1)+Ux(k)+b,于是得到:x(k+

7、1)=(D-L)-1Ux(k)+(D-L)-1b 該式即為Gauss-Serdel迭代公式。和Jacobi迭代相比,Gauss-Serdel迭代用新分量代替舊分量,精度會高些。Gauss-Serdel迭代法的MATLAB函數(shù)文件gauseidel.m如下:function y,n=gauseidel(A,b,x0,eps)if nargin=3 eps=1.0e-6;elseif nargin=eps x0=y; y=G*x0+f; n=n+1;end例6-6 用Gauss-Serdel迭代法求解下列線性方程組。設(shè)迭代初值為0,迭代精度為10-6。在命令中調(diào)用函數(shù)文件gauseidel.m,命

8、令如下:A=10,-1,0;-1,10,-2;0,-2,10;b=9,7,6;x,n=gauseidel(A,b,0,0,0,1.0e-6)例6-7 分別用Jacobi迭代和Gauss-Serdel迭代法求解下列線性方程組,看是否收斂。分析結(jié)果命令如下:a=1,2,-2;1,1,1;2,2,1;b=9;7;6;x,n=jacobi(a,b,0;0;0)x,n=gauseidel(a,b,0;0;0)6.2 非線性方程數(shù)值求解非線性方程數(shù)值求解6.2.1 單變量非線性方程求解單變量非線性方程求解 在MATLAB中,fzero函數(shù),用來求單變量非線性方程的根。調(diào)用格式: z=fzero(fun,x

9、0,tol,trace) z=fzero(fname,x0,tol,trace) z=fzero(fname,x0,tol,trace)其中fun 是具體的方程,是具體的方程,fname是待求根的函數(shù)文件名,是待求根的函數(shù)文件名,x0為搜索的起點(diǎn)。一個函數(shù)可能有多個根,但為搜索的起點(diǎn)。一個函數(shù)可能有多個根,但fzero函數(shù)只給函數(shù)只給出離出離x0最近的那個根。最近的那個根。tol控制結(jié)果的相對精度,缺省時取tol=eps,trace指定迭代信息是否在運(yùn)算中顯示,為1時顯示,為0時不顯示,缺省時取trace=0。 例6-8 求f(x)=x-10 x+2=0在x0=0.5附近的根。 步驟如下:1.

10、(1) 建立函數(shù)文件funx.m。 2.直接求解(簡單方程時): function fx=funx(x) z=fzero( x-10.x+2 ,0.5) fx=x-10.x+2; (2) 調(diào)用fzero函數(shù)求根。 z=fzero(funx,0.5) z=fzero(funx,0.5)6.2.2 非線性方程組的求解非線性方程組的求解 對于非線性方程組F(X)=0,用fsolve函數(shù)求其數(shù)值解。 調(diào)用格式: X=fsolve(fun,X0,option) X=fsolve(fun,X0,option)其中X為返回的解,為返回的解,fun是用于定義需求解的非線性方程組的是用于定義需求解的非線性方程組

11、的函數(shù)文件名,函數(shù)文件名,X0是求根過程的初值是求根過程的初值,option為最優(yōu)化工具箱的選項設(shè)定。最優(yōu)化工具箱提供了20多個選項,可以使用optimset命令將它們顯示出來。如果想改變其中某個選項,則可以調(diào)用optimset()函數(shù)來完成。例如,Display選項決定函數(shù)調(diào)用時中間結(jié)果的顯示方式,其中off為不顯示,iter表示每步都顯示,final只顯示最終結(jié)果。optimset(Display,off)將設(shè)定Display選項為off。 例6-9 求下列非線性方程組在(0.5,0.5) 附近的數(shù)值解。 (1) 建立函數(shù)文件myfun.m。function q=myfun(p)x=p(1

12、);y=p(2);q(1)=x-0.6*sin(x)-0.3*cos(y);q(2)=y-0.6*cos(x)+0.3*sin(y); (2) 在給定的初值x0=0.5,y0=0.5下,調(diào)用fsolve函數(shù)求方程的根。x=fsolve(myfun,0.5,0.5,optimset(Display, off)x=fsolve(myfun,0.5,0.5,optimset(Display, off)將求得的解代回原方程,可以檢驗結(jié)果是否正確,命令如下:q=myfun(x)q = 1.0e-009 * 0.2375 0.2957 可見得到了較高精度的結(jié)果。6.3 常微分方程(組)初值問題的數(shù)值解法常

13、微分方程(組)初值問題的數(shù)值解法常微分方程(組)的解析解(第8章)如果解析解不能求解,可以利用數(shù)值解求解0( , ,)(2)( ),( )yf t y yatby ayy a 0( , )(1)( )yf t yatby ay 11121102212220( ,)( 0)(3)( ,)( 0)yf t y yy tyyf t y yy ty 6.3.1 龍格庫塔法簡介龍格庫塔法簡介6.3.2 龍格庫塔法的實現(xiàn)龍格庫塔法的實現(xiàn) 基于龍格庫塔法,MATLAB提供了求一階常微一階常微分方程數(shù)值解分方程數(shù)值解的函數(shù),一般調(diào)用格式為: t,y=solver(fname,tspan,y0) t,y= so

14、lver(fname,tspan,y0)其中solver 為求解方法,有ode23,ode45等,fname是定義f(t,y)的函數(shù)文件名,該函數(shù)文件必須返回一個列向量(方程組時)列向量(方程組時)。tspan為t0,tf,表示求解區(qū)間。y0是初始狀態(tài)列向量。t和y分別給出時間向量和相應(yīng)的狀態(tài)向量。例6-10 設(shè)有初值問題,試求其數(shù)值解,并與精確解相比較。 (1) 建立函數(shù)文件funt.m。function yp=funt(t,y)yp=(y2-t-2)/4/(t+1);(2) 求解微分方程。t0=0;tf=10;y0=2;t,y=ode23(funt,t0,tf,y0); %求數(shù)值解y1=s

15、qrt(t+1)+1; %求精確解Y=yY1=y1例6-12 求解著名的lorenz方程。取取 =8/3, =10, =28。初值初值:x(0)=0,y(0)=0,z(0)=0.01。利用利用MATLAB求解常微分方程數(shù)值解命令計算出求解常微分方程數(shù)值解命令計算出t0,80內(nèi)內(nèi),三個未知函數(shù)的數(shù)據(jù)值三個未知函數(shù)的數(shù)據(jù)值()dxxyzdtdyyzdtdzxyyzdt 例6-12 求解著名的lorenz方程。建立方程函數(shù)文件(用列向量lz表示3個方程,用y(1)表示x,y(2)表示y,y(3)表示z)function lz=lorenz(t,y)lz(1,:)=-8*y(1)/3+y(2)*y(3

16、);lz(2,:)=-10*(y(2)-y(3);lz(3,:)=-y(1)*y(2)+28*y(2)-y(3);y0=0;0;0.01;t,y=ode23(lorenz,0, 80,y0);plot3(y(:,1),y(:,2),y(:,3) 例6-11 求解高階常微分方程。1首先將高階方程轉(zhuǎn)化為一階方程組首先將高階方程轉(zhuǎn)化為一階方程組2求解方程組求解方程組常微分方程解析解(第常微分方程解析解(第8章)章) 在在MATLAB中,用大寫字母中,用大寫字母D表示導(dǎo)數(shù)。例如,表示導(dǎo)數(shù)。例如,Dy表示表示y,D2y表示表示y,Dy(0)=5表示表示y(0)=5。D3y+D2y+Dy-x+5=0表示微分方程表示微分方程y+y+y-x+5=0。符號常微分方程求解可以通過函數(shù)符號常微分方程求解可以通過函數(shù)dsolve來實現(xiàn),其調(diào)用格來實現(xiàn),其調(diào)用格式為:式為:dsolve(e,c,v) 該函數(shù)求解該函數(shù)求解常微分方程常微分方程e在初值條件在初值條件c下的下的特解特解。參數(shù)。參數(shù)v描描述方程中的自變量,省略時按缺省原則處理,若沒有給出述方程中的自變量,省略時按缺省原則處理,若沒有給出初值條件初值條件c,則求方程的,則求方程的通解通解。dsolve在求常微分方程組時的調(diào)用格式為:在求常微分方程組時的調(diào)用格式為:dsolve(e1,e2,en,c1,cn,v1

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論