Can someone please help me stop "Index exceeds array bounds." in iteration? Any help is highly appreciated.
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Yunusah Abdulai
le 18 Avr 2021
Commenté : Clayton Gotberg
le 18 Avr 2021
clc
A = [4 -1 -3;-2 6 1;-1 1 7];
b=[3;9;-6];
D=diag(diag(A))
[L,U]=lu(A)
Mj = D\(U+L)
Mj(:,3)=[];
Mj(:,2)=[];
Vj =D\b
x1=zeros;
x=zeros;
for n = 2:8
x = Mj*('the previous x value')+ Vj;
end
x
0 commentaires
Réponse acceptée
Clayton Gotberg
le 18 Avr 2021
Modifié(e) : Clayton Gotberg
le 18 Avr 2021
You're asking for elements in x1 that don't exist. If we look only at the last loop n == 8 and you are asking for x1(7), but x1 is defined just before as being a 3x1 matrix of zeros.
I also want to point out that x1 is always zero in the code you posted here, so x will always equal Vj. Additionally, x is being overwritten on every loop instead of the value in each loop being saved.
2 commentaires
Yunusah Abdulai
le 18 Avr 2021
Modifié(e) : Yunusah Abdulai
le 18 Avr 2021
Clayton Gotberg
le 18 Avr 2021
The previous value of x is just x. When programming, you are allowed to change the value of a variable using a reference to itself:
x = 5; % Define an initial value for x
x = x+5: % Define a new value for x: x = x (which we defined as 5) + 5
% Now, x == 10
Plus de réponses (1)
the cyclist
le 18 Avr 2021
In your for loop, when n==5, your code tries to execute
x1(n-1)
which is
x1(4)
But your vector x1 is length 3, so there is no 4th element to access. That's why you get that error.
1 commentaire
Yunusah Abdulai
le 18 Avr 2021
Modifié(e) : Yunusah Abdulai
le 18 Avr 2021
Voir également
Catégories
En savoir plus sur Search Path dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!