Sei sulla pagina 1di 7

65

4.3 Mtodo de Gauss


El mtodo de Gauss es similar al mtodo de Gauss-J ordan. Aqu se trata de transformar la
matriz del sistema a una forma triangular superior. Si esto es posible entonces la solucin se
puede obtener resolviendo el sistema triangular resultante.

Ejemplo. Con el Mtodo de Gauss resuelva el sistema de ecuaciones lineales del problema
planteado al inicio de este captulo


1 2 3
1 2 3
1 2 3
4x 2x 5x 18.00
2x 5x 8x 27.30
2x 4x 3x 16.20
+ + =
+ + =
+ + =


Solucin: Se define la matriz aumentada A | B para transformar simultneamente A y B:


4 2 5 18.00
A | B 2 5 8 27.30
2 4 3 16.20


=




Las transformaciones sucesivas de la matriz aumentada se describen en los siguientes cuadros

Dividir fila 1 para 4

1.0000 0.5000 1.2500 4.5000
2.0000 5.0000 8.0000 27.3000
2.0000 4.0000 3.0000 16.2000


Restar de cada fila, la fila 1 multiplicada por el elemento de la columna 1

1.0000 0.5000 1.2500 4.5000
0 4.0000 5.5000 18.3000
0 3.0000 0.5000 7.2000


Dividir fila 2 para 4

1.0000 0.5000 1.2500 4.5000
0 1.0000 1.3750 4.5750
0 3.0000 0.5000 7.2000


Restar de la fila, la fila 2 multiplicada por el elemento de la columna 2

1.0000 0.5000 1.2500 4.5000
0 1.0000 1.3750 4.5750
0 0 -3.6250 -6.5250


Dividir fila 3 para -3.625

1.0000 0.5000 1.2500 4.5000
0 1.0000 1.3750 4.5750
0 0 1.0000 1.8000

66


La matriz de los coeficientes ha sido transformada a la forma triangular superior

De este sistema se obtiene la solucin mediante una sustitucin directa comenzando por el final:


3
2
1
x 1.8
x 4.575 1.375(1.8) 2.1
x 4.5 0.5(2.1) 1.25(1.8) 1.2
=
= =
= =



4.3.1 Formulacin del mtodo de Gauss
Para unificar la descripcin algortmica, es conveniente aumentar la matriz A con el vector B
pues deben realizarse las mismas operaciones simultneamente:

1,1 1,2 1,n 1,n 1
2,1 2,2 2,n 2,n 1
n,1 n,1 n,n n,n 1
a a ... a a
a a ... a a
A | B
... ... ...
a a ... a a
+
+
+



=





En donde la columna de los coeficientes se define:

i,n 1 i
a b
+
= , i=1, 2, 3,. . ., n

La formulacin se obtiene directamente del mtodo de Gauss-J ordan en la que la reduccin de
las filas nicamente se realiza en la sub-matriz triangular inferior. Las transformaciones
convierten la matriz aumentada en la forma triangular superior:

. . . .
1,1 1,2 1,n 1,n 1 1,n 1 1,2 1,n
2,1 2,2 2,n 2,n 1 2,n 1 2,n
n,1 n,1 n,n n,n 1 n,n 1
a a ... a a a 1 a ... a
a a ... a a a 0 1 ... a
A | B
... ... ... ... ... ...
a a ... a a a 0 0 ... 1
+ +
+ +
+ +



=






De sistema triangular se puede obtener directamente la solucin. Para facilitar la notacin
expandimos la forma triangular final obtenida:

1,n 1 1,2 1,n 2 1,n 1 1,n
2,n 1 2,n 2 2,n 1 2,n
n 2,n 1 n 2,n 1 n 2,n
n 1,n 1 n 1,n
n,n 1
a 1 a ... a a a
a 0 1 ... a a a
... ... ... ... ... ...
a 0 0 ... 1 a a
a 0 0 ... 0 1 a
a 0 0 ... 0 0 1
+
+
+
+
+












La solucin se obtiene del sistema triangular superior comenzando desde el final:

n n, n 1
x a
+


n 1 n 1, n 1 n 1, n n
x a a x
+


n 2 n 2, n 1 n 2, n 1 n 1 n 2, n n
x a (a x a x )
+

. . . etc

Con la formulacin del mtodo anterior (Gauss-J ordan) modificando el ndice de las filas para
reducir solamente debajo de la diagonal y con la formulacin para resolver el sistema triangular
resultante, se define el algoritmo para el mtodo de Gauss:
67


ALGORITMO BSICO DE GAUSS

a: matriz aumentada del sistema de n ecuaciones lineales

Para e =1, 2, . . ., n
Para j=e, e+1, ..., n+1

e,j e,j e,e
a a / a Normalizar la fila e (
e,e
a 0 )
Fin
Para i=e+1, e+2, n
Para j=e, e+1, ..., n+1

i,j i,j i,e e,j
a a a a Reducir la filas debajo de la fila e
Fin
Fin
Fin

