Home > Software engineering >  Plot two-dimensional array as elliptical orbit
Plot two-dimensional array as elliptical orbit

Time:05-01

I am attempting to plot an elliptical orbit based on a 2-D position array, beginning at p= [5 0]. The plot charts positions from a timeframe t, here between 0 and 100. The calculation uses the formula F = -(p/||p||)(m*M/(p^2) to approximate acceleration and velocity. The result should look like the following: enter image description here

This is my current code. It plots a completely different shape. Is the problem in my way of interpreting the force equation?

Any other help and comments are much appreciated.

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

enter image description here

CodePudding user response:

You want p(1) in the x axis and p(2) in the y axis, with t as a parameter. So you need to replace the two plot lines by plot(p(1),p(2),'o','MarkerSize',0.5); (keeping 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

enter image description here

  • Related