Trying to run Gauss Siedel method, I have no idea where I'm going wrong in this code. I get an error of "Index exceeds matrix dimensions" Not sure how? Just need this to run Thanks

4 views (last 30 days)
% Solve system from HW using Gauss Seidel
% System of Equations Simplified Below
% 2x1-3x2=-160 ---> x1=(3x2-160)/2
% x1+2x2-3x3 -----> x2=(3x3-x1+40)/2
% 2x3-x2=80 ------> x3=(x2+80)/2
clear;clc;
i=1;
x2(i)=0;x3(i)=0;
error_x1(i)=9999;
while error_x1(i) >= .01;
x1(i+1)=(3*x2(i)-160+0*x3(i))/2;
x2(i+1)=(3*x3(i)-x1(i+1)+40)/2;
x3(i+1)=(x2(i+1)+80+0*x1(i+1))/2;
errorx1(i+1)=abs((x1(i+1)-x1(i))/x1(i+1))*100;
errorx2(i+1)=abs((x2(i+1)-x2(i))/x2(i+1))*100;
errorx3(i+1)=abs((x3(i+1)-x3(i))/x3(i+1))*100;
i=i+1;
end
disp(' x1 error(%)');
disp([x1',error_x1']);
disp(' x2 error(%)');
disp([x2',error_x2']);
disp(' x3 error(%)');
disp([x3',error_x3']);

Answers (2)

Marc Jakobi
Marc Jakobi on 5 Oct 2016
You have to pre-initialize x1, x2, x3, errorx1, errorx2 and errorx3. The index exceeds the matrix dimensions, because you index x1(i+1), which is x1(2) in the first iteration of your loop. Since x1 is initialized with a length of 1, the index 2 exceeds the dimension 1.
One solution would be
clear;clc;
i=1;
errorx1=9999;
errorx2 = 9999;
errorx3 = 9999;
x1 = 0;
x2 = 0;
x3 = 0;
while errorx1(i) >= .01
x1 = [x1; (3*x2(i)-160+0*x3(i))/2];
x2 = [x2; (3*x3(i)-x1(i+1)+40)/2];
x3 = [x3; (x2(i+1)+80+0*x1(i+1))/2];
errorx1 = [errorx1; abs((x1(i+1)-x1(i))/x1(i+1))*100];
errorx2 = [errorx2; abs((x2(i+1)-x2(i))/x2(i+1))*100];
errorx3 = [errorx3; abs((x3(i+1)-x3(i))/x3(i+1))*100];
i=i+1;
end
disp(' x1 error(%)');
disp([x1',errorx1']);
disp(' x2 error(%)');
disp([x2',errorx2']);
disp(' x3 error(%)');
disp([x3',errorx3']);

Walter Roberson
Walter Roberson on 5 Oct 2016
You initialized
error_x1(i)=9999;
and you have
while error_x1(i) >= .01;
which is consistent. But then you have
errorx1(i+1)=abs((x1(i+1)-x1(i))/x1(i+1))*100;
which is assigning into a different variable, one that does not have the underscore.

Categories

Find more on Image Processing Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!