Vous êtes sur la page 1sur 7

TAREA 2

César A. Hernández V.

November 5, 2017

1 Eliminación de Gauss
Señalar las dificultades del método de eliminación de Gauss
• Durante el proceso de división se presenta la división entre cero (pivoteo)
• Error de redondeo (cifras significativas)
La técnica que se estudia en esta tarea se conoce como la eliminación de Gauss, ya que implica una
combinación de ecuaciones para eliminar las incógnitas. Aunque éste es uno de los métodos más
antiguos para resolver ecuaciones lineales simultáneas, continúa siendo uno de los algoritmos de
mayor importancia, y es la base para resolver ecuaciones lineales en muchos paquetes de software
populares.
Mientras que hay muchos sistemas de ecuaciones que se pueden resolver con la eliminación de
Gauss simple, existen algunas dificultades que se deben analizar.
División entre cero
La razón principal por la que se le ha llamado simple al método anterior se debe a que durante las
fases de eliminación y sustitución hacia atrás es posible que ocurra una división entre cero. Por
ejemplo, si se utiliza el método de eliminación de Gauss simple para resolver
2x2 + 3x3 = 8
4x1 + 6x2 + 7x3 = –3
2x1 + x2 + 6x3 = 5
en la normalización del primer renglón habrá una división entre a11 = 0. También se pueden
presentar problemas cuando un coeficiente está muy cercano a cero. La técnica de pivoteo se ha
desarrollado para evitar en forma parcial estos problemas. El programa Gauss simple muestra
infinity en varios resultados.
Errores de redondeo
Para ilustrar esto, es mejor resolver un ejemplo con eliminación de Gauss simple:
3x1 –0.1x2 –0.2x3 = 7.85
0.1x1 + 7x2 –0.3x3 = –19.3
0.3x1 –0.2x2 + 10x3 = 71.4
Eliminación hacia adelante

1
3x1 –0.1x2 –0.2x3 = 7.85
7.00333x2 –0.293333x3 = –19.5617
–0.190000x2 + 10.0200x3 = 70.6150
3x1 –0.1x2 –0.2x3 = 7.85
7.00333x2 –0.293333x3 = –19.5617
10.0200x3 = 70.0843
Sustitución hacia atrás
x3 = 7.00003
x2 = –2.50000
x1 = 3.00000
Aun cuando la solución del ejemplo fue cercana a la solución verdadera, existe una pequeña dis-
crepancia en el resultado de x3 . Esta diferencia, que corresponde a un error relativo porcentual del
–0.00043, se debe al uso de seis cifras significativas durante los cálculos. Si se hubiesen utilizado
más cifras significativas, el error en los resultados se habrı́a reducido considerablemente. Si se hu-
biesen usado fracciones en lugar de decimales (y en consecuencia evitado los errores de redondeo),
los resultados habrı́an sido exactos. Sin embargo, como las computadoras manejan sólo un número
limitado de cifras significativas, es posible que ocurran errores de redondeo y se deben considerar
al evaluar los resultados. El problema de los errores de redondeo llega a volverse particularmente
importante cuando se trata de resolver un gran número de ecuaciones. Esto se debe al hecho de
que cada resultado depende del anterior. Por consiguiente, un error en los primeros pasos tiende
a propagarse, es decir, a causar errores en los siguientes pasos. Resulta complicado especificar
el tamaño de los sistemas donde los errores de redondeo son significativos, ya que depende del
tipo de computadora y de las propiedades de las ecuaciones. Una regla generalizada consiste en
suponer que los errores de redondeo son de importancia cuando se trata de sistemas de 100 o más
ecuaciones. En cualquier caso, siempre se deben sustituir los resultados en las ecuaciones originales
y verificar si ha ocurrido un error sustancial.

2 TÉCNICAS PARA MEJORAR LAS SOLUCIONES


