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:
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
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