MATLAB: Am trying to plot (x1,t) for the start however am getting an error, i need help with this i have been editing the code for the past two days.

storing arrayswhile loop

Cc=6.6; %AH
C=6.6*3600; %AS
t=0;
k=1;
x1(k)=1;
disp(x1(k));
disp(t);
Rseries_x1(k)=0.1562*exp(-24.37*x1(k))+0.07446;
Rtransients_x1(k)=0.3208*exp(-29.14*x1(k))+0.04669;
Ctransients_x1(k)=-752.9*exp(-13.51*x1(k))+703.6;
Rtransientl_x1(k)=6.603*exp(-155.2*x1(k))+0.04984;
Ctransientl_x1(k)=-6056*exp(-27.12*x1(k))+4475;
E0_x1(k)=-1.031*exp(-35.*x1(k))+3.685+0.2156*x1(k)-0.1178*x1(k)^2+0.3201*x1(k)^3;
x2(k)=0;
x3(k)=0;
deltat=1;
t=t+1;
k=k+1;
x1(k) =1;
while x1(k) >= 0
x1(k)=(-deltat*1/C)+x1(k-1);
disp(x1(k));
disp(t);
Rseries_x1(k)=0.1562*exp(-24.37*x1(k))+0.07446;
Rtransients_x1(k)=0.3208*exp(-29.14*x1(k))+0.04669;
Ctransients_x1(k)=-752.9*exp(-13.51*x1(k))+703.6;
Rtransientl_x1(k)=6.603*exp(-155.2*x1(k))+0.04984;
Ctransientl_x1(k)=-6056*exp(-27.12*x1(k))+4475;
E0_x1(k)=-1.031*exp(-35.*x1(k))+3.685+0.2156*x1(k)-0.1178*x1(k)^2+0.3201*x1(k)^3;
x2(k)=x2(k-1)+(deltat*x2(k-1))/(Rtransients_x1(k)*Ctransients_x1(k))+deltat/Ctransients_x1(k);
x3(k)=x3(k-1)+(deltat*x3(k-1))/(Rtransientl_x1(k)*Ctransientl_x1(k))+deltat/Ctransientl_x1(k);
t=t+deltat;
k=k+1;
disp('******************');
end
plot(x1,t);

Best Answer

You have
while x1(k) >= 0
...
k = k + 1;
...
end
Suppose that none of the x1 values happen to be negative, then because you always increment k you are going to eventually run off the end of the array.
Related Question