Uso de más cifras significativas
El remedio más simple para el mal condicionamiento consiste en emplear más cifras significativas en
los cálculos. Si la computadora tiene la capacidad para usar más cifras, esta caracterı́stica reducirá
enormemente el problema. No obstante, el precio que hay que pagar en cálculo y memoria se eleva
con el uso de la precisión extendida.
Para ilustrar esto, se resuelve el siguiente ejemplo, pero ahora con más cifras significativas
3x1 –0.1x2 –0.2x3 = 7.85
0.1x1 + 7x2 –0.3x3 = –19.3
0.3x1 –0.2x2 + 10x3 = 71.4
Usando el programa Gauss, implementado en fortran y un tipo de datos real*16 se llega a la
solución exacta

2
A 3.000000E+00 -1.000000E-01 -2.000000E-01
A 1.000000E-01 7.003333E+00 -2.933333E-01
A 3.000000E-01 -2.000000E-01 1.000000E+01
b 7.850000E+00
b -1.956167E+01
b 7.140000E+01
A 3.000000E+00 -1.000000E-01 -2.000000E-01
A 1.000000E-01 7.003333E+00 -2.933333E-01
A 3.000000E-01 -1.900000E-01 1.002000E+01
b 7.850000E+00
b -1.956167E+01
b 7.061500E+01
A 3.000000E+00 -1.000000E-01 -2.000000E-01
A 1.000000E-01 7.003333E+00 -2.933333E-01
A 3.000000E-01 -1.900000E-01 1.001204E+01
b 7.850000E+00
b -1.956167E+01
b 7.008429E+01
x 3.000000E+00
x -2.500000E+00
x 7.000000E+00

Pivoteo
Ocurren problemas obvios cuando un elemento pivote es cero, ya que el paso de normalización
origina una división entre cero. También llegan a surgir problemas cuando el elemento pivote es
cercano a 0, debido a que si la magnitud del elemento pivote es pequeña comparada con los otros
elementos, entonces se pueden introducir errores de redondeo. Por lo tanto, antes de normalizar
cada renglón, resulta conveniente determinar el coeficiente más grande disponible en la columna
debajo del elemento pivote. Los ren glones se pueden intercambiar de manera que el elemento más
grande sea el elemento pivote; esto se conoce como pivoteo parcial.
Retomando el ejercicio anterior, pero haciendo a11 = 0,
A 0.000000E+00 -1.000000E-01 -2.000000E-01
A 1.000000E-01 Infinity Infinity
A 3.000000E-01 -2.000000E-01 1.000000E+01
b 7.850000E+00
b -Infinity
b 7.140000E+01
A 0.000000E+00 -1.000000E-01 -2.000000E-01
A 1.000000E-01 Infinity Infinity
A 3.000000E-01 Infinity Infinity
b 7.850000E+00
b -Infinity
b -Infinity
A 0.000000E+00 -1.000000E-01 -2.000000E-01
A 1.000000E-01 Infinity Infinity

3
A 3.000000E-01 Infinity NaN
b 7.850000E+00
b -Infinity
b NaN
x NaN
x NaN
x NaN

El programa Gauss simple no es capaz de encontrar la solución del sistema de ecuaciones lineales,
sin embargo, si se le agrega el pivoteo
Apiv 3.000000E-01 -2.000000E-01 1.000000E+01
Apiv 1.000000E-01 7.000000E+00 -3.000000E-01
Apiv 0.000000E+00 -1.000000E-01 -2.000000E-01
bpiv 7.140000E+01
bpiv -1.930000E+01
bpiv 7.850000E+00
A 3.000000E-01 -2.000000E-01 1.000000E+01
A 1.000000E-01 7.066667E+00 -3.633333E+00
A 0.000000E+00 -1.000000E-01 -2.000000E-01
b 7.140000E+01
b -4.310000E+01
b 7.850000E+00
A 3.000000E-01 -2.000000E-01 1.000000E+01
A 1.000000E-01 7.066667E+00 -3.633333E+00
A 0.000000E+00 -1.000000E-01 -2.000000E-01
b 7.140000E+01
b -4.310000E+01
b 7.850000E+00
Apiv 3.000000E-01 -2.000000E-01 1.000000E+01
Apiv 1.000000E-01 7.066667E+00 -3.633333E+00
Apiv 0.000000E+00 -1.000000E-01 -2.000000E-01
bpiv 7.140000E+01
bpiv -4.310000E+01
bpiv 7.850000E+00
A 3.000000E-01 -2.000000E-01 1.000000E+01
A 1.000000E-01 7.066667E+00 -3.633333E+00
A 0.000000E+00 -1.000000E-01 -2.514151E-01
b 7.140000E+01
b -4.310000E+01
b 7.240094E+00
x 1.183976E+03
x -2.090525E+01
x -2.879737E+01

