MATLAB Does anyone had this plotting problem with MATLAB?

AI Thread Summary
The discussion centers on a MATLAB implementation of an orbit propagator using the Runge-Kutta method. The user has successfully set up the simulation but encounters an issue where an unwanted line from the origin to the current position is plotted during the simulation. This line disappears after the simulation completes, leaving only the intended orbital path. The problem may stem from the assignment of values in the array 'y', specifically the index exceeding its defined dimensions. A suggestion is made to increase the initialization of 'y' to accommodate an extra dimension, potentially resolving the plotting issue. The conversation emphasizes the importance of ensuring that array dimensions match the expected range to avoid unintended behavior in the plot.
Cassius1n
Messages
13
Reaction score
0
I have finsihed my work on an orbit propagator in MATLAB and now I'm trying to simulate the orbit with the help of the main script.

tspan=[0 :860];

Position and velocity
y0(1,1)= 743322.3616 ;
y0(2,1)= -6346021.219 ;
y0(3,1)= -3394131.349 ;
y0(4,1)= 5142.38067;
y0(5,1)= 4487.44895 ;
y0(6,1)= -7264.00872;

%%%% Mass(kg) /surface(m^2)

m = 217 ; %320;
A = 1.2; %8;

%%%% RK4

h=1;
y = zeros(6, tspan(end)/h);
y(:,1) = y0;

for i=1:1:(tspan(end)/h)

H=sqrt(y(1,i)^2+y(2,i)^2+y(3,i)^2);
k_1 = proiectia(tspan(i), y(:,i), H, m, A, y(4:6, i));
k1=k_1;
k_2 = proiectia(tspan(i)+0.5*h, y(:,i)+0.5*h*k_1, H, m, A, y(4:6, i));
k2=k_2;
k_3 = proiectia((tspan(i)+0.5*h), (y(:,i)+0.5*h*k_2), H, m, A, y(4:6, i));
k3=k_3;
k_4 = proiectia((tspan(i)+h),(y(:,i)+k_3*h), H, m, A, y(4:6, i));
k4=k_4;

y(:,i+1) = (y(:,i) + (1/6)*(k1+2*k2+2*k3+k4)*h);
plot3(y(1,:),y(2,:),y(3,: ));
drawnow

end
prp.png

The orbit is well described but it keeps drawing an extra line from 0 to where the point(x,y,z) is .After all the values are being represented, the line from 0 dissapears and it only remains the curved line(the orbit). Does anyone have any ideea why does it plot that line from 0 while is on the Runge Kutta loop?
 

Attachments

  • prp.png
    prp.png
    3.7 KB · Views: 587
Physics news on Phys.org
It bothers me that your assignment of y(:,i+1) = (y(:,i) + (1/6)*(k1+2*k2+2*k3+k4)*h); assigns one beyond the second dimension, tspan(end)/h, of y. Maybe that is causing a problem at the end of the plot of y. It would help us if you can tell us which end of y that zero point is. Is it at y(:,1) or at y(: tspan(end)/h)?
 
That would be at at y(: tspan(end)/h).
 
Just as a quick test, you should increase the initialization dimension of y to y = zeros(6, tspan(end)/h + 1); and see if that solves anything. You are making an assignment beyond the current dimension.
 
It's still plotting with the line from 0.
 

Similar threads

Replies
4
Views
1K
Replies
5
Views
2K
Replies
18
Views
4K
Replies
8
Views
2K
Replies
2
Views
3K
Replies
1
Views
3K
Replies
4
Views
2K
Back
Top