请问老师这个题用matlab怎么做? 20
题主给出的二阶微分方程组,用matlab求解其精确解和数值解,可以使用dsolve()函数得到其解析值,使用ode()函数得到其数值解。
一、使用dsolve()函数求解
第一步,对x(t)、y(t)进行声明变量,即
syms x(t) y(t)
第二步,使用diff()函数分别对x(t)、y(t)进行导数计算
Dy=diff(y,t,1);D2y=diff(y,t,2);
Dx=diff(x,t,1);D2x=diff(x,t,2);
第三步,使用dsolve()函数,求其解析解
S=dsolve(D2y-D2x+Dx-y==exp(t)-2,2*D2y-D2x-2*Dy+x==-t,x(0)==0,Dx(0)==0,y(0)==0,Dy(0)==0);
x=S.x,y=S.y
第四步,使用plot()函数,绘出解析解的曲线图
plot(t,x,'r*',t,y,'kp')
二、使用ode45()函数求解
第一步,自定义微分方程组函数,odefun(t,x)
第二步,根据初始条件,确定x0的初始值,即
x0=[0;0;0;0];
第三步,确定时间t的范围,如
tspan=[0 5];
第四步,使用ode45求解其数值解
[t,x]=ode45(@odefun,tspan,x0);
第五步,使用plot()函数,绘出解析解的曲线图
plot(t,x(:,1),'b-',t,x(:,3),'m-')
完善代码后运行可以得到如下结果。