n n, n 1
x a
+
Resolver el sistema triangular superior
Para i=n-1, n-2, ..., 1
s 0
Para j=i+1, i+2, ..., n

i,j j
s s a x +
Fin

i i,n 1
x a s
+

Fin


4.3.2 Eficiencia del mtodo de Gauss
Sea n el tamao del problema y T(n) la cantidad de operaciones aritmticas que se realizan
En la normalizacin: T(n) =O(n
2
) (dos ciclos anidados)
En la reduccin: T(n) =O(n
3
) (tres ciclos anidados)
En la obtencin de la solucin: T(n) =O(n
2
) (dos ciclos anidados)
Por lo tanto, este mtodo es de tercer orden: T(n) = O(n
3
)

Mediante un recorrido de los ciclos del algoritmo, se puede determinar en forma ms precisa:
T(n) = n
3
/3 + O(n
2
) con lo que se puede concluir que el mtodo de Gauss es ms eficiente que
el mtodo de Gauss-J ordan. Se supone n grande. Esta diferencia se la puede constatar
experimentalmente resolviendo sistemas grandes y registrando el tiempo de ejecucin.

4.3.3 Instrumentacin computacional
En esta primera versin del algoritmo se supondr que el determinante de la matriz es diferente
de cero y que no se requiere intercambiar filas. La codificacin en MATLAB sigue directamente
la formulacin matemtica descrita anteriormente. Se usa notacin compacta para manejo de
matrices.

function x=gauss1(a,b)
n=length(b);
a=[a,b]; %Matriz aumentada
for e=1:n
a(e,e:n+1)=a(e,e:n+1)/a(e,e); %Normalizar la fila e
for i =e+1:n %Reducir otras filas
a(i,e:n+1)=a(i ,e:n+1)-a(i,e)*a(e,e:n+1);
end
end
x(n,1)=a(n,n+1); %Solucin del sistema triangular
for i=n-1:-1:1
x(i,1)=a(i,n+1)-a(i,i +1:n)*x(i+1:n,1);
end
68


Columna e
4.3.4 Estrategia de pivoteo
Al examinar la eficiencia de los mtodos directos para resolver sistemas de ecuaciones lineales
se observa que la operacin de multiplicacin est en la seccin crtica del algoritmo con
eficiencia O(n
3
).

Formulacin del mtodo de Gauss:

Etapa e = 1, 2, . . ., n

Normalizar la fila e:
a / a a
e , e j , e j , e
, j=e, e+1, ..., n+1; 0 a
e , e


Reducir las otras filas:

j , e e , i j , i j , i
a a a a , j=e, e+1, ..., n+1; i=e+1, e+2, ..., n


Etapa e:



1,2 1,e 1,n 1,n 1
2,e 2,n 2,n 1
e,n e,n 1
n 1,e n 1,n n 1,n 1
n,e n,n n,
e
n
,e
1
1 a ... a ... a a
0 1 ... a ... a a
... ... ... ... ... ... ...
0 0 ... ... a a
... ... ... ... ... ... ...
0 0 ... a ... a a
0 0 ... a ... a a
a
+
+
+
+
+















Recordando la definicin del error de redondeo propagado en la multiplicacin:
E
XY
= X E
Y
+ Y E
X


Una estrategia para disminuir el error de redondeo consiste en reducir el valor de los operandos
que intervienen en la multiplicacin.

En la estrategia de Pivoteo Parci al , antes de normalizar la fila e se busca en la columna e de
cada fila i = e, e+1, . . ., n cual es el elemento con mayor magnitud. Si se usa este elemento
como divisor para la fila e, el cociente
e,j
a tendr el menor valor. Este factor permite disminuir el
error cuando se realiza la etapa de reduccin de las otras filas.

Por otra parte, si en esta estrategia de bsqueda, el valor elegido como el mayor divisor no es
diferente de cero, se concluye que en el sistema existen ecuaciones redundantes o
incompatibles, entonces el sistema no tiene solucin nica y el algoritmo debe terminar


Transformaciones
Tansformaciones
Fila e
69


4.3.5 Instrumentacin computacional del mtodo de Gauss con pivoteo
La siguiente instrumentacin en MATLAB del mtodo de eliminacin de Gauss incluye la
formulacin descrita y la estrategia de pivoteo parcial vista anteriormente, en notacin matricial
compacta de MATLAB. En esta instrumentacin final se incluye un chequeo del divisor para
prevenir el caso de que el sistema sea singular aunque, por los errores de redondeo, no sea
exactamente igual a cero. Tambin se verifica que sea una matriz cuadrada.

