Vous êtes sur la page 1sur 5

Facultad de Ciencias de la Ingenierı́a

Centro de Docencia de Ciencias Básicas para Ingenierı́a

Laboratorio 3
Eliminación Gaussiana
Métodos Numéricos para ingenierı́a

1 Eliminación Gaussiana
Sea A ∈ Rn×n una matriz cuadrada no singular, x ∈ Rn , b ∈ Rn , considere el sistema de ecuaciones:

Ax = b

Este sistema se puede resolver mediante el algoritmo de eliminación gaussiana. A continuación se muestra
el pseudo código del algoritmo de eliminación gaussiana con sustitución regresiva, cuando la solución del
sistema existe y es única.

Algoritmo 1: Eliminación Gaussiana con pivoteo y sustitución


regresiva
Entrada: A = [aij ], 1 ≤ i ≤ n, 1 ≤ j ≤ n + 1: Matriz ampliada
Salida: Solución x1 , . . . , xn
1 para i ← 1 a n − 1 hacer
2 si aii = 0 entonces
3 (Ep ) ↔ (Ei ), con p = inf{p ≥ i ∧ api 6= 0};
4 para j ← i + 1 a n hacer
a
5 (Ej − mji Ei ) → (Ej ) con mji = ajiii ;
6 fin
7 fin
8 (Sustitución regresiva)
an,n+1
9 xn ← ;
ann
10 para i = n − 1 : 1 hacer
ai,n+1 − n
P
j=i+1 aij xj
11 xi ← aii
12 fin

Universidad Austral de Chile Independencia 631 Tel: +56 63 2221500 Valdivia Chile
Facultad de Ciencias de la Ingenierı́a
Centro de Docencia de Ciencias Básicas para Ingenierı́a

2 Actividades
Considere la matriz A ∈ Rn×n definida como:


 13, si i = j,
−4, si |i − j| = 1,




 1, si |i − j| = 3,


(ai,j )i,j=1,...,n = −1, si |i − j| = 5,
2, si |i − j| = 7.




−3, si |i − j| = 9.




0, En otro caso

1. Programe una rutina que genere la matriz A para n dado. Pruebe para n = 5 y n = 10.

2. Programe una rutina que implemente el algoritmo de eliminación gaussiana.

3. Usando las rutinas programadas anteriormente resuelva el problema Ax = b para n = 10, n = 20


y n = 100, donde b = ones(n, 1). Compare los tiempos de ejecución y la solución obtenida con el
operador backslash.

Universidad Austral de Chile Independencia 631 Tel: +56 63 2221500 Valdivia Chile
Facultad de Ciencias de la Ingenierı́a
Centro de Docencia de Ciencias Básicas para Ingenierı́a

Solución:
1. La función que genera la matriz A es:

f u n c t i o n [ a , tiempo ]=A( n )
tic ;
a=z e r o s ( n , n ) ;
f o r i =1:n
f o r j =1:n
i f i==j
a ( i , j )=13;
e l s e i f abs ( i −j )==1
a ( i , j )=−4;
e l s e i f abs ( i −j )==3
a ( i , j )=1;
e l s e i f abs ( i −j )==5
a ( i , j )=−1;
e l s e i f abs ( i −j )==7
a ( i , j )=2;
e l s e i f abs ( i −j )==9
a ( i , j )=−3;
end
end
end
tiempo=t o c ;

La ejecución está dada por:

>> A( 5 )
ans =
13 −4 0 1 0
−4 13 −4 0 1
0 −4 13 −4 0
1 0 −4 13 −4
0 1 0 −4 13
>> A( 1 0 )
ans =
13 −4 0 1 0 −1 0 2 0 −3
−4 13 −4 0 1 0 −1 0 2 0
0 −4 13 −4 0 1 0 −1 0 2
1 0 −4 13 −4 0 1 0 −1 0
0 1 0 −4 13 −4 0 1 0 −1
−1 0 1 0 −4 13 −4 0 1 0
0 −1 0 1 0 −4 13 −4 0 1
2 0 −1 0 1 0 −4 13 −4 0
0 2 0 −1 0 1 0 −4 13 −4
−3 0 2 0 −1 0 1 0 −4 13

Universidad Austral de Chile Independencia 631 Tel: +56 63 2221500 Valdivia Chile
Facultad de Ciencias de la Ingenierı́a
Centro de Docencia de Ciencias Básicas para Ingenierı́a

2. La implementación de el algorı́tmo de Eliminación Gaussiana.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% E l i m i n a c i n gaussiana %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

f u n c t i o n [ x , tiempo ]= Gauss (A, b )


tic
A=[A, b ] ; %A ampliado
[m, n]= s i z e (A ) ;
x=z e r o s ( n − 1 , 1 ) ;

f o r i =1:n−1
i f A( i , i )==0
f o r k=i +1:n−1
i f A( k , i )˜= 0
p=k ;
break
end
end
A=CambiarFila (A, i , p ) ;
end
f o r h=i +1:n−1
A( h , : ) =A( i , : ) ∗ A( h , i ) /A( i , i )∗−1+A( h , : ) ;
end
end

f o r i=n−1: −1:1
x ( i )=(A( i , n)−A( i , [ 1 : n −1])∗ x ( [ 1 : n − 1 ] ) ) /A( i , i ) ;
end
tiempo=t o c ;

3. Para responder la pregunta 3 ejecutamos el siguiente script:

A10=A( 1 0 ) ;
A20=A( 2 0 ) ;
A100=A( 1 0 0 ) ;
b10=o n e s ( 1 0 , 1 ) ;
b20=o n e s ( 2 0 , 1 ) ;
b100=o n e s ( 1 0 0 , 1 ) ;
[ x10Gauss , t 1 0 ]= Gauss ( A10 , b10 ) ;
[ x20Gauss , t 2 0 ]= Gauss ( A20 , b20 ) ;
[ x100Gauss , t 1 0 0 ]= Gauss ( A100 , b100 ) ;
x10Real=A10\ b10 ;
x20Real=A20\ b20 ;
x100Real=A10\ b100 ;
e r 1 0=norm ( x10Real−x10Gauss ) ;
e r 2 0=norm ( x20Real−x20Gauss ) ;
e r 1 0 0=norm ( x100Real−x100Gauss ) ;

Universidad Austral de Chile Independencia 631 Tel: +56 63 2221500 Valdivia Chile
Facultad de Ciencias de la Ingenierı́a
Centro de Docencia de Ciencias Básicas para Ingenierı́a

Notemos que en la ejecución del script el er10, er20 y er100 son del orden 10−16 , además t10 = 0.0020001,
t20 = 0.0090008 y t100 = 0.21301

Anexo
A continuación se muestra la función cambiar fila, que es utilizada en la implementación del algorı́tmo de
eliminación Gaussiana.

f u n c t i o n A=CambiarFila (A, i , j )
%Cambiar l a f i l a i por l a j

aux=A( i , : ) ;
A( i , : ) =A( j , : ) ;
A( j , : ) = aux ;

Universidad Austral de Chile Independencia 631 Tel: +56 63 2221500 Valdivia Chile

Vous aimerez peut-être aussi