非线性常微分方程组 matlab,matlab常微分方程和常微分方程组求解.doc
常微分方程和常微分方程組的求解
?
一、實驗目的:
熟悉Matlab軟件中關于求解常微分方程和常微分方程組的各種命令,掌握利用Matlab軟件進行常微分方程和常微分方程組的求解。
?
二、相關知識
在MATLAB中,由函數dsolve()解決常微分方程(組)的求解問題,其具體格式如下:
X=dsolve(‘eqn1’,’eqn2’,…)
函數dsolve用來解符號常微分方程、方程組,如果沒有初始條件,則求出通解,如果有初始條件,則求出特解。
例1:求解常微分方程的MATLAB程序為:dsolve('Dy=1/(x+y)','x'),注意,系統缺省的自變量為t,因此這里要把自變量寫明。
結果為:-lambertw(-C1*exp(-x-1))-x-1
其中:Y=lambertw(X)表示函數關系Y*exp(Y)=X。
例2:求解常微分方程的MATLAB程序為:Y2=dsolve('y*D2y-Dy^2=0’,’x’)
結果為:
Y2 =[ exp((x+C2)/C1)]
[ C2]
我們看到有兩個解,其中一個是常數。
例3:求常微分方程組通解的MATLAB程序為:
[X,Y]=dsolve('Dx+5*x+y=exp(t),Dy-x-3*y=exp(2*t)','t')
例4:求常微分方程組通解的MATLAB程序為:
[X,Y]=dsolve('Dx+2*x-Dy=10*cos(t),Dx+Dy+2*y=4*exp(-2*t)','x(0)=2','y(0)=0')
以上這些都是常微分方程的精確解法,也稱為常微分方程的符號解。但是,我們知道,有大量的常微分方程雖然從理論上講,其解是存在的,但我們卻無法求出其解析解,此時,我們需要尋求方程的數值解,在求常微分方程數值解方面,MATLAB具有豐富的函數,我們將其統稱為solver,其一般格式為:
[T,Y]=solver(odefun,tspan,y0)
該函數表示在區間tspan=[t0,tf]上,用初始條件y0求解顯式常微分方程。
solver為命令ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb之一,這些命令各有特點。我們列表說明如下:
求解器
ODE類型
特點
說明
ode45
非剛性
一步算法,4,5階Runge-Kutta
方法累積截斷誤差
大部分場合的首選算法
ode23
非剛性
一步算法,2,3階Runge-Kutta
方法累積截斷誤差
使用于精度較低的情形
ode113
非剛性
多步法,Adams算法,高低精度均可達到
計算時間比ode45短
ode23t
適度剛性
采用梯形算法
適度剛性情形
ode15s
剛性
多步法,Gear’s反向
數值積分,精度中等
若ode45失效時,
可嘗試使用
ode23s
剛性
一步法,2階Rosebrock算法,
低精度。
當精度較低時,
計算時間比ode15s短
odefun為顯式常微分方程中的
tspan為求解區間,要獲得問題在其他指定點上的解,則令(要求單調),
y0初始條件。
例5:求解常微分方程,,的MATLAB程序如下:fun=inline('-2*y+2*x*x+2*x');[x,y]=ode23(fun,[0,0.5],1)
結果為:
x = 0,0.0400,0.0900,0.1400,0.1900,0.2400,0.2900,0.3400,0.3900,0.4400,0.4900,0.5000
y = 1.0000,0.9247,0.8434,0.7754,0.7199,0.6764,0.6440,0.6222,0.6105,0.6084,0.6154,0.6179
例6:求解常微分方程的解,并畫出解的圖形。
分析:這是一個二階非線性方程,用現成的方法均不能求解,但我們可以通過下面的變換,將二階方程化為一階方程組,即可求解。
令:,,,則得到:
接著,編寫vdp.m如下:
function fy=vdp(t,x)
fy=[x(2);7*(1-x(1)^2)*x(2)-x(1)];
再編寫m文件sy12_6.m如下:
y0=[1;0]
[t,x]=ode45(@vdp,[0,40],y0);
y=x(:,1);dy=x(:,2);
plot(t,y,t,dy)
?
?
三、實驗內容
1.利用MATLAB求常微分方程的初值問題,的解。
2.利用MATLAB求常微分方程的初值問題,,的解。
3.利用MATLAB求常微分方程的解。
4.利用MATLAB求常微分方程組的特解。
5.求解常微分方程,,,的特解,并做出解函數的曲線圖。
6.完成實驗報告。
總結
以上是生活随笔為你收集整理的非线性常微分方程组 matlab,matlab常微分方程和常微分方程组求解.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java tate只要年月日,Java初
- 下一篇: 牙齿矫正时牙齿会松动吗