You have a six element state vector. The y(1) and y(2) coming into your derivative function are not position and velocity vectors, they are the x and y position elements. It would probably be easier to write a short function for the derivative because of the calculations involved:
function dy = gravity(y,mu)
R = y(1:3);
V = y(4:6);
Rmag = norm(R);
RDOT = V;
VDOT = -mu * R / Rmag^3;
dy = [RDOT;VDOT];
end
Then call ode45 with a function handle that passes y and mu to the gravity function:
[ts,ys] = ode45(@(t,y)gravity(y,mu),tspan,ic);
ode45 isn't well suited for the orbit problem. You may have to use odeset( ) to create some tight tolerances to pass in to ode45 to get good results.
Best Answer