MATLAB: Array indices must be positive integers or logical values error , for the t(i) ,why

logical?MATLABvalues error

hi im working in a RK45 method and im gettin Array indices must be positive integers or logical values error , for my t(i), already try changing the initial state of t and same error.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [xk_1 , yk_1 , zk_1, t] = RK452(x0,y0,z0,a,b,c,d,tol)
h = 0.01183156389;
%RK452(-1.6,0,1.6,15,25.58,-0.7142857,-1.1428571,0.0000000001);
time=0;
t=0;
s=1;
i=0;
xk_1=[];
yk_1=[];
zk_1=[];
%%for t = 1:time:100
while (time<=100);
x=x0;
y=y0;
z=z0;
dx = a*y-a*x-a*(c*x+(1./2)*(d-c)*(abs(x+1)-abs(x-1)));
dy = x-y-z;
dz = -b*y;
k1x = h*dx;
k1y =h*dy;
k1z =h*dz;
clear dx dy dz x y z
x=x0+(1./4)*k1x;
y=y0+(1./4)*k1y;
z=z0+(1./4)*k1z;
dx = a*y-a*x-a*(c*x+(1./2)*(d-c)*(abs(x+1)-abs(x-1)));
dy = x-y-z;
dz = -b*y;
k2x =h*dx;
k2y =h*dy;
k2z =h*dz;
clear dx dy dz x y z
x=x0+(3./32)*k1x +(9./32)*k2x;
y=y0+(3./32)*k1y +(9./32)*k2y;
z=z0+(3./32)*k1z +(9./32)*k2z;
dx = a*y-a*x-a*(c*x+(1./2)*(d-c)*(abs(x+1)-abs(x-1)));
dy = x-y-z;
dz = -b*y;
k3x =h*dx;
k3y =h*dy;
k3z =h*dz;
clear dx dy dz x y z
x=x0+(1932./2197)*k1x -(7200./2197)*k2x+(7296./2197)*k3x;
y=y0+(1932./2197)*k1y -(7200./2197)*k2y+(7296./2197)*k3y;
z=z0+(1932./2197)*k1z -(7200./2197)*k2z+(7296./2197)*k3z;
dx = a*y-a*x-a*(c*x+(1./2)*(d-c)*(abs(x+1)-abs(x-1)));
dy = x-y-z;
dz = -b*y;
k4x =h*dx;
k4y =h*dy;
k4z =h*dz;
clear dx dy dz x y z
x=x0+(439./216)*k1x- 8*k2x -(3680./513)*k3x+(845./4104)*k4x;
y=y0+(439./216)*k1y- 8*k2y -(3680./513)*k3y+(845./4104)*k4y;
z=z0+(439./216)*k1z- 8*k2z -(3680./513)*k3z+(845./4104)*k4z;
dx = a*y-a*x-a*(c*x+(1./2)*(d-c)*(abs(x+1)-abs(x-1)));
dy = x-y-z;
dz = -b*y;
k5x =h*dx;
k5y =h*dy;
k5z =h*dz;
clear dx dy dz x y z
x=x0-(8./27)*k1x+ 2*k2x -(3544./2565)*k3x+(1859./4104)*k4x-(11./40)*k5x;
y=y0-(8./27)*k1y+ 2*k2y -(3544./2565)*k3y+(1859./4104)*k4y-(11./40)*k5y;
z=z0-(8./27)*k1z+ 2*k2z -(3544./2565)*k3z+(1859./4104)*k4z-(11./40)*k5z;
dx = a*y-a*x-a*(c*x+(1./2)*(d-c)*(abs(x+1)-abs(x-1)));
dy = x-y-z;
dz = -b*y;
k6x =h*dx;
k6y =h*dy;
k6z =h*dz;
xk_1(i+1)= x0 + (25./216)*k1x + (1408./2565)*k3x + (2197./4101)*k4x- (1./5)*k5x;
yk_1(i+1)= y0 + (25./216)*k1y + (1408./2565)*k3y + (2197./4101)*k4y- (1./5)*k5y;
zk_1(i+1)= z0 + (25./216)*k1z + (1408./2565)*k3z + (2197./4101)*k4z- (1./5)*k5z;
%para el paso
%pasos diferentes para cada caso
% si se calcula un paso para cada variable
x5k_1(i+1)=x0 +(16./135)*k1x+(6656./12.825)*k3x+(28.561./56.430)*k4x-(9./50)*k5x+(2./55)*k6x;
y5k_1(i+1)=y0 +(16./135)*k1y+(6656./12.825)*k3y+(28.561./56.430)*k4y-(9./50)*k5y+(2./55)*k6y;
z5k_1(i+1)=z0 +(16./135)*k1z+(6656./12.825)*k3z+(28.561./56.430)*k4z-(9./50)*k5z+(2./55)*k6z;
clear s
s1 = 0.84*(tol*h./abs(x5k_1 - xk_1));
s2 = 0.84*(tol*h./abs(y5k_1 - yk_1));
s3 = 0.84*(tol*h./abs(z5k_1 - zk_1));
if s1<s2
s4=s1;
else
s4=s2;
end
if s4 < s3
s=s4;
else
s=s3;
end
% x_k = [x_rk];
% y_k = [y_rk];
% z_k = [z_rk];
b = t(i);
%el t(i) presenta el siguiente error Array indices must be positive integers or logical values.
A=[xk_1(i+1);yk_1(i+1);zk_1(i+1)];
clear x0 y0 z0
x0=xk_1(i+1);
y0=yk_1(i+1);
z0=zk_1(i+1);
t(i+1) = b+s*h;
clear s1 s2 s3 s4
time=t(i+1);
end
%A = [xk_1(i+1)' yk_1(i+1)' zk_1(i+1)'];
disp(xk_1(i));
disp(yk_1(i));
disp(zk_1(i));
display(A);

Best Answer

You initialize t=0 and i=0 . You store into some arrays indexed at (i+1), which is valid because 0+1 = 1 is a valid subscript. But then you get to b=t(i) and i is still 0 so you are trying to index t at location 0.