Array indices must be positive integers or logical values.

1 visualización (últimos 30 días)
tFinal = 2;
N = 33;
h=tFinal/N;
t=linspace(0,tFinal,N+1);
y=zeros(1,N+1);
yExact=9./(3*t-1+10*exp(t*-3));
y(0) = 1;
for n=1:N
y(n+1) = y(n) + h * y(n)*(3-t(n)*y(n));
end
plot(t,y,'-'); xlabel('t'); ylabel('y'); title('2nd Part') ;
hold all
plot(t,yExact,'bx');
error100= abs(y(N+1)-yExact(N+1));
fprintf('The error of N equaling 33 is %f.\n',error100);
Array indices must be positive integers or logical values.
  1 comentario
Walter Roberson
Walter Roberson el 4 de Oct. de 2019
Shubham Gupta is correct: 0 is not a permitted index. You need to add 1 to every index operation of y that you have.
y(0+1) = 1;
y(n+1+1) = y(n+1) + h * y(n+1)*(3-t(n)*y(n+1));
... You will find, by the way, that you fail to assign a value to what was y(1) in your notation.

Iniciar sesión para comentar.

Respuesta aceptada

Shubham Gupta
Shubham Gupta el 4 de Oct. de 2019
Editada: Shubham Gupta el 4 de Oct. de 2019
y(0) = 1; % y(i) = k; i must be a natural number
Not allowed in MATLAB.
Instead write
y(1) = 1;
  2 comentarios
Walter Roberson
Walter Roberson el 4 de Oct. de 2019
If you start n at 2, then the loop will access y(n) which is y(2) but y(2) has not been assigned.
What the user probably wants is to start n at 1 like it is now.
Shubham Gupta
Shubham Gupta el 4 de Oct. de 2019
Thanks for pointing out my mistake. I have edited the answer accordingly

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by