Does anyone had this plotting problem with MATLAB?

Click For Summary

Discussion Overview

The discussion revolves around a MATLAB plotting issue encountered while simulating an orbit using a Runge-Kutta method for numerical integration. Participants are exploring the behavior of the plot, specifically an unwanted line from the origin to the starting point of the orbit during the simulation.

Discussion Character

  • Technical explanation, Debate/contested, Exploratory

Main Points Raised

  • The original poster describes their MATLAB code for an orbit propagator and notes that an extra line from the origin appears during plotting.
  • One participant suggests that the assignment of y(:,i+1) may be causing an issue due to exceeding the dimensions of the array y, asking for clarification on where the zero point appears in the array.
  • The original poster confirms that the zero point is at y(:, tspan(end)/h).
  • Another participant recommends increasing the initialization dimension of y to prevent assignments beyond its current size, proposing a potential fix for the issue.
  • The original poster reports that the issue persists despite the suggested changes.

Areas of Agreement / Disagreement

Participants are exploring potential causes for the plotting issue, but no consensus has been reached on a definitive solution. Multiple viewpoints and suggestions are presented, indicating ongoing uncertainty.

Contextual Notes

There may be limitations related to the handling of array dimensions in MATLAB, as well as the specific behavior of the plot function during the Runge-Kutta loop. These aspects remain unresolved in the discussion.

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: 619
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 ·
Replies
4
Views
2K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 18 ·
Replies
18
Views
4K
  • · Replies 2 ·
Replies
2
Views
4K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 4 ·
Replies
4
Views
2K
Replies
2
Views
3K