声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2390|回复: 2

[计算数学] matlab编程求助,龙格库塔过程中加入条件

[复制链接]
发表于 2017-6-15 10:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
各位前辈,matlab编程求助,关于碰撞振动的。
g(1)=0.02;
g(2)=0.02;
u=0.02;
odefunhdb = @(t,y)[y(2); (-2*g(1)*y(2)-y(1)+2*u*g(2)*(y(4)-y(2))+u*(y(3)-y(1))+cos(t));...
y(4); (-2*g(2)*(y(4)-y(2))-(y(3)-y(1)))];%把动力学方程中的二阶微分换成一阶
h = 0.05;  t = (0:h:100)'; y = zeros(length(t),4); y(1,:)=[0,0,0,0];%参数设置与初值
for n = 1:length(t)-1
       k1 = odefunhdb(t(n),y(n,:)');
       k2 = odefunhdb(t(n)+h/2,y(n,:)'+h/2*k1);
       k3 = odefunhdb(t(n)+h/2,y(n,:)'+h/2*k2);
       k4 = odefunhdb(t(n)+h,y(n,:)'+h*k3);
       y(n+1,:) = y(n,:)+h/6*(k1+2*k2+2*k3+k4)';

end

plot(t,y(:,1))
这是没有发生碰撞时的动力学方程编程,现需要加入一个发生碰撞的条件,当在循环过程中满足y(3)-y(1)=0.8+1e-4时,有
y(2)+=0.9765*y(2)-+0.235*y(4)-
y(4)+=1.1765*y(2)--0.1765*y(4)-
其中+表示变化后的,-表示变化之前,然后用此刻的y(1),y(2)+,y(3),y(4)+作为初始条件继续在龙格库塔计算中循环,最后需要得到所有的y(1)
回复
分享到:

使用道具 举报

发表于 2017-6-15 13:23 | 显示全部楼层
if else or 语句
 楼主| 发表于 2017-6-15 19:38 | 显示全部楼层

求具体指导一下
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-19 13:40 , Processed in 0.066903 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表