Matlab仿真对行星运动

4视图(30天)
Niklas Kurz
Niklas Kurz 2022年3月16日
评论道: Niklas Kurz2022年3月17日
已经有一些尝试模拟行星运动,但我认为我是直接通过求解 和更新位置通过 与欧拉克罗默方法:
t = 0;
t < 10
pos1 = (1 2 3);
pos2 = (4 5 6);
m1 = 1;
m2 = 2;
G = 1;
r1 = pos1-pos2;
r2 = pos2-pos1;
F1 m1 = G * *平方米/规范(r1) ^ 2。* r1 /规范(r1);
F2 m1 = G * *平方米/规范(r2) ^ 2。* r2 /规范(r2);
dt = 0.1;
p1 = (100 0);
p2 = (100 0);
p1 = p1 + F1。* dt;
p2 = p2 + F2。* dt;
pos1 = pos1 + p1 / m1;
pos2 = pos2 + p2 /平方米;
t = t + dt;
持有所有;
pos1 plot3 (pos1 (1) (2), pos1 (3),“处方”)
pos2 plot3 (pos2 (1) (2), pos2 (3),“软”)
结束
但是我真的不接收多个数据点的情节,剩余2穿过静止的。我也得到一个二维图,即使我回归 plot3
1评论
KSSV
KSSV 2022年3月16日
您可以将它更改为3 d 视图
pos1 plot3 (pos1 (1) (2), pos1 (3),“处方”)
pos2 plot3 (pos2 (1) (2), pos2 (3),“软”)
视图(3)

登录置评。

接受的答案

詹姆斯Tursa
詹姆斯Tursa 2022年3月16日
位置和速度的初始条件需要 前循环,循环条目。

答案(1)

KSSV
KSSV 2022年3月16日
t = 0;
m1 = 1;
m2 = 2;
G = 1;
pos01 = (1 2 3);
pos02 = (4 5 6);
pos1 = 0 ([], 3);
pos2 = 0 ([], 3);
iter = 0;
t < 10
iter = iter + 1;
r1 = pos01-pos02;
r2 = pos02-pos01;
F1 m1 = G * *平方米/规范(r1) ^ 2。* r1 /规范(r1);
F2 m1 = G * *平方米/规范(r2) ^ 2。* r2 /规范(r2);
dt = 0.1;
p1 = (100 0);
p2 = (100 0);
p1 = p1 + F1。* dt;
p2 = p2 + F2。* dt;
:pos1 (iter) = pos01 + p1 / m1;
:pos2 (iter) = pos02 + p2 /平方米;
:pos01 = pos1 (iter);
:pos02 = pos2 (iter);
t = t + dt;
结束
持有
plot3 (pos1 (: 1) pos1 (:, 2), pos1 (:, 3),“处方”)
plot3 (pos2 (: 1) pos2 (:, 2), pos2 (:, 3),“软”)
视图(3)
1评论
Niklas Kurz
Niklas Kurz 2022年3月17日
这看起来对我更好的关于数量的点。然而仍有一些奇怪的编码绕。即使它应该等于我从Glowscript同化的代码:
G = 1
明星=球(pos =向量(0,0,0),半径= 0.2,=颜色。黄色,质量= 1000,动量=向量(0,0,0),make_trail = True)
计划=球(pos =向量(1,0,0),半径= 0.5,=颜色。蓝色,质量= 1,动量向量(0 30 0)=,make_trail = True)
(正确):
率(500)
r_star =明星。pos - plan.pos
r_plan =计划。pos - star.pos
明星。力= - g * star.mass * plan.mass / (mag (r_star) * * 2) * (r_star) / mag (r_star)
计划。力= - g * star.mass * plan.mass / (mag (r_plan) * * 2) * (r_plan) / mag (r_plan)
明星。动量=明星。动力+明星。力* dt
计划。动量=计划。动力+计划。力* dt
明星。pos =明星。pos + star.momentum /明星。质量* dt
计划。pos =计划。pos + plan.momentum /计划。质量* dt
t = t + dt

登录置评。

类别

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

标签

社区寻宝

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

开始狩猎!