Escalamiento

4
El escalamiento tiene utilidad en la minimización de los errores de redondeo, en aquellos casos en
los que algunas de las ecuaciones de un sistema tienen coeficientes mucho más grandes que otros.
Tales situaciones se encuentran con frecuencia en la práctica de la ingenierı́a, al usar unidades muy
diferentes en el desarrollo de ecuaciones simultáneas.
Ahora se retoma el ejemplo anterior usando variables tipo real, y cambiando a11
0.000000001x1 –0.1x2 –0.2x3 = 7.85
0.1x1 + 7x2 –0.3x3 = –19.3
0.3x1 –0.2x2 + 10x3 = 71.4
Sin escalamiento
A 9.999999717181E-10 -1.000000014901E-01 -2.000000029802E-01
A 1.000000014901E-01 1.000000800000E+07 2.000000200000E+07
A 3.000000119209E-01 -2.000000029802E-01 1.000000000000E+01
b 7.849999904633E+00
b -7.850000640000E+08
b 7.140000152588E+01
A 9.999999717181E-10 -1.000000014901E-01 -2.000000029802E-01
A 1.000000014901E-01 1.000000800000E+07 2.000000200000E+07
A 3.000000119209E-01 3.000000400000E+07 6.000001600000E+07
b 7.849999904633E+00
b -7.850000640000E+08
b -2.355000320000E+09
A 9.999999717181E-10 -1.000000014901E-01 -2.000000029802E-01
A 1.000000014901E-01 1.000000800000E+07 2.000000200000E+07
A 3.000000119209E-01 3.000000400000E+07 4.800000000000E+01
b 7.849999904633E+00
b -7.850000640000E+08
b -1.536000000000E+03
x 9.536743164062E+02
x -1.449998855591E+01
x -3.200000000000E+01

Con escalamiento
Aesc 4.999999969613E-09 -5.000000000000E-01 -1.000000000000E+00
Aesc 1.428571436554E-02 1.000000000000E+00 -4.285714402795E-02
Aesc 3.000000119209E-02 -1.999999955297E-02 1.000000000000E+00
besc 3.925000000000E+01
besc -2.757142782211E+00
besc 7.140000343323E+00
A 4.999999969613E-09 -5.000000000000E-01 -1.000000000000E+00
A 1.428571436554E-02 1.428572500000E+06 2.857143000000E+06
A 3.000000119209E-02 -1.999999955297E-02 1.000000000000E+00
b 3.925000000000E+01
b -1.121428640000E+08
b 7.140000343323E+00

