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