Trying to do central difference using for loop, getting error

1 visualización (últimos 30 días)
m=1;
k=1;
c=1;
x(2)=0;
dx=1;
d2x=-1;
h=0.5;
for i=2:0.1:20
x(i-1)=x(i)-h*dx+(h/2)*d2x;
x(i+1)=(1/(m/h^2)+(c/2*h))*((2*m/h^2-k).*x(i)+(c/2*h-m/h^2).*x(i-1));
end
plot(x)
what is wrong with my code, I am getting an error Subscript indices must either be real positive integers or logicals. As you can see I am trying to get a plot of x(i+1) which depends on x(i) and x(i-1), thanks
appreciate all the help
  1 comentario
Jan
Jan el 6 de Dic. de 2016
I've formatzted your code using the "{} Code" button. You can do this by your own also.

Iniciar sesión para comentar.

Respuesta aceptada

David Barry
David Barry el 6 de Dic. de 2016
You must index into an array/matrix with integer values. In your case you are trying to index into variable x with the variable i but you have asked for i to range from 2 to 20 in 0.1 steps. What are you expecting x(2.1) to give for example?
  1 comentario
Ismail khalil
Ismail khalil el 6 de Dic. de 2016
I have done this and got an a run indeed, but the answer was very different in value than I expected, but I guess you solved my error, thanks

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by