Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-09-19, 21:36   #1
leek008
初级会员
 
注册日期: 2008-09-18
年龄: 41
帖子: 2
声望力: 0
leek008 正向着好的方向发展
问题 帮忙挑错误

主程序
y0=[0;0;0;0];t0=0;tf=3;t=[t0,tf];
while t0<=tf
if y0(1)<=0
[t,y]=ode45('contacty',t,y0);
n=length(y(:,1));
for i=1:n;
B=y(i,1);
if B>0
break
end
end
plot(t(1:i),y(1:i,1))
hold on
t0=t(i);y0=[y(i,1);y(i,2);y(i,3);y(i,4)];
else
[t,y]=ode45('jumpy',t,y0);
n=length(y(:,1));
for i=1:n;
B=y(i,1);
if B<=0
break
end
end
plot(t(1:i),y(1:i,1))
hold on
t0=t(i),y0=[y(i,1);y(i,2);y(i,3);y(i,4)];
end
end
m函数
function dydt=contacty(t,y)
dydt=[y(2);(20000*sin(40*t)-200*y(2)-4040000*y(1)+100*y(4)+3200000*y(3))/100;y(4);(-100*y(4)-3200000*y(3)+100*y(2)+3200000*y(1))/100];

function dydt=jumpy(t,y)
dydt=[y(2);(2000*sin(40*t)-1000-100*y(2)-840000*y(1)+100*y(4)+840000*y(3))/100;y(4);(100*y(2)+840000*y(1)-100*y(4)-840000*y(3))/100];
leek008 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 13:54


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.