Gauss-Seidel method Help

Hello,
I am hoping someone can assist me with this problem. I created a Gauss-Seidel code that will allow me to solve a set of linear equations, finding x1, x2 x3 and x4. I made two matrices; A=[4 -21 -7 1; -4 0 -3 11 ; 4 -1 10 -1; 151/8 5 8 -3] and b =[11; 15; 19; -12;]. Through using the equatio Ax=b i would be able to find the unknows, which worked using the backslash built in solver. But my code below give 4 values for x but they do not match the reuslts of the built in solver and do not equate when substitued back into a line of the linear equations.
A major aspect of the code is that it is meant to make your matrix diagonally dominant to solve.
My code is as follows:
function gauss-seidel
A=input('write matrix a')
b=input('write matrix b')
x=linspace(0,0,length(A))';
n=size(x,1);
normVal=Inf;
nmax=1000; %number of maximum iterations which can be reached%
tol=0.000001; % Tolerence for method%
iter=0;
while normVal>tol && iter<nmax
x_old=x;
[V,A]=eig(A);
TF=isdiag(A);
if TF==0
fprintf('the matrix is not diagonally dominant')
else
for i=1:n
guess=0;
for j=1:i-1
guess=guess+A(i,j)*x(j);
end
for j=i+1:n
guess=guess+A(i,j)*x_old(j);
end
x(i)=(b(i)+guess)/(A(i,i));
end
iter=iter+1;
normVal=norm(x_old-x);
end
end
fprintf('Solution of the system is : ')
for i=1:length(x)
fprintf(' %1.4f ',x(i));
end
fprintf('in %d iterations ',iter)

4 comentarios

John D'Errico
John D'Errico el 22 de Abr. de 2020
Please stop asking the same question day after day.
kemgi
kemgi el 23 de Abr. de 2020
I tried to delete the first one as I made a mistake, but I didn’t do it properly. There aren’t multiple questions there, just two within hundreds of posts. If you knew the answer I would have appreciated an answer. If you didn’t I would prefer you kept that to yourself as I doubt two posts affected you that much.
John D'Errico
John D'Errico el 11 de Nov. de 2021
If you made a mistake, it is trivial to edit your question to fix it. But many people seem to post the same question as many as 5 or 6 times. If they don't get an answer quickly enough to suit their needs, they just keep posting the same question.
Mahmoud
Mahmoud el 7 de Mzo. de 2023
Writing the negative exponent to give the same result as the calculator. Example: 0.3000 * 10^-3 gives a result of 3 * 10^-4
But in MATLAB it gives a very different result. What is the problem here or how to write the equation correctly to give the same value as the calculator

Iniciar sesión para comentar.

 Respuesta aceptada

Prabhan Purwar
Prabhan Purwar el 22 de Abr. de 2020

5 votos

Hi,
Refer to the following code:
The following code performs Gauss-Seidel...
clc
clear
close all
A=[5 -2 3 0 6; -3 9 1 -2 7.4; 2 -1 -7 1 6.7; 4 3 -5 7 9; 2 3.5 6.1 -4 -8.1];
b=[-1 2 3 0.5 3.1]';
x=linspace(0,0,length(A))';
n=size(x,1);
normVal=Inf;
nmax=1000; %number of maximum iterations which can be reached%
tol=1e-3; % Tolerence for method%
iter=0;
while normVal>tol && iter<nmax
x_old=x;
for i=1:n
guess=0;
for j=1:i-1
guess=guess+A(i,j)*x(j);
end
for j=i+1:n
guess=guess+A(i,j)*x_old(j);
end
x(i)=(1/A(i,i))*(b(i)-guess);
end
iter=iter+1;
normVal=norm(x_old-x);
end
fprintf('Solution of the system is : \n%f\n%f\n%f\n%f\n%f in %d iterations',x,iter);
Output:
0.551479
0.469276
-0.595161
-0.649082
-0.171448 in 86 iterations
Tips:
The convergence properties of the Gauss-Seidel method are dependent on the matrix A. Namely, the procedure is known to converge if either:
https://www.mathworks.com/help/matlab/ref/chol.html (chol, only for symmetric matrix) [~,p] = chol(A)
OR
(Diagonal Dominant)
The Gauss-Seidel method sometimes converges even if these conditions are not satisfied.
Although you can prove that the methods converge if A has all eigenvalues positive from the above conditions (but not the only convergence criterion).
Hope it helps!!

3 comentarios

kemgi
kemgi el 23 de Abr. de 2020
Thank you for taking your time to respond to this ?. I was meant to get 4 answers. I have managed to work out the answer.
Prabhan Purwar
Prabhan Purwar el 23 de Abr. de 2020
Kindly accept the answer if its helpful...
ahmed al-khazraji
ahmed al-khazraji el 2 de Feb. de 2021
thanks for the hard work

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Numerical Integration and Differential Equations en Centro de ayuda y File Exchange.

Productos

Versión

R2019b

Preguntada:

el 18 de Abr. de 2020

Comentada:

el 7 de Mzo. de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by