function x=gauss(a,b)
[n,m]=size(a);
if n~=m %Verificar si la matriz es cuadrada
x=[ ];
return;
end
a=[a,b]; %Matriz aumentada
for e=1:n
[z, p]=max(abs(a(e:n,e))); %Pivoteo por filas
p=p+e-1;
t=a(e,e:n+1); %Intercambio de filas
a(e,e:n+1)=a(p,e:n+1);
a(p,e:n+1)=t;
if abs(a(e,e))<1.0e-10 %Si el divisor es ~cero, no hay solucin
x=[ ];
return;
end
a(e,e:n+1)=a(e,e:n+1)/a(e,e); %Normalizar la fila e
for i =e+1:n %Reducir otras filas
a(i,e:n+1)=a(i ,e:n+1)-a(i,e)*a(e,e:n+1);
end
end
x(n,1)=a(n,n+1); %Solucin del sistema triangular
for i=n-1:-1:1
x(i,1)=a(i,n+1)-a(i,i +1:n)*x(i+1:n,1);
end

La funcin [z,p]=max(v) de MATLAB entrega en z el mayor valor, y en p el nmero de la fila en
la que est ubicado este valor en el vector v


Ejemplo. Desde la ventana de comandos de MATLAB, use la funcin Gauss para resolver el
sistema:

1
2
3
2 3 7 x 3
2 5 6 x 5
8 9 4 x 8


=





Escriba en la ventana de comandos de MATLAB

>> a=[2, 3, 7; -2, 5, 6; 8, 9, 4]; Matriz de coeficientes
>> b=[3; 5; 8]; Vector de constantes
>> x=gauss(a,b) Llamada a la funcin
x =
-0.0556 Solucin calculada
0.9150
0.0523
70


4.3.6 Funciones de MATLAB para sistemas de ecuaciones lineales
MATLAB tiene un soporte muy potente para resolver sistemas de ecuaciones lineales.
Sugerimos entrar al sistema de ayuda de MATLAB y revisar la amplia informacin relacionada
con este tema.

La forma ms simple de resolver un sistema lineal, si la matriz de coeficientes es cuadrada y no-
singular, es usando la definicin de inversa de una matriz MATLAB.

Ejemplo. Resuelva el ejemplo anterior con la funcin i nv de MATLAB

>> a=[2, 3, 7; -2, 5, 6; 8, 9, 4]; Matriz de coeficientes
>> b=[3; 5; 8]; Vector de constantes
>> x=inv(a)*b Invertir la matriz de coeficientes
x = Solucin calculada por MATLAB
-0.0556
0.9150
0.0523


Una forma ms general para resolver sistemas lineales, incluyendo sistemas singulares se
puede hacer con la funcin rref de MATLAB. Esta funcin reduce una matriz a su forma
escalonada con 1s en la diagonal.

Ejemplo. Resuelva el ejemplo anterior con la funcin rref de MATLAB

>> a=[2 3 7;-2 5 6;8 9 4];
>> b=[3;5;8];
>> a=[a, b]; Matriz aumentada
>> c=rref(a)
c =
1.0000 0 0 -0.0556
0 1.0000 0 0.9150
0 0 1.0000 0.0523

La ltima columna de la matriz aumentada resultante contiene la solucin.

4.3.7 Clculo del determinante de una matriz
El algoritmo de Gauss transforma la matriz cuadrada de los coeficientes a la forma triangular
superior. En una matriz triangular, el determinante es el producto de los coeficientes de la
diagonal principal. Por lo tanto, el determinante se puede calcular multiplicando los divisores
colocados en la diagonal principal, considerando adems el nmero de cambios de fila que se
hayan realizado en la estrategia de pivoteo.

Sean
A: matriz cuadrada
T: Matriz triangular superior obtenida con el algoritmo de Gauss
a
i,i
: Elementos en la diagonal de la matriz T. Son los divisores
k: Nmero de cambios de fila realizados
det(A): Determinante de la matriz A

Entonces

n
k
i ,i
i 1
det(A) ( 1) a
=
=



71


4.3.8 Instrumentacin computacional para clculo del determinante
function d=determinante(a)
%Determinante de una matriz cuadrada
%Mediante reduccin a una matriz triangular
%El determinante es el producto de los pivotes
[n,m]=size(a);
if n~=m %La matriz debe ser cuadrada
d=0;
return
end
signo=1; %cambios de fila
d=1;
for e=1:n
[z, p]=max(abs(a(e:n,e))); %Pivoteo por filas
p=p+e-1;
t=a(e,e:n); %Intercambio de filas
a(e,e:n)=a(p,e:n);
a(p,e:n)=t;
if e~=p %Cambio de fila =cambio de signo
signo=signo*(-1);
end
if abs(a(e,e))<1.0e-10 %Divisor cercano a 0: matriz singular
d=0;
return;
end
d=d*a(e,e); %Multiplicacin de pivotes
a(e,e:n)=a(e,e:n)/a(e,e); %Normalizar la fila e
for i =e+1:n %Reducir otras filas
a(i,e:n)=a(i,e:n)-a(i,e)*a(e,e:n);
end
end
d=d*signo; %Determinante


Ejemplo
>> a=[5 3 7; 2 9 8; 5 8 2]
a =
5 3 7
2 9 8
5 8 2
>> d=determinante(a)
d =
-325

Potrebbero piacerti anche