MATLAB: Error with calling out ODE Function for the Code

ode

Hi All,
I'm trying to get my code to run. It's supposed to call out my odefun1 function and use it for the ODE113 solver. But I'm getting an error stating:
Undefined function 'X_0' for input arguments of type 'double'.
Error in odefun1 (line 3) x_1 = X_0(1);
Error in odearguments (line 88) f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode113 (line 114) [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, …
Error in HW4 (line 11) [t,y] = ode113(@odefun1, tspan, X_0); %calls ODE113
My function file is saved as odefun1.m with the following code: function ydot = odefun1(t,y)
x_1 = X_0(1);
y_1 = X_0(2);
z_1 = X_0(3);
x_2 = X_0(4);
y_2 = X_0(5);
z_2 = X_0(6);
mu = 0.012; %mass ratio for Earth-Moon System
r_1 = sqrt((x_1+mu)^2 + y_1^2 + z_1^2);
r_2 = sqrt((x_1-1+mu)^2 + y_1^2 + z_1^2);
ydot(1,1) = x_2;
ydot(2,1) = y_2;
ydot(3,1) = z_2;
ydot(4,1) = x_1-((1-mu)*(x_1+mu)/r_1^3)-(mu*(x_1-1+mu)/r_2^3)+(2*y_2);
ydot(5,1) = y_1-((1-mu)*y_1/r_1^3)-(mu*y_1/r_2^3)-(2*x_2);
ydot(6,1) = -((1-mu)*z_1/r_1^3)-(mu*z_1/r_2^3);
I tried calling it from another mfile using:
t_0 = 0;
t_f = 5.906784808167686;
tspan = [t_0 t_f]; %time span to integrate over
X_0 = [0.999970555399038; -0.000035183036743; 0; 0.339376400085973; -0.243910167049855; 0]; %initial condition
[t,y] = ode113(@odefun1, tspan, X_0); %calls ODE113
but errors keep popping up. I'm not sure what's wrong. Any help is appreciated!

Best Answer

Change the first line of your function file declaration to:
function ydot = odefun1(t,X_0)
and your code works. I leave it to you to determine if it gives the correct result.