Trying to do central difference using for loop, getting error

5 visualizzazioni (ultimi 30 giorni)
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 Commento
Jan
Jan il 6 Dic 2016
I've formatzted your code using the "{} Code" button. You can do this by your own also.

Accedi per commentare.

Risposta accettata

David Barry
David Barry il 6 Dic 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 Commento
Ismail khalil
Ismail khalil il 6 Dic 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

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by