求解微分方程的MATLAB命令

来源:百度知道 编辑:UC知道 时间:2024/06/07 20:47:00
请给出求解微分方程的MATLAB命令
y^(3) + t*y1*y2 + t^2*(y1)*y^2 =e^(-ty) , y(0)=2 ,y1(0)=y2(0)=0
并且绘制出y(t)的曲线.

【上式中 ,y(3)中(3)的位置我从书上看处于幂的位置.但是为什么要加一个括号啊?所以我下不了手】

麻烦大家帮我个忙..谢谢了.
谢谢wacs5耐心解释.
y1 ,y2 书上没加括号的.只有y(3)加了括号的.

syms t y; %声明符号变量
dsolve('D3y+t*y1*y2+t^2*y1*y2^2=exp(-t*y)','y(0)=2','Dy(0)=0','D2y(0)=0')
figure;plot3(y(:,1),y(:,2),y(:,3))

由于我是新手,我是模仿书上一步一步来写的.望您指正.感谢

那y1,y2呢?
那个在y(3)是y的三次导的意思。
上面所有的y1,y2我认为也是求导的意思(你有一些没有加括号)

Dsolve('D3y+t*Dy*D2y+t^2*Dy*y^2=exp(-t*y)','y(0)=2','Dy(0)=0','D2y(0)=0')
但是没有精确解。
你可以做数值解,

下面做数值解:
在Matlab下输入:edit zhidao_rk4_4.m,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function dydt=zhidao_rk4_4(t,y)
%y,y的一阶导,二阶导变量分别用y(1),y(2),y(3)表示
dydt=[y(2);y(3);exp(-t*y(1))-t*y(2)*y(3)-t^2*y(2)*y(1)^2];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab下面输入:
t_end=10;
x0=[0;0;0];
[t,y]=ode45('zhidao_rk4_4',[0,t_end],x0);
plot(t,y(:,1));
xlabel('t');
ylabel('y');