Está en la página 1de 3

Métodos de Jacobi y Gauss-Seidel

Resuelve el sistema Ax = b usando \

A = [10,-1,2,0; -1,11,-1,3; 2,-1,10,-1; 0,3,-1,8]

A = 4×4
10 -1 2 0
-1 11 -1 3
2 -1 10 -1
0 3 -1 8

b= [6;25;-11;15]

b = 4×1
6
25
-11
15

Verifica que A es estrictamente diagonal dominante

dom = all(2*abs(diag(A)) > sum(abs(A), 2));


if dom==0,error('La matriz no es estrictamente diagonal dominante'),end

Verifica que A no es singular

detA = det(A)

detA = 7395

Resuelve el sistema Ax = b usando el método de Jacobi

[x,i] = Jacobi(A,b)

x = 4×1
1.0000
2.0000
-1.0000
1.0000
i = 43

Resuelve el sistema Ax = b usando el método de Gauss-Seidel

[x2,i2] = GaussSeidel(A,b)

x2 = 4×1
1.0000
2.0000
-1.0000
1.0000
i2 = 17

Strict diagonal dominance of A implies that the spectral radius of T is less than one for Jacobi and Gauss-Seidel
methods.

1
Muestra que el radio espectral de T para Jacobi es menor que uno

L = tril(A,-1);
D = diag(diag(A));
U = triu(A,1);
R=L+U;
T=-D\R;
rad1 = max(abs(eig(T)))

rad1 = 0.4264

Muestra que el radio espectral de T para Gauss-Seidel es menor que uno

T=-(D+L)\U;
rad2=max(abs(eig(T)))

rad2 = 0.0898

Escribe aquí los métodos de Jacobi y Gauss-Seidel

%Escribe aquí las funciones de los métdos

function [x,i] = Jacobi(A,b)


if ~DiagonalDominanteEstricta(A),warning('La matriz no es diagonal dominante estric
n = length(b);
%calcular matrices L,D y U
L = tril(A,-1);
D = diag(diag(A));
U = triu(A,1);

x=zeros(n,1);
R=L+U;
C=D\b;
T=-D\R;

tolrel = eps;
MAX = 50;
i=0;
cond = true;
while cond
xp = x;
x = T*xp+C;
err = norm((x-xp)/x,"inf");
i=i+1;
cond = i<=MAX && err>tolrel;
end
end

function [x,i] = GaussSeidel(A,b)


if ~DiagonalDominanteEstricta(A),warning('La matriz no es diagonal dominante estric
n = length(b);
L = tril(A,-1);
D = diag(diag(A));

2
U = triu(A,1);
x=zeros(n,1);
C=(D+L)\b;
T=-(D+L)\U;
tolrel = eps;
MAX = 50;
cond = true;
i=0;
while cond
xp = x;
x = T*xp+C;
err = norm((x-xp)/x,"inf");
i=i+1;
cond = i<=MAX && err>tolrel;
end

end

También podría gustarte