資源描述:
《用matlab解常微分方程》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、word資料下載可編輯實(shí)驗(yàn)四求微分方程的解一、問題背景與實(shí)驗(yàn)?zāi)康膶?shí)際應(yīng)用問題通過數(shù)學(xué)建模所歸納而得到的方程,絕大多數(shù)都是微分方程,真正能得到代數(shù)方程的機(jī)會很少.另一方面,能夠求解的微分方程也是十分有限的,特別是高階方程和偏微分方程(組).這就要求我們必須研究微分方程(組)的解法,既要研究微分方程(組)的解析解法(精確解),更要研究微分方程(組)的數(shù)值解法(近似解).對微分方程(組)的解析解法(精確解),Matlab有專門的函數(shù)可以用,本實(shí)驗(yàn)將作一定的介紹.本實(shí)驗(yàn)將主要研究微分方程(組)的數(shù)值解法(近似解),重點(diǎn)介紹Euler折線法.二、相關(guān)函數(shù)(命令)及簡介1.dsolve('
2、equ1','equ2',…):Matlab求微分方程的解析解.equ1、equ2、…為方程(或條件).寫方程(或條件)時(shí)用Dy表示y關(guān)于自變量的一階導(dǎo)數(shù),用用D2y表示y關(guān)于自變量的二階導(dǎo)數(shù),依此類推.2.simplify(s):對表達(dá)式s使用maple的化簡規(guī)則進(jìn)行化簡.例如:symsxsimplify(sin(x)^2+cos(x)^2)ans=13.[r,how]=simple(s):由于Matlab提供了多種化簡規(guī)則,simple命令就是對表達(dá)式s用各種規(guī)則進(jìn)行化簡,然后用r返回最簡形式,how返回形成這種形式所用的規(guī)則.例如:symsx[r,how]=simple(
3、cos(x)^2-sin(x)^2)r=cos(2*x)how=combine4.[T,Y]=solver(odefun,tspan,y0)求微分方程的數(shù)值解.說明:(1)其中的solver為命令ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb之一.(2)odefun是顯式常微分方程:(3)在積分區(qū)間tspan=上,從到,用初始條件求解.專業(yè)技術(shù)資料word資料下載可編輯(4)要獲得問題在其他指定時(shí)間點(diǎn)上的解,則令tspan=(要求是單調(diào)的).(5)因?yàn)闆]有一種算法可以有效地解決所有的ODE問題,為此,Matlab提供了多種求解器S
4、olver,對于不同的ODE問題,采用不同的Solver.求解器SolverODE類型特點(diǎn)說明ode45非剛性單步算法;4、5階Runge-Kutta方程;累計(jì)截?cái)嗾`差達(dá)大部分場合的首選算法ode23非剛性單步算法;2、3階Runge-Kutta方程;累計(jì)截?cái)嗾`差達(dá)使用于精度較低的情形ode113非剛性多步法;Adams算法;高低精度均可到計(jì)算時(shí)間比ode45短ode23t適度剛性采用梯形算法適度剛性情形ode15s剛性多步法;Gear's反向數(shù)值微分;精度中等若ode45失效時(shí),可嘗試使用ode23s剛性單步法;2階Rosebrock算法;低精度當(dāng)精度較低時(shí),計(jì)算時(shí)間比ode
5、15s短ode23tb剛性梯形算法;低精度當(dāng)精度較低時(shí),計(jì)算時(shí)間比ode15s短(6)要特別的是:ode23、ode45是極其常用的用來求解非剛性的標(biāo)準(zhǔn)形式的一階常微分方程(組)的初值問題的解的Matlab的常用程序,其中:ode23采用龍格-庫塔2階算法,用3階公式作誤差估計(jì)來調(diào)節(jié)步長,具有低等的精度.ode45則采用龍格-庫塔4階算法,用5階公式作誤差估計(jì)來調(diào)節(jié)步長,具有中等的精度.5.ezplot(x,y,[tmin,tmax]):符號函數(shù)的作圖命令.x,y為關(guān)于參數(shù)t的符號函數(shù),[tmin,tmax]為t的取值范圍.6.inline():建立一個內(nèi)聯(lián)函數(shù).格式:inli
6、ne('expr','var1','var2',…),注意括號里的表達(dá)式要加引號.例:Q=dblquad(inline('y*sin(x)'),pi,2*pi,0,pi)專業(yè)技術(shù)資料word資料下載可編輯三、實(shí)驗(yàn)內(nèi)容1.幾個可以直接用Matlab求微分方程精確解的例子:例1:求解微分方程,并加以驗(yàn)證.求解本問題的Matlab程序?yàn)椋簊ymsxy%line1y=dsolve('Dy+2*x*y=x*exp(-x^2)','x')%line2diff(y,x)+2*x*y-x*exp(-x^2)%line3simplify(diff(y,x)+2*x*y-x*exp(-x^2))%
7、line4說明:(1)行l(wèi)ine1是用命令定義x,y為符號變量.這里可以不寫,但為確保正確性,建議寫上;(2)行l(wèi)ine2是用命令求出的微分方程的解:1/2*exp(-x^2)*x^2+exp(-x^2)*C1(3)行l(wèi)ine3使用所求得的解.這里是將解代入原微分方程,結(jié)果應(yīng)該為0,但這里給出:-x^3*exp(-x^2)-2*x*exp(-x^2)*C1+2*x*(1/2*exp(-x^2)*x^2+exp(-x^2)*C1)(4)行l(wèi)ine4用simplify()函數(shù)對上式進(jìn)行化簡,結(jié)果