Trying to do central difference using for loop, getting error

1 vue (au cours des 30 derniers jours)
Ismail khalil
Ismail khalil le 6 Déc 2016
Commenté : Ismail khalil le 6 Déc 2016
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 commentaire
Jan
Jan le 6 Déc 2016
I've formatzted your code using the "{} Code" button. You can do this by your own also.

Connectez-vous pour commenter.

Réponse acceptée

David Barry
David Barry le 6 Déc 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 commentaire
Ismail khalil
Ismail khalil le 6 Déc 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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by