24小时热门版块排行榜    

查看: 332  |  回复: 0

可乐不提神

新虫 (小有名气)

[求助] 求解二元微分方程组

请看我写的主函数:
clc;
clear;
tp=0.1;
n=5;
ttp=tp/n;
tspan=[0:ttp:tp];
y0=[0,4.5,0,4.5]';
[t y]=ode45(@myfunn,tspan,y0);
plot(4.5*t/0.075,y(:,4)/4.5);
下面是myfunn子函数的代码:
function dy=myfunn(t,y)
dy=zeros(4,1);
Hf=0.075;
M2=80;
k=353.33*353.33*M2;
c=0.2*2*(k*M2)^0.5;
Mf=M2/50;
A=Mf/(2700*Hf);
M1=250*Mf;
ee=y(1)/Hf;
Y=0;
if y(1)>=Y
      p=3.5e6+0.6e6*ee/(1-ee)^2;
else
     p=0 ;
end
     dy(1)=y(2);
     dy(2)=c/M1*(y(4)-y(2))+k/M1*(y(3)-y(1))-A*p/M1+9.8;
     dy(3)=y(4);
     dy(4)=-c/M2*(y(4)-y(2))-k/M2*(y(3)-y(1))+9.8;
end
if y(1)>=Y
         Y=y(1);
     else
         Y=Y;
     end
我的问题来了,如下:
在这个微分方程中,p值是随y(1)的变化而变化的。假如在第t步计算中,y(1)>Y则p=3.5e6+0.6e6*ee/(1-ee)^2;当y(1)<Y时,p=0。然后计算(t+1)步的y(1)值。把(t+1)步的y(1)和Y对比。当y(1)>Y,则用y(1)替换Y。我写的代码中每步的Y初始值都是0开始,但是每一次y(1)与Y对比之后,Y的值有可能发生变化。而且我的代码中y(1)在每一次调用子函数的过程中都是不变的。
请问怎么解决?
回复此楼
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 可乐不提神 的主题更新
信息提示
请填处理意见