MATLAB Need help with Matlab code for gauss siedel i get errors, need imediat help

AI Thread Summary
The discussion centers around a coding issue related to a MATLAB function called `gauss_sied`, which is intended for solving systems of linear equations using the Gauss-Seidel method. The user encounters an error stating "Too many input arguments," indicating that the function is being called with five parameters while it is defined to accept only four. The parameters being passed include the initial guess, matrix A, vector b, a relaxation factor, and an error threshold. The user also faces a subsequent error when attempting to assign the output of the function, specifically with the variable `xo`, which is set to the output `x_wo`. This suggests that the function's return values and the order of input parameters may need to be corrected. The discussion emphasizes the importance of matching the number of inputs and outputs in function calls to avoid such errors in MATLAB programming.
fizzkilla
Messages
4
Reaction score
0
Please I need HELP IMEDIATLY

This is the error message that i get

? Error using ==> gauss_sied
Too many input arguments.

Error in ==> HW_14 at 23
[x_wo, cnt, x_w,cntt] = gauss_sied(xo, A, b, es, lam);
clc
clearC = [-8 1 -2 -20
2 -6 -1 -38
-3 -1 7 -34];

A = C(:,1:end-1);
b = C(:,end);nr = length(b);

xo = ones(1,nr); % initial guess

lam = 1.2;
n = 4;
es = .5*10^(2-n);

[x_wo, cnt, x_w,cntt] = gauss_sied(xo, A, b, es, lam);

fprintf(' Solution to [A]{x} = {b}\n')
fprintf('*******************************************\n')
fprintf(' Without Relaxation With Relaxation\n')
fprintf(' ******************** ***************\n')
for i = 1:length(b)
fprintf(' x(i) = %.f x(i) = %.f\n',i,x_wo,i,x_w)
end
fprintf(' ******************** ***************\n')
fprintf(' %i iterations %i iterations\n',cnt,cntt)
fprintf('*******************************************\n')Function program
function [x_wo, cnt,x_w cntt] = gauss_sied(xo, A, b, lam)
%Without Relaxation
nr = length(b);
ea = 1;
cnt = 0;while ea > es
for i = 1 : nr
sm = 0;
for j = 1:nr
if i ~= j
sm = sm + A(i,j) * xo(j);
end
end
x_wo(i) = (b(i) - sm) / A(i,i);
end

ea = 100 * abs((x_wo-xo)./x_wo);

xo = x_wo;

cnt = cnt+1;
end

%With Relaxation

nr = length(b);
ea = 1;
cntt = 0;

while ea > es
for i = 1 : nr
sm = 0;
for j = 1:nr
if i ~= j
sm = sm + A(i,j) * xo(j);
end
end
x_w(i) = (b(i) - sm) / A(i,i);
end

ea = 100 * abs((x_w-xo)./x_w);
x_w = (lam*x_w) + (1 - lam)*xo;

xo = x_w;

cntt = cntt+1;
end
 
Last edited:
Physics news on Phys.org
You're supplying 5 inputs to a function that is defined to have 4 inputs.

Code:
function [x_wo, cnt,x_w cntt] = gauss_sied(xo, A, b, lam)

called as:
Code:
[x_wo, cnt, x_w,cntt] = gauss_sied(xo, A, b, es, lam);
 
Now in my code I get another error

Error in ==> gauss_sied at 8
xo = x_wo;

Error in ==> HW_14 at 23
[x_wo, cnt, x_w,cntt] = gauss_sied(xo, es, lam, A, b);
 

Similar threads

Back
Top