MATLAB: Index in position 2 exceeds array bounds(must not exceed 3), why am i getting this error

gauss seidal

A=[15 6 3;2 11 -3;5 -2 9];
B=[16;5;8];
P=[0;0;0];
Max=100;
disp('Gauss Seidal Method');
disp('x1 x2 x3')
for k=1:max
for j=1:n
if (j==1)
x(1)=(B(1)-A(1,2:n)*P(2:n))/A(1,1);
else if(j==n)
x(n)=(B(n)-A(n,1:n-1)*(x(1:n-1))')/A(n,n);
else
x(j)=(B(j)-A(j,1:j-1)*x(1:j-1)'-A(j,j+1:n)*P(j+1:n))/A(j,j);
end
end
end
disp([x(1) x(2) x(3)])
err=abs(norm(x'-P));
P=x';
if err<0.00001
break
end
end
disp('solution is:')
disp([x(1) x(2) x(3)])

Best Answer

A=[15 6 3;2 11 -3;5 -2 9];
B=[16;5;8];
P=[0;0;0];
Max=100;
[m,n] = size(A) ;
disp('Gauss Seidal Method');
disp('x1 x2 x3')
for k=1:Max
for j=1:n
if (j==1)
x(1)=(B(1)-A(1,2:n)*P(2:n))/A(1,1);
else if(j==n)
x(n)=(B(n)-A(n,1:n-1)*(x(1:n-1))')/A(n,n);
else
x(j)=(B(j)-A(j,1:j-1)*x(1:j-1)'-A(j,j+1:n)*P(j+1:n))/A(j,j);
end
end
end
disp([x(1) x(2) x(3)])
err=abs(norm(x'-P));
P=x';
if err<0.00001
break
end
end
disp('solution is:')
disp([x(1) x(2) x(3)])
Check the solution:
sol = A\B
Related Question