MATLAB
作业5
1、 试求解下面微分方程的通解以及满足x(0)?1,x(?)?2,y(0)?0条件下的解析解。
????(t)?4x(t)?3y(t)?e?6tsin(4t)x(t)?5x ? ?6t??2y(t)?y(t)?4x(t)?6x(t)?ecos(4t)?解:
>> syms t x y;
>>[x,y]=dsolve('D2x+5*Dx+4*x+3*y=exp(-6*t)*sin(4*t)',
'2*Dy+y+4*Dx+6*x=exp(-6*t)*cos(4*t)','x(0)=1','x(pi)=2','y(0)=0');vpa(x,20)
ans =
.24816266536011758942e-1*exp(-6.*t)*cos(4.*t)-.16682998530132288094e-1*exp(-6.*t)*sin(4.*t)+.85861668591377882749e-1*exp(t)-.57658489325155296910e-1*exp(-5.1374586088176874243*t)+.94698055419776565523*exp(-1.3625413911823125757*t) >>vpa(y,20) ans =
-.10607545320921117099*exp(-6.*t)*cos(4.*t)+.68348848603625673689e-1*exp(-6.*t)*sin(4.*t)-.28620556197125960916*exp(t)+.90450561852315609427e-1*exp(-5.1374586088176874243*t)+.30183045332815517077*exp(-1.3625413911823125757*t) 2、 Lotka-Volterra扑食模型方程为??(t)?4x(t)?2x(t)y(t)?x,且初值为x(0)?2,y(0)?3,
?(t)?x(t)y(t)?3y(t)?y试求解该微分方程,并绘制相应的曲线。
解:
>>syms x y t;
>> f=inline('[4*x(1)-2*x(1)*x(2); x(1)*x(2)-3*x(2)]','t','x'); >> [t,x]=ode45(f,[0,10],[2;3]);plot(t,x)
3、 是给出求解下面微分方程的MATLAB命令,
???t2yy?2?e?ty,y(3)?tyy?(0)???(0)?0 y(0)?2,yy并绘制出y(t)曲线。试问该方程存在解析解吗?选择四阶定步长Runge-Kutta算法求解该方程时,步长选择多少可以得出较好的精度,MATLAB语言给出的现成函数在速度、精度上
进行比较。 解:
>> f=inline('[x(2); x(3); -t^2*x(1)*x(2)-t^2*x(2)*x(1)^2+exp(-t*x(1))]','t','x'); [t,x]=ode45(f,[0,10],[2;0;0]); >> plot(t,x)
4、 试用解析解和数值解的方法求解下面的微分方程组
????(t)?e?5t,x(t)??2x(t)?3x??(t)?4y?(t)?sint,y(t)?2x(t)?3y(t)?4x????(0)?2x(0)?1,x
?(0)?4y(0)?3,y解:
解析解:
>> syms t x y;
[x,y]=dsolve('D2x=-2*x-3*Dx+exp(-5*t)','D2y=2*x-3*y-4*Dx-4*Dy-sin(t)','x(0)=1','Dx(0)=2','y(0)=3','Dy(0)=4') x =
1/12*exp(-5*t)-10/3*exp(-2*t)+17/4*exp(-t) y =
-265/16*exp(-t)-71/5*exp(-3*t)+11/48*exp(-5*t)+100/3*exp(-2*t)+51/4*exp(-t)*t+1/5*cos(t)-1/10*sin(t) 数值解:
>> f=inline('[x(2); -2*x(1)-3*x(2)+exp(-5*t); x(4); 2*x(1)-3*x(3)-4*x(2)-4*x(4)-sin(t)]','t','x'); [t1,x1]=ode45(f,[0,10],[1;2;3;4]); ezplot(x,[0,10]), line(t1,x1(:,1))
figure; ezplot(y,[0,10]), line(t1,x1(:,3))
5、 下面的方程在传统微分方程教程中经常被认为是刚性微分方程。使用常规微分方程解法
和刚性微分方程解法分别求解这个微分方程的数值解,并求出解析解,用状态变量曲线比较数值求解的精度。
1?&y?9y?24y?5cost?sint,12??13?1?y&??24y?51y?9cost?sint,212?3?y1(0)?13 2y2(0)?3解:
>> syms t y1 y2; >>
[y1,y2]=dsolve('Dy1=9*y1+24*y2+5*cos(t)-1/3*sin(t)','Dy2=-24*y1-51*y2-9*cos(t)+1/3*sin(t)','y1(0)=1/3','y2(0)=2/3')
y1 =2/(3*exp(3*t)) - 2/(3*exp(39*t)) + cos(t)/3 y2 =4/(3*exp(39*t)) - 1/(3*exp(3*t)) - cos(t)/3