Can someone please help me stop "Index exceeds array bounds." in iteration? Any help is highly appreciated.
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Yunusah Abdulai
el 18 de Abr. de 2021
Comentada: Clayton Gotberg
el 18 de Abr. de 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 comentarios
Respuesta aceptada
Clayton Gotberg
el 18 de Abr. de 2021
Editada: Clayton Gotberg
el 18 de Abr. de 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 comentarios
Yunusah Abdulai
el 18 de Abr. de 2021
Editada: Yunusah Abdulai
el 18 de Abr. de 2021
Clayton Gotberg
el 18 de Abr. de 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
Más respuestas (1)
the cyclist
el 18 de Abr. de 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 comentario
Yunusah Abdulai
el 18 de Abr. de 2021
Editada: Yunusah Abdulai
el 18 de Abr. de 2021
Ver también
Categorías
Más información sobre Search Path en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!