常微分方程數(shù)值解與matlab.ppt
《常微分方程數(shù)值解與matlab.ppt》由會員分享,可在線閱讀,更多相關(guān)《常微分方程數(shù)值解與matlab.ppt(25頁珍藏版)》請在裝配圖網(wǎng)上搜索。
實驗4-常微分方程數(shù)值解,1.求解常微分方程數(shù)值方法介紹(1)一階微分方程求方程(1)的數(shù)值解,就是計算(精確)解在一系列離散點的近似值.通常取相等的步長h,于是xn=x0+nh(n=1,2,…).(a)歐拉方法基本思想是在小區(qū)間[xn,xn+1]上用差商代替方程(1)左端的導(dǎo)數(shù)而方程右端函數(shù)f(x,y(x))中的x取[xn,xn+1]上得某一點,公式為(2),,,,,實驗4-常微分方程數(shù)值解,(b)Runge-Kutta方法基本思想是用小區(qū)間[xn,xn+1]上的若干個點的導(dǎo)數(shù)的線性組合代替方程(2)右端的,一般形式為(3)滿足并使(3)的局部截斷誤差-------L級p階Runge-Kutta公式,,,,,,,實驗4-常微分方程數(shù)值解,(2)常微分方程組和高階方程的數(shù)值方法歐拉方法和Runge-Kutta方法可直接推廣到求常微分方程組,如對歐拉公式為Runge-Kutta公式有類似的形式.對高階方程(5)需先降階化為一階常微分方程組,降階方法不唯一.簡單、常用的方法是令y1=y,將(5)化為,,,,,,,實驗4-常微分方程數(shù)值解,2.Runge-Kutta方法的MatLab實現(xiàn)對微分方程(組)的初值問題Runge-Kutta方法用MatLab命令實現(xiàn):[t,x]=ode23(@f,ts,x0,options)%用3級2階Runge-Kutta公式[t,x]=ode45(@f,ts,x0,options)%用5級4階Runge-Kutta公式命令的輸入f是待解方程寫成的函數(shù)M文件:functiondx=f(t,x)Dx=[f1;f2;…;fn];,,,,,,,實驗4-常微分方程數(shù)值解,2.Runge-Kutta方法的MatLab實現(xiàn)舉例:仿真模擬著名的Lorenz系統(tǒng)混沌圖其中,先建立一個函數(shù)M文件functionxdot=lorenz(t,x)sigma=10;r=28;row=8/3;xdot=[-sigma*x(1)+sigma*x(2);(r-x(3))*x(1)-x(2);x(1)*x(2)-row*x(3)];,,,,,,,,實驗4-常微分方程數(shù)值解,2.Runge-Kutta方法的MatLab實現(xiàn)畫出Lorenz系統(tǒng)圖clearall;clf;options=odeset(RelTol,1e-5,AbsTol,1e-5);tspan=[0,100];x0=[1,2,3];[t,x]=ode45(lorenz,tspan,x0,options);l=length(x(:,1));a=1;b=l;figure(1)plot3(x(a:b,3),x(a:b,1),x(a:b,2),‘b’);gridon;%畫出三維相圖xlabel(z);ylabel(x);zlabel(y);figure(2)subplot(311);plot(t,x(a:b,1));%畫三分量演化圖subplot(312);plot(t,x(a:b,2))subplot(313);plot(t,x(a:b,3)),,,,,,,,,,,,,實驗4-常微分方程數(shù)值解,2.Runge-Kutta方法的MatLab實現(xiàn)作業(yè)報告:著名的Duffing系統(tǒng)(描述彈簧系統(tǒng)性質(zhì))其中類似的,分別畫出F=1,2,3,4,6等時的相圖翻閱一些參考書,你能得到一些什么結(jié)論?,,,,,,,,實驗4-常微分方程數(shù)值解,3.實例問題緝私艇追擊走私船海上邊防緝私艇發(fā)現(xiàn)距d公里處有一走私船正以勻速a沿直線行駛,緝私艇立即以最大勻速度v追趕,在雷達的引導(dǎo)下,緝私艇的方向始終指向走私船.問緝私艇何時追趕上走私船?并求出緝私艇追趕的路線.,S,(1)建立模型,走私船初始位置在點(S0,0),行駛方向為x軸正方向,緝私艇的初始位置在點(0,M0),在時刻t:走私船的位置到達點:(S0+at,0)緝私艇到達點M(x,y),,,S,,,,(2)模型求解(a)求解析解,,令:,,令:,,(2)模型求解,(a)求解析解,當(dāng)y=0時:,走私船a=0.4千米/秒,分別取v=0.6,0.8,1.0千米/秒時,緝私艇追趕路線的圖形。,clearall;clf;a=0.4;v=[0.60.81.0];%取不同的速度r=0.4./v;t=20*r./(a*(1-r.^2))%追上的時間fori=1:3y=20:-0.01:0;x(:,i)=-0.5*(-40*r(i)+20^(-r(i))*(r(i)-1)*y.^(1+r(i))+20^r(i)*(r(i)+1)*y.^(1-r(i)))/(1-r(i)^2);plot(x(:,i),y);axis([030020]);holdonend,追趕時間分別為:T=60.0000,33.3333,23.8095(秒),2),當(dāng),時,,緝私艇不可能追趕上走私船。,3),,,,,當(dāng),時,,,,緝私艇不可能追趕上走私船。,(b)用MATLAB軟件求解析解,MATLAB軟件5.3以上版本提供的解常微分方程解析解的指令是Dsolve,完整的調(diào)用格式是:dsolve(eqn1,eqn2,...)其中‘eqn1’,‘eqn2’,...是輸入宗量,包括三部分:微分方程、初始條件、指定變量,若不指定變量,則默認小寫字母t為獨立變量.書P-69,微分方程的書寫格式規(guī)定:當(dāng)y是因變量時,用“Dny”表示y的n階導(dǎo)數(shù).,例求微分方程,的通解。,dsolve(Dy=x+x*y,x),Ans=-1+exp(1/2*x^2)*C1,dsolve(Dx=1/2*((y/20)^r-(20/y)^r),x(20)=0,y),Ans=1/2*20^(-r)*y^(r+1)/(r+1)+1/2*20^r/(r-1)*y*(1/y)^r-20*r/(r^2-1),(c)用MATLAB軟件防真,當(dāng)建立動態(tài)系統(tǒng)的微分方程模型很困難時,我們可以用計算機仿真法對系統(tǒng)進行分析研究.所謂計算機仿真就是利用計算機對實際動態(tài)系統(tǒng)的結(jié)構(gòu)和行為進行編程、模擬和計算,以此來預(yù)測系統(tǒng)的行為效果.,追趕方向可用方向余弦表示為:%兩點形成的向量的方向余弦,時間步長為,,,則在時刻,時:,仿真算法:,第一步:設(shè)置時間步長,,速度a,v及初始距離d,,第二步:,計算動點緝私艇D在時刻,時的坐標(biāo),,,計算走私船R在時刻,時的坐標(biāo),,,第三步:計算緝私艇與走私船這兩個動點之間的距離:,根據(jù)事先給定的距離,判斷緝私艇是否已經(jīng)追上了走私船,從而判斷退出循環(huán)還是讓時間產(chǎn)生一個步長,返回到第二步繼續(xù)進入下一次循環(huán);,第四步:當(dāng)從上述循環(huán)退出后,由點列,和,可分別繪,制成兩條曲線即為緝私艇和走私船走過的軌跡曲線。,緝私艇初始位置,,,走私船初始位置,追擊問題的數(shù)值模擬(P-66)clear;clf;d=120;v=90;a=80;s0=8;%給出初始條件T=10;dt=0.001;%選取時間區(qū)間T(可以偏大一點),時間微元dtt=0:dt:T;%離散時間表tn=length(t);%離散時間表t長度x(1)=0;y(1)=d;s(1)=s0;%初始位置、初始距離fori=1:nx(i+1)=x(i)+v*dt*(s0+a*t(i)-x(i))/sqrt((s0+a*t(i)-x(i))^2+y(i)^2);y(i+1)=y(i)+v*dt*(-y(i))/sqrt((s0+a*t(i)-x(i))^2+y(i)^2);%遞推算式、d=sqrt((s0+a*t(i)-x(i))^2+y(i)^2);%t(i)時刻的距離ifd10的方程便可認為是剛性方程,實際問題中可出現(xiàn)s達的情況.剛性是問題本身的性質(zhì),與解法無關(guān).但正是由于這種性質(zhì),用數(shù)值方法求解時需要計算到最慢瞬態(tài)解衰減成可忽略的小量為止,使得積分區(qū)間很長,而為保證計算的穩(wěn)定性,當(dāng)最快瞬態(tài)解的很大時,又必須使步長充分小,這就出現(xiàn)了在大區(qū)間上用小步長計算的困難情況.,,,,,,,,,,實驗4-常微分方程數(shù)值解,4.剛性現(xiàn)象與剛性方程MatLab求解Matlab中求解常微分方程的命令ode23,ode45.由于其步長是按穩(wěn)定性要求和指定的精度加以調(diào)整的,所以用它們解剛性微分方程時步長會自動變小,對于大的區(qū)間會導(dǎo)致計算時間很長.Matlab中有專門求解剛性方程的命令ode23s,ode15s,用法與ode23,ode45相同.例解方程特征根,剛性比.解析解為,,,,,,,,,,,實驗4-常微分方程數(shù)值解,4.剛性現(xiàn)象與剛性方程MatLab求解functiondx=stiff1(t,x)dx=[x(1)+2*x(2);-(10^6+1)*x(1)-(10^6+2)*x(2)];t=0:0.1:1;%t=0:0.1:10;x1=(10^6/4+1)*exp(-t)-exp(-10^6*t);x2=-(10^6/4+1)*exp(-t)+(10^6+1)/2*exp(-10^6*t);A=[t;x1;x2]x0=[10^6/4,10^6/4-1/2];[t,x]=ode23s(@stiff1,t,x0);%很快出結(jié)果B=[t,x]%[t,y]=ode23(@stiff1,t,x0);%幾十秒出結(jié)果%C=[t,y]%要計算[0,10]才能保證精度,ode23薛要很長很長時間.,,,,,,,,,,,謝謝同學(xué)們!,- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 微分方程 數(shù)值 matlab
鏈接地址:http://zhongcaozhi.com.cn/p-3234614.html