首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >二阶微分方程的matlab解法,以动力学方程为例

二阶微分方程的matlab解法,以动力学方程为例

作者头像
巴山学长
发布2021-05-31 09:59:00
发布2021-05-31 09:59:00
3.5K0
举报
文章被收录于专栏:巴山学长巴山学长

过冷水最近有接触一点点动力学的知识。作为动力学入门,当然的会解动力学方程了。于是本期过冷就教大家解动力学微分方程。

上图是两个小车通过弹簧链接起来的做来回摆动运动。应用拉克朗日方程建立系统的运动微分方程:

需要二阶微分方程组转化为一阶微分方程组:

根据得到的一阶微分方程组进行差微分求解就可以解得x1、x2随时间的变换。

采用差分法就可以得到小车的运动轨迹

具体代码是:

代码语言:javascript
复制
x_chuzh1=[0;0.2;0;0];
c1=0.1;
c2=0.4;
k1=2;
k2=3;
m1=4;
m2=6;
[t,x]=ode45('dyna',[0,50],x_chuzh1,[],m1,m2,c1,c2,k1,k2);
plot(t,x(:,4),'--b');
hold on
set(gca,'FontSize',10,'Fontname','Times New Roman');
function xp=dyna(t,x,flg,m1,m2,c1,c2,k1,k2)
xp=zeros(4,1);
xp(1)=x(2);
xp(2)=-(c1/m1)*(x(2)-x(4))-(k1/m1)*(x(1)-x(3));
xp(3)=x(4);
xp(4)=-(c1/m2)*(x(4)-x(2))-(k1/m2)*(x(3)-x(1))-(c2/m2)*x(4)-(k2/m2)*(x(3)-x(1))-(k2/m2)*x(3);
End

根据得到的,其实动力学方程本质上就是解微分方程的问题,不是很复杂,本期需要注意的是ode45函数可以直接识别自定义的方程组。根据该思路过冷水就可以尝试封闭小盒中的粒子自由运动了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档