You are on page 1of 6

Curso de Postgrado: Introducción al cálculo científico

Alumno: Angel Ciarbonetti

Introducción al cálculo científico


Solución del problema 15 sección 7.2 libro Análisis Numérico de Burden Faires

Planteo

Usar los métodos iterativos vistos para resolver el sistema lineal Ax=b.

Matriz A

( ) {

b= cualquier vector del mismo oren que A.

La matriz A según (1) para un n=4 (orden n2) queda entonces:

A=

4 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0
-1 4 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0
0 -1 4 -1 0 -1 0 0 0 0 0 0 0 0 0 0
-1 0 -1 4 0 0 -1 0 0 0 0 0 0 0 0 0
0 -1 0 0 4 -1 0 -1 0 0 0 0 0 0 0 0
0 0 -1 0 -1 4 -1 0 -1 0 0 0 0 0 0 0
0 0 0 -1 0 -1 4 -1 0 -1 0 0 0 0 0 0
0 0 0 0 -1 0 -1 4 0 0 -1 0 0 0 0 0
0 0 0 0 0 -1 0 0 4 -1 0 -1 0 0 0 0
0 0 0 0 0 0 -1 0 -1 4 -1 0 -1 0 0 0
0 0 0 0 0 0 0 -1 0 -1 4 -1 0 -1 0 0
0 0 0 0 0 0 0 0 -1 0 -1 4 0 0 -1 0
0 0 0 0 0 0 0 0 0 -1 0 0 4 -1 0 -1
0 0 0 0 0 0 0 0 0 0 -1 0 -1 4 -1 0
0 0 0 0 0 0 0 0 0 0 0 -1 0 -1 4 -1
0 0 0 0 0 0 0 0 0 0 0 0 -1 0 -1 4

Solución:

Se planteará la solución de los métodos Jacobi, Gauss Seidel y SOR, para distintos órdenes de la
matriz A armada en según (1). Para el vector b se tomará un vector unitario del mismo orden de la
matriz. El orden de n se irá incrementando para realizar una comparación entre los métodos y
medir de alguna manera la eficiencia de cada uno.

1
Curso de Postgrado: Introducción al cálculo científico
Alumno: Angel Ciarbonetti

Para ver la convergencia de cada método se utilizarán las siguientes normas.

 Norm(Ax-b): donde x es la solución encontrada por cada método.


 Norm(x(k+1)-x(k))
 Norm(xe-x): donde xe es el obtenido a través del método directo de matlab xe=A\b
 Norm(T): donde T es la matriz de cada método, para convergencia dicha norma tiene que
ser <1.

Se hace entonces, el análisis de cada método para distintos órdenes de la matriz A como se
menciona y se resumen los resultados en la siguiente planilla:

Metodo Orden de A Iteraciones norm(x-xe) norm(x(k+1)-x(k)) norm(Ax(k)-b) norm(T)

Jacobi 73 4,15E-06 8,84E-07 2,91E-06 0,824


Gauss Seidel 40 1,58E-06 7,36E-07 1,25E-06 0,745
N=16
SOR (w=1,25) 18 6,62E-06 8,21E-06 6,86E-06 0,824
SOR (w=0,98) 35 1,96E-03 4,84E-06 1,50E-06 0,824
Jacobi 39 2,21E-06 9,49E-07 5,00E+00 0,695
Gauss Seidel 23 5,27E-07 5,38E-07 9,12E-07 0,557
N=25
SOR (w=1,25) 13 2,22E-06 6,47E-06 1,25E-05 0,690
SOR (w=0,98) 20 8,54E-06 8,08E-06 1,45E-05 0,690
Jacobi 16 2,92E-07 4,74E-07 1,83E-06 0,381
Gauss Seidel 11 1,57E-07 5,30E-07 9,91E-07 0,240
N=100
SOR (w=1,25) 11 1,07E-06 4,04E-06 1,37E-05 0,381
SOR (w=0,98) 10 1,51E-06 4,57E-06 9,53E-06 0,381
Jacobi 8 1,00E-07 6,60E-07 2,60E-06 0,132
Gauss Seidel 7 9,38E-09 1,25E-07 2,24E-07 0,071
N=900
SOR (w=1,25) 9 8,76E-07 4,14E-06 2,78E-05 0,132
SOR (w=0,98) 6 5,98E-07 6,05E-06 1,56E-05 0,132
Jacobi 8 2,21E-08 2,28E-07 9,05E-07 0,110
Gauss Seidel 6 4,99E-08 7,86E-07 1,55E-06 0,060
N=1225
SOR (w=1,25) 9 7,84E-07 4,00E-06 2,79E-05 0,114
SOR (w=0,98) 6 2,80E-07 3,25E-06 8,72E-06 0,114

Conclusiones:

Como puede verse en la tabla resumen, a medida que el orden de la matriz A crece los métodos
convergen, esto es un caso particular ya que por la forma que tiene la matriz A. Como puede verse
la norma de T en cada método es menor que 1 y a medida que aumenta el tamaño de la matriz
esta norma es menor, debido a eso los métodos convergen más rápidamente a medida que la
matriz aumenta. De otra manera se puede decir que el radio espectral de la matriz es
inversamente proporcional a su dimensión, debido a lo cual se hace más chico a medida que la
matriz aumenta. Esto puede verse en la planilla siguiente donde se muestra el radio espectral en
lugar de la norma de T.

2
Curso de Postgrado: Introducción al cálculo científico
Alumno: Angel Ciarbonetti

Metodo Orden de A Iteraciones norm(x-xe) norm(x(k+1)-x(k)) norm(Ax(k)-b) respectral(T)

Jacobi 73 4,15E-06 8,84E-07 2,91E-06 0.824


Gauss Seidel 40 1,58E-06 7,36E-07 1,25E-06 0.683
N=16
SOR (w=1,25) 18 6,62E-06 8,21E-06 6,86E-06 0.446
SOR (w=0,98) 35 1,96E-03 4,84E-06 1,50E-06 0,695
Jacobi 39 2,21E-06 9,49E-07 5,00E+00 0,695
Gauss Seidel 23 5,27E-07 5,38E-07 9,12E-07 0.494
N=25
SOR (w=1,25) 13 2,22E-06 6,47E-06 1,25E-05 0.340
SOR (w=0,98) 20 8,54E-06 8,08E-06 1,45E-05 0.512
Jacobi 16 2,92E-07 4,74E-07 1,83E-06 0.381
Gauss Seidel 11 1,57E-07 5,30E-07 9,91E-07 0.181
N=100
SOR (w=1,25) 11 1,07E-06 4,04E-06 1,37E-05 0.316
SOR (w=0,98) 10 1,51E-06 4,57E-06 9,53E-06 0.206
Jacobi 8 1,00E-07 6,60E-07 2,60E-06 0.132
Gauss Seidel 7 9,38E-09 1,25E-07 2,24E-07 0.0454
N=900
SOR (w=1,25) 9 8,76E-07 4,14E-06 2,78E-05 0.277
SOR (w=0,98) 6 5,98E-07 6,05E-06 1,56E-05 0.068
Jacobi 8 2,21E-08 2,28E-07 9,05E-07 0.113
Gauss Seidel 6 4,99E-08 7,86E-07 1,55E-06 0.038
N=1225
SOR (w=1,25) 9 7,84E-07 4,00E-06 2,79E-05 0.274
SOR (w=0,98) 6 2,80E-07 3,25E-06 8,72E-06 0.061

En las páginas siguientes se muestran cada uno de los códigos para cada método hechos en
matlab.

%**************************************************************************
%CURSO DE POSGRADO INTRODUCCIÓN AL CALCULO CIENTÍFICO
%SOLUCIÓN DE SISTEMAS DE ECUCACIONES LINEALES POR MÉTODO DE JACOBI
%Angel Ciarbonetti - Año 2010
%**************************************************************************

clc
n=35; %orden de la matriz = n^2;
%Ensamble de la matriz A según problema 15 secc 7.2

A=diag(n*ones(n^2,1))-diag(ones(n^2-1,1),1)-diag(ones((n^2-(n-1)),1),(n-1))...
- diag(ones(n^2-1,1),-1)-diag(ones(n^2-(n-1),1),(-n+1));
for k=1:n-1
A(k*n,k*n+1)=0;
A(k*n+1,k*n)=0;
end
%b=rand(n^2,1);
b=ones(n^2,1);

%Metodo Directo.(para comparar residuos).


xe=A\b;

%Descomposicion de A
D = diag(diag(A));

3
Curso de Postgrado: Introducción al cálculo científico
Alumno: Angel Ciarbonetti

L = tril(-A,-1);
U = triu(-A,1);
%Metodo jacobi.
T=inv(D)*(L+U);
c=inv(D)*b;
xo=zeros(n^2,1);
Tol=1e-6;
for i=1:1000;
'iteración',i
x1=T*xo+c;
if (norm(x1-xo))<=Tol;
x=x1;
'Converge iteraciones',i
error1= norm(x-xo)
error2=norm(x-xe)
error3=norm(A*x-b)
normT=norm(T)
return
end
xo=x1;
end
'No converge'
x=x1;

%**************************************************************************
%CURSO DE POSGRADO INTRODUCCIÓN AL CALCULO CIENTÍFICO
%SOLUCIÓN DE SISTEMAS DE ECUCACIONES LINEALES POR MÉTODO DE GAUSS SAIDEL
%Angel Ciarbonetti - Año 2010
%**************************************************************************

clc
n=35;
A=diag(n*ones(n^2,1))-diag(ones(n^2-1,1),1)-diag(ones((n^2-(n-1)),1),(n-1))...
- diag(ones(n^2-1,1),-1)-diag(ones(n^2-(n-1),1),(-n+1));
for k=1:n-1
A(k*n,k*n+1)=0;
A(k*n+1,k*n)=0;
end
%
%b=rand(n^2,1);
b=ones(n^2,1);
%Metodo Directo.
xe=A\b;
%Descomposicion de A
D = diag(diag(A));
L = tril(-A,-1);
U = triu(-A,1);
%Metodo GAUSS SEIDEL
T=inv(D-L)*U;
c=inv(D-L)*b;
xo=zeros(n^2,1);
Tol=1e-6;
for i=1:1000;
'iteración',i
x1=T*xo+c;
if norm(x1-xo)<=Tol;
x=x1;
'Converge en iteraciones',i
error1= norm(x-xo)
error2=norm(x-xe)
error3=norm(A*x-b)
normT=norm(T)

4
Curso de Postgrado: Introducción al cálculo científico
Alumno: Angel Ciarbonetti

return
end
xo=x1;
end
'No converge'
x=x1;

%**************************************************************************
%CURSO DE POSGRADO INTRODUCCIÓN AL CALCULO CIENTÍFICO
%SOLUCIÓN DE SISTEMAS DE ECUCACIONES LINEALES POR MÉTODO SOR
%Angel Ciarbonetti - Año 2010
%**************************************************************************

clc
clear all
n=4;
A=diag(n*ones(n^2,1))-diag(ones(n^2-1,1),1)-diag(ones((n^2-(n-1)),1),(n-1))...
- diag(ones(n^2-1,1),-1)-diag(ones(n^2-(n-1),1),(-n+1));
for k=1:n-1
A(k*n,k*n+1)=0;
A(k*n+1,k*n)=0;
end
%
%b=rand(n^2,1);
b=ones(n^2,1);
%Metodo Directo.
xe=A\b;
%Descomposicion de A

D = diag(diag(A));
L = tril(-A,-1);
U = triu(-A,1);

T=inv(D)*(L+U);
rho_T = max(abs(eig(T)));
c=inv(D)*b;

w=0.98;
%w = 2./(1+sqrt(1-rho_Tj^2));
disp('w =');disp(w);
Tw = inv(D-w*L)*((1-w)*D+w*U);
cw = w*inv(D-w*L)*b;
%Metodo SOR

xo=zeros(n^2,1);
Tol=1e-5;
for i=1:100;
'iteración',i
x1=Tw*xo+cw
if max(norm(x1-xo))<=Tol;
x=x1;
'Converge en iteraciones',i
error1= norm(x-xo)
error2=norm(x-xe)
error3=norm(A*x-b)
normT=norm(T)

return
end

5
Curso de Postgrado: Introducción al cálculo científico
Alumno: Angel Ciarbonetti

xo=x1;
end
'No converge'
x=x1;

You might also like