将二维数组绘制为椭圆轨道
Plot two-dimensional array as elliptical orbit
我正在尝试绘制基于二维位置数组的椭圆轨道,从 p= [5 0]
开始。该图绘制了时间范围 t
的位置,此处介于 0 和 100 之间。计算使用公式 F = -(p/||p||)(m*M/(p^2) 来近似加速度和速度。结果应如下所示:
这是我当前的代码。它绘制了一个完全不同的形状。我解释力方程的方式有问题吗?
非常感谢任何其他帮助和评论。
t = 0; p = [50 0]; v = [0 8]; %Initial conditions
dt = 0.05;
M = 10000; m= 1;
tmax = 100;
figure, hold on
d = 0.001
clf;
while t < tmax
F = -(p./norm(p)).*(m*M./(p*p'));
a = F./m - d*v;
v = v + a*dt;
p = p + v*dt;
t = t + dt;
plot(p(1),t,'o','MarkerSize',0.5);
hold on;
plot(p(2),t,'o','MarkerSize',0.5);
end
你想要 x 轴上的 p(1)
和 y 轴上的 p(2)
,t
作为参数。所以你需要用 plot(p(1),p(2),'o','MarkerSize',0.5);
替换两个 plot
行(保持 hold on
):
t = 0; p = [50 0]; v = [0 8]; %Initial conditions
dt = 0.05;
M = 10000; m= 1;
tmax = 100;
figure, hold on
d = 0.001
clf;
while t < tmax
F = -(p./norm(p)).*(m*M./(p*p'));
a = F./m - d*v;
v = v + a*dt;
p = p + v*dt;
t = t + dt;
hold on
plot(p(1),p(2),'o','MarkerSize',0.5); %%% modified line
end
我正在尝试绘制基于二维位置数组的椭圆轨道,从 p= [5 0]
开始。该图绘制了时间范围 t
的位置,此处介于 0 和 100 之间。计算使用公式 F = -(p/||p||)(m*M/(p^2) 来近似加速度和速度。结果应如下所示:
这是我当前的代码。它绘制了一个完全不同的形状。我解释力方程的方式有问题吗?
非常感谢任何其他帮助和评论。
t = 0; p = [50 0]; v = [0 8]; %Initial conditions
dt = 0.05;
M = 10000; m= 1;
tmax = 100;
figure, hold on
d = 0.001
clf;
while t < tmax
F = -(p./norm(p)).*(m*M./(p*p'));
a = F./m - d*v;
v = v + a*dt;
p = p + v*dt;
t = t + dt;
plot(p(1),t,'o','MarkerSize',0.5);
hold on;
plot(p(2),t,'o','MarkerSize',0.5);
end
你想要 x 轴上的 p(1)
和 y 轴上的 p(2)
,t
作为参数。所以你需要用 plot(p(1),p(2),'o','MarkerSize',0.5);
替换两个 plot
行(保持 hold on
):
t = 0; p = [50 0]; v = [0 8]; %Initial conditions
dt = 0.05;
M = 10000; m= 1;
tmax = 100;
figure, hold on
d = 0.001
clf;
while t < tmax
F = -(p./norm(p)).*(m*M./(p*p'));
a = F./m - d*v;
v = v + a*dt;
p = p + v*dt;
t = t + dt;
hold on
plot(p(1),p(2),'o','MarkerSize',0.5); %%% modified line
end