将二维数组绘制为椭圆轨道

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