Professional Documents
Culture Documents
Planteo
Usar los métodos iterativos vistos para resolver el sistema lineal Ax=b.
Matriz A
( ) {
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
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:
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
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);
%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;