模拟冲击与春天的颂歌

3视图(30天)
尤金PLANTEUR
尤金PLANTEUR 2020年3月7日
回答: 尤金PLANTEUR2020年3月10日
大家好!
我得到项目的计算和模拟两个粒子之间的冲击,使用弹簧微分方程。这是一个2维的问题,所以有八个方程来解决:
在哪里 第一个粒子的初始速度(第二个开始时不动), 是常数。但当我运行我的代码:
SystemInit =[0, 0, 30日,30日,2,2,0,0);
时间= [0100];
[t、y] =数值(@ (t, y) odefunc (t y a1、a2、K1x K1y, K2x, K2y),时间,SystemInit);
和我odefunc:
函数u = odefunc (t y a1, a2, K1x, K1y, K2x, K2y)
u = 0 (1);
u (1) = y (1);
u (2) = y (2);
u (3) = y (3);
u (4) = y (4);
u (5) = a1 * y (5) + K1x;
u (6) = a1 * y (6) + K1y;
u (7) = a2 * y (7) + K2x;
u (8) = a2 * y (8) + K2y;
结束
我得到一种指数律的所有组件y向量(2/1)除外。所以我这样做对吗?我们刚刚开始学习如何在Matlab计算微分方程,所以可能有我没能弄清楚的东西。
我希望我已经足够清晰。
13个评论
埃米尔哈姆萨
埃米尔哈姆萨 2020年3月8日
很高兴的帮助。

登录置评。

接受的答案

尤金PLANTEUR
尤金PLANTEUR 2020年3月10日
所以,我管理你得到正确的事情!不得不重新整理代码,重写一个更简单的形式的方程(我的过于复杂),从我们的老师有一些帮助,这里是:
m1 = 1; m2 = 1;%的粒子的质量
radius1 = 0.1; radius2 = 0.1;%粒子的半径
k = 10000;% Spring的僵硬参数
L0 = rayon1 + rayon2;% Spring的平衡的长度
SystemInit = [0, 0,%第一个粒子的初始位置
1 0%第二个粒子的初始位置
1、0.1%第一个粒子的初始速度
0,0];%第二个粒子的初始速度
时间= (10 0);
[t、y] =数值(@ (t, y) odefonc (t, y, m1, m2, k, 10),时间,SystemInit);
情节(y (: 1), y (:, 2),”或“y (:, 3), y (:, 4),“数据库”)
平等的
这是odefunction:
函数u = odefonc (t、y, m1, m2, k, 10)
u = 0(大小(y));
u (1) = y (5);%的速度第一个粒子沿着X轴
u (2) = y (6);%的速度第一个粒子沿着Y轴
u (3) = y (7);%的速度第二个粒子沿着X轴
u (4) = y (8);%的速度第二个粒子沿着Y轴
d =√(y (3) - y (1)) ^ 2 + ((y (4) - y (2)) ^ 2));%两个粒子间距离
a1 = (k / d * m1) * (L0-d);
a2 = (k / d * m2) * (L0-d);
如果d < L0我%。如果有接触
u (5) = a1 * (y (1) - y (3));%加速的粒子沿着X轴
u (6) = a1 * (y (2) - y (4));%加速的粒子沿着Y轴
u (7) = a2 * (y (3) - y (1));%第二个粒子沿着X轴的加速度
u (8) = a2 * (y (4) - y (2));%的加速度第二个粒子沿着Y轴
结束
结束
我策划的是粒子的轨迹。
不管怎样,谢谢你,你帮了很大的忙!

更多的答案(0)

类别

找到更多的在编程帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!