5
A 4.999999969613E-09 -5.000000000000E-01 -1.000000000000E+00
A 1.428571436554E-02 1.428572500000E+06 2.857143000000E+06
A 3.000000119209E-02 3.000000250000E+06 6.000001500000E+06
b 3.925000000000E+01
b -1.121428640000E+08
b -2.355000160000E+08
Aesc 4.999999969613E-09 -5.000000000000E-01 -1.000000000000E+00
Aesc 4.999999969613E-09 5.000003576279E-01 1.000000000000E+00
Aesc 4.999999081434E-09 4.999999105930E-01 1.000000000000E+00
besc 3.925000000000E+01
besc -3.925000000000E+01
besc -3.924999237061E+01
A 4.999999969613E-09 -5.000000000000E-01 -1.000000000000E+00
A 4.999999969613E-09 5.000003576279E-01 1.000000000000E+00
A 4.999999081434E-09 4.999999105930E-01 8.940696716309E-07
b 3.925000000000E+01
b -3.925000000000E+01
b -2.670288085938E-05
x 1.525878906250E+03
x -1.876665306091E+01
x -2.986666679382E+01

Se observa que con la técnica de escalamiento se mejora mucho la solución obtenida(al comparar
con la exacta que se obtiene a continuación), si bien los resultados aún no son satisfactorios, se
evidencia el efecto de la técnica en los resultados obtenidos.
Ahora, usando variables tipo real*16 (equivalente a tomar más cifras significativas), y las técnicas
de pivoteo y escalamiento, se obtiene la solución del sistema
Aesc 5.000000000000E-09 -5.000000000000E-01 -1.000000000000E+00
Aesc 1.428571428571E-02 1.000000000000E+00 -4.285714285714E-02
Aesc 3.000000000000E-02 -2.000000000000E-02 1.000000000000E+00
besc 3.925000000000E+01
besc -2.757142857143E+00
besc 7.140000000000E+00
Apiv 3.000000000000E-02 -2.000000000000E-02 1.000000000000E+00
Apiv 1.428571428571E-02 1.000000000000E+00 -4.285714285714E-02
Apiv 5.000000000000E-09 -5.000000000000E-01 -1.000000000000E+00
bpiv 7.140000000000E+00
bpiv -2.757142857143E+00
bpiv 3.925000000000E+01
A 3.000000000000E-02 -2.000000000000E-02 1.000000000000E+00
A 1.428571428571E-02 1.009523809524E+00 -5.190476190476E-01
A 5.000000000000E-09 -5.000000000000E-01 -1.000000000000E+00
b 7.140000000000E+00
b -6.157142857143E+00
b 3.925000000000E+01

6
A 3.000000000000E-02 -2.000000000000E-02 1.000000000000E+00
A 1.428571428571E-02 1.009523809524E+00 -5.190476190476E-01
A 5.000000000000E-09 -4.999999966667E-01 -1.000000166667E+00
b 7.140000000000E+00
b -6.157142857143E+00
b 3.924999881000E+01
Aesc 3.000000000000E-02 -2.000000000000E-02 1.000000000000E+00
Aesc 1.415094339623E-02 1.000000000000E+00 -5.141509433962E-01
Aesc 4.999999166667E-09 -4.999999133333E-01 -1.000000000000E+00
besc 7.140000000000E+00
besc -6.099056603774E+00
besc 3.924999226833E+01
Apiv 3.000000000000E-02 -2.000000000000E-02 1.000000000000E+00
Apiv 1.415094339623E-02 1.000000000000E+00 -5.141509433962E-01
Apiv 4.999999166667E-09 -4.999999133333E-01 -1.000000000000E+00
bpiv 7.140000000000E+00
bpiv -6.099056603774E+00
bpiv 3.924999226833E+01
A 3.000000000000E-02 -2.000000000000E-02 1.000000000000E+00
A 1.415094339623E-02 1.000000000000E+00 -5.141509433962E-01
A 4.999999166667E-09 -4.999999133333E-01 -1.257075427138E+00
b 7.140000000000E+00
b -6.099056603774E+00
b 3.620046449503E+01
x 1.183975454395E+03
x -2.090525086204E+01
x -2.879736864910E+01

3 Descomposición LU
Calcular la matriz inversa usando descomposición LU
El programa que calcula la matriz inversa usando descomposición LU esta hecho en fortran, dentro
de la carpeta LU.zip

Vous aimerez peut-être aussi