Está en la página 1de 20

TEMA 8

RESOLUCIÓN NUMÉRICA DE SISTEMAS DE


ECUACIONES LINEALES

1.- Introducción.
2.- Eliminación gaussiana simple.
3.- Sistemas mal condicionados.
4.- Técnicas de mejoramiento de soluciones.
4.1. Uso de más cifras significativas.
4.2. Pivoteo.
4.3. Escalamiento.
5.- Método de Gauss-Seidel.

1
8.1. Introducción

En este tema nos ocuparemos de la resolución de sistemas de ecuaciones algebraicas


lineales, compatibles determinados, que, en general, tendrán la siguiente forma:

𝑎𝑎11 𝑥𝑥1 + 𝑎𝑎12 𝑥𝑥2 + ... + 𝑎𝑎1𝑛𝑛 𝑥𝑥𝑛𝑛 = 𝑘𝑘1


𝑎𝑎21 𝑥𝑥1 + 𝑎𝑎22 𝑥𝑥2 + ... + 𝑎𝑎2𝑛𝑛 𝑥𝑥𝑛𝑛 = 𝑘𝑘2

. . . . ... . . . .
𝑎𝑎𝑛𝑛1 𝑥𝑥1 + 𝑎𝑎𝑛𝑛2 𝑥𝑥2 + ... + 𝑎𝑎𝑛𝑛𝑛𝑛 𝑥𝑥𝑛𝑛 = 𝑘𝑘𝑛𝑛

También se pueden representar en forma matricial 𝐴𝐴 ∙ 𝑋𝑋 = 𝐶𝐶:

𝑎𝑎11 𝑎𝑎12 . . . 𝑎𝑎1𝑛𝑛 𝑥𝑥1 𝑘𝑘1


𝑎𝑎21 𝑎𝑎22 . . . 𝑎𝑎2𝑛𝑛 𝑥𝑥2 𝑘𝑘2
� . . ... . � �. . .� = �. . . �
𝑎𝑎𝑛𝑛1 𝑎𝑎𝑛𝑛2 . . . 𝑎𝑎𝑛𝑛𝑛𝑛 𝑥𝑥𝑛𝑛 𝑘𝑘𝑛𝑛

Cuando nos encontremos con un número bajo de incógnitas (𝑛𝑛 ≤ 3), los sistemas se
podrán resolver por los métodos de análisis clásico (igualación, sustitución, Cramer, etc.)
o por los métodos gráficos (aunque este método solo es eficiente para 𝑛𝑛 = 2).

Sin embargo, cuando el número de incógnitas es elevado, empieza a ser útil recurrir al
método de Gauss y/o a métodos numéricos. El método de Gauss, a pesar de su antigüedad,
permanece hasta nuestros días como uno de los algoritmos de mayor importancia a la
hora de resolver sistemas de ecuaciones lineales. Ello es debido a su facilidad de
programar y de aplicar con el uso de ordenadores.

8.2. Eliminación gaussiana simple

Como se recordará este método consiste en:

1. Manejar las ecuaciones para eliminar una incógnita en la segunda ecuación, dos
incógnitas en la tercera… hasta llegar a quedarnos con una incógnita en la última
ecuación. Durante el manejo de las ecuaciones se permite:
a. Cambiar el orden de las ecuaciones.
b. Multiplicar una ecuación por un número distinto de cero.
c. Sumar a una ecuación una combinación lineal de alguna o algunas de las
otras.
2. La última ecuación, donde ya solo queda una incógnita, se resuelve directamente
y el resultado se sustituye hacia atrás en las ecuaciones escalonadas hasta
encontrar el valor de las incógnitas restantes.

2
Ejemplo 1. Resolver por Gauss el siguiente sistema:

𝑥𝑥 + 2𝑦𝑦 + 𝑧𝑧 = 4
−3𝑥𝑥 − 2𝑦𝑦 + 9𝑧𝑧 = 40 �
4𝑥𝑥 + 9𝑦𝑦 + 6𝑧𝑧 = 24
Solución:

Hemos de ir eliminando las incógnitas secuencialmente, utilizando las operaciones


permitidas:
𝑥𝑥 + 2𝑦𝑦 + 𝑧𝑧 = 4
−3𝑥𝑥 − 2𝑦𝑦 + 9𝑧𝑧 = 40 �
4𝑥𝑥 + 9𝑦𝑦 + 6𝑧𝑧 = 24

𝐸𝐸𝐸𝐸2 + 3𝐸𝐸𝐸𝐸 1

𝐸𝐸𝐸𝐸3 − 4𝐸𝐸𝐸𝐸1

𝑥𝑥 + 2𝑦𝑦 + 𝑧𝑧 = 4
4𝑦𝑦 + 12𝑧𝑧 = 52 �
𝑦𝑦 + 2𝑧𝑧 = 8

1
↓ 𝐸𝐸𝐸𝐸3 − 𝐸𝐸𝐸𝐸2
4

𝑥𝑥 + 2𝑦𝑦 + 𝑧𝑧 = 4
4𝑦𝑦 + 12𝑧𝑧 = 52 �
−𝑧𝑧 = −5

Ya tenemos el sistema escalonado, con una sola incógnita en la última ecuación. Ahora
hemos de calcular dicha incógnita y sustituyendo “hacia arriba” encontrar el valor de las
restantes:
𝑥𝑥 + 2𝑦𝑦 + 𝑧𝑧 = 4
4𝑦𝑦 + 12𝑧𝑧 = 52 �
−𝑧𝑧 = −5 𝑧𝑧 = 5

𝑥𝑥 + 2𝑦𝑦 + 𝑧𝑧 = 4
4𝑦𝑦 + 12𝑧𝑧 = 52 � 𝑦𝑦 = −2
−𝑧𝑧 = −5 𝑧𝑧 = 5

𝑥𝑥 + 2𝑦𝑦 + 𝑧𝑧 = 4 𝑥𝑥 = 3
4𝑦𝑦 + 12𝑧𝑧 = 52 � 𝑦𝑦 = −2
−𝑧𝑧 = −5 𝑧𝑧 = 5

𝑥𝑥 = 3
Solución → � 𝑦𝑦 = −2
𝑧𝑧 = 5

3
Ejemplo 2. Resolver por eliminación gaussiana simple el siguiente sistema:

3𝑥𝑥1 − 0.1𝑥𝑥2 − 0.2𝑥𝑥3 = 7.85


0.1𝑥𝑥1 + 7𝑥𝑥2 − 0.3𝑥𝑥3 = −19.3 �
0.3𝑥𝑥1 − 0.2𝑥𝑥2 + 10𝑥𝑥3 = 71.4

Utilizar 5 cifras decimales.

Solución:

Hemos de ir eliminando las incógnitas secuencialmente, utilizando las operaciones


permitidas:
3𝑥𝑥1 − 0.10000𝑥𝑥2 − 0.20000𝑥𝑥3 = 7.85000
0.10000𝑥𝑥1 + 7𝑥𝑥2 − 0.30000𝑥𝑥3 = −19.30000 �
0.30000𝑥𝑥1 − 0.20000𝑥𝑥2 + 10𝑥𝑥3 = 71.40000

1
↓ 3 𝐸𝐸𝐸𝐸1

𝑥𝑥1 − 0.03333𝑥𝑥2 − 0.06667𝑥𝑥3 = 2.61667


0.10000𝑥𝑥1 + 7𝑥𝑥2 − 0.30000𝑥𝑥3 = −19.30000 �
0.30000𝑥𝑥1 − 0.20000𝑥𝑥2 + 10𝑥𝑥3 = 71.40000

𝐸𝐸𝐸𝐸2 − 0.10000 𝐸𝐸𝐸𝐸 1



𝐸𝐸𝐸𝐸3 − 0.30000 𝐸𝐸𝐸𝐸1

𝑥𝑥1 − 0.03333𝑥𝑥2 − 0.06667𝑥𝑥3 = 2.61667


7.00333𝑥𝑥2 − 0.29333𝑥𝑥3 = −19.56167 �
−0.19000𝑥𝑥2 + 10.02000𝑥𝑥3 = 70.61500

1
↓ 7.00333 𝐸𝐸𝐸𝐸2

𝑥𝑥1 − 0.03333𝑥𝑥2 − 0.06667𝑥𝑥3 = 2.61667


𝑥𝑥2 − 0.04188𝑥𝑥3 = −2.79320 �
−0.19000𝑥𝑥2 + 10.02000𝑥𝑥3 = 70.61500

↓ 𝐸𝐸𝐸𝐸3 + 0.19000 𝐸𝐸𝐸𝐸2

𝑥𝑥1 − 0.03333𝑥𝑥2 − 0.06667𝑥𝑥3 = 2.61667


𝑥𝑥2 − 0.04188𝑥𝑥3 = −2.79320 �
+ 10.01204𝑥𝑥3 = 70.08429

Ya tenemos el sistema escalonado, con una sola incógnita en la última ecuación. Ahora
hemos de calcular dicha incógnita y sustituyendo “hacia arriba” encontrar el valor de las

4
restantes. Así pues, la solución es:
𝒙𝒙𝟏𝟏 = 𝟑𝟑. 𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎
𝒙𝒙𝟐𝟐 = −𝟐𝟐. 𝟓𝟓𝟓𝟓𝟓𝟓𝟓𝟓𝟓𝟓
𝒙𝒙𝟑𝟑 = 𝟕𝟕. 𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎𝟎

8.3. Sistemas mal condicionados

Vamos a considerar sistemas de dos ecuaciones con dos incógnitas para que se pueda
representar gráficamente la búsqueda de soluciones y se pueda ilustrar el problema del
mal condicionamiento. Sean los siguientes sistemas de ecuaciones:

1
− 𝑥𝑥1 + 𝑥𝑥2 = 1
2 � → 𝑅𝑅(𝐴𝐴) = 1 ≠ 2 = 𝑅𝑅(𝐴𝐴∗ )
1 1
− 𝑥𝑥1 + 𝑥𝑥2 =
2 2
(1) SI

1
− 𝑥𝑥1 + 𝑥𝑥2 = 1
2 � → 𝑅𝑅(𝐴𝐴) = 1 = 𝑅𝑅(𝐴𝐴∗ ) < 𝑛𝑛
−𝑥𝑥1 + 2𝑥𝑥2 = 2
(2) SCI

2.3
− 𝑥𝑥 + 𝑥𝑥2 = 1.1
5 1 � → 𝑅𝑅(𝐴𝐴) = 2 = 𝑅𝑅(𝐴𝐴∗ ) = 𝑛𝑛
1
− 𝑥𝑥1 + 𝑥𝑥2 = 1
2
(3) SCD

5
4𝑥𝑥1 + 3𝑥𝑥2 = 27
� → 𝑅𝑅(𝐴𝐴) = 2 = 𝑅𝑅(𝐴𝐴∗ ) = 𝑛𝑛
9𝑥𝑥1 − 5𝑥𝑥2 = 45
(4) SCD

El sistema (1) no tiene solución.

El sistema (2) tiene infinitas soluciones.

Los sistemas (3) y (4) tienen solución única. Sin embargo, hay una diferencia fundamental
entre ellos y es la sensibilidad de sus resultados ante pequeñas variaciones de los
coeficientes.

En el sistema (4) una pequeña variación en uno de sus coeficientes provoca una pequeña
variación en el resultado final del sistema ya que las rectas que lo componen tienen
pendientes muy distintas.

Sistema NO MAL CONDICIONADO

En el sistema (3) una pequeña variación en sus coeficientes provoca una gran variación
en los resultados pues sus pendientes son muy similares y, una pequeña variación de una
de las dos pendientes provoca que el punto de corte se desplace mucho. A este tipo de
sistemas se denominan sistemas mal condicionados.

6
Sistema MAL CONDICIONADO

Ejemplo 3. Supongamos el siguiente sistema de ecuaciones lineales que soluciona el


mismo problema, pero cuyos coeficientes han sido calculados experimentalmente por tres
grupos distintos de investigadores:

Vemos que pequeñas variaciones en los valores de los coeficientes y/o términos
independientes provocan una gran variación en las soluciones del sistema. Estamos, pues,
ante un sistema mal condicionado.

Observación. Si estos sistemas se resuelven con Matlab, la solución del primer y tercer
sistema coinciden con las soluciones dadas, pero el sistema segundo tiene como solución:

𝑥𝑥1 = −0.2679; 𝑥𝑥2 = 2.9365; 𝑥𝑥3 = 0.6498; 𝑥𝑥4 = 1.2396

7
Ejemplo 4. Consideremos un ejemplo más simple:

𝑥𝑥1 + 2𝑥𝑥2 = 10 𝑥𝑥 = 4
�→� 1
1.1𝑥𝑥1 + 2𝑥𝑥2 = 10.4 𝑥𝑥2 = 3

𝑥𝑥1 + 2𝑥𝑥2 = 10 𝑥𝑥 = 8
�→� 1
1.05𝑥𝑥1 + 2𝑥𝑥2 = 10.4 𝑥𝑥2 = 1

Nuevamente los resultados se deben al mal condicionamiento del sistema.

Si consideramos el siguiente sistema:

𝑎𝑎11 𝑥𝑥1 + 𝑎𝑎12 𝑥𝑥2 = 𝑘𝑘1



𝑎𝑎21 𝑥𝑥1 + 𝑎𝑎22 𝑥𝑥2 = 𝑘𝑘2

Si lo transformamos en funciones explícitas, para facilitar su representación, tendríamos


las dos rectas siguientes:
𝑎𝑎11 𝑘𝑘1
𝑥𝑥2 = − 𝑥𝑥1 + ⎫
𝑎𝑎12 𝑎𝑎12 ⎪

𝑎𝑎21 𝑘𝑘2 ⎬
𝑥𝑥2 = − 𝑥𝑥1 + ⎪
𝑎𝑎22 𝑎𝑎22 ⎭

Si asumimos que en un mal condicionamiento las pendientes son casi iguales:

𝑎𝑎11 𝑎𝑎21

𝑎𝑎12 𝑎𝑎22

Donde, si multiplicamos en cruz:


𝑎𝑎11 · 𝑎𝑎22 ≃ 𝑎𝑎12 · 𝑎𝑎21
Que se puede expresar como:

𝑎𝑎11 · 𝑎𝑎22 − 𝑎𝑎12 · 𝑎𝑎21 ≃ 0 (5)

Si recordamos que (5) es el determinante de un sistema de dos ecuaciones con dos


incógnitas, se podría extraer la conclusión general de que un sistema mal condicionado
es aquel cuyo determinante de la matriz de sus coeficientes se aproxima a cero.

Es difícil especificar cuánto de cerca debe estar el determinante de cero para diagnosticar
un mal condicionamiento. Y esto se complica más si recordamos que un determinante
cambia su valor si multiplicamos una o varias ecuaciones por un escalar sin alterarse la
solución del sistema.

8
Para evitar esto se recurre a escalar las ecuaciones de forma tal, que el valor máximo que
pueda haber como coeficiente sea 1. De esta forma, un valor próximo a cero del
determinante nos dará una idea del mal condicionamiento del sistema.

Ejemplo 5. Sabiendo que, en los siguientes sistemas, el (a) no está mal condicionado y
el (b) está mal condicionado. Calcular el determinante de la matriz de los coeficientes
antes y después de escalar las ecuaciones.

3𝑥𝑥1 + 2𝑥𝑥2 = 18 10𝑥𝑥1 + 20𝑥𝑥2 = 100


a) � b) �
−𝑥𝑥1 + 2𝑥𝑥2 = 2 11𝑥𝑥1 + 20𝑥𝑥2 = 104

Solución:

Respecto del sistema (a) tendremos:

3𝑥𝑥1 + 2𝑥𝑥2 = 18
� → |𝐴𝐴| = 3 ∗ 2 − 2 ∗ (−1) = 8
−𝑥𝑥1 + 2𝑥𝑥2 = 2

Escalando ambas ecuaciones:

1 1
3𝑥𝑥1 + 2𝑥𝑥2 = 18 3·𝐸𝐸𝑐𝑐1 𝑦𝑦 2·𝐸𝐸𝑐𝑐2 𝑥𝑥1 + 0.667𝑥𝑥2 = 6
� �⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯� �→
−𝑥𝑥1 + 2𝑥𝑥2 = 2 −0.500𝑥𝑥1 + 𝑥𝑥2 = 1

→ |𝐴𝐴| = 1 ∗ 1 − 0.667 ∗ (−0.5) = 1.334

Y si analizamos el sistema (b):

10𝑥𝑥1 + 20𝑥𝑥2 = 100


� → |𝐴𝐴| = 10 ∗ 20 − 11 ∗ 20 = −20
11𝑥𝑥1 + 20𝑥𝑥2 = 104

Escalando ambas ecuaciones:

1 1
10𝑥𝑥1 + 20𝑥𝑥2 = 100 20·𝐸𝐸𝑐𝑐1 𝑦𝑦 20·𝐸𝐸𝑐𝑐2 0.50𝑥𝑥1 + 𝑥𝑥2 = 5
� �⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯� �→
11𝑥𝑥1 + 20𝑥𝑥2 = 104 0.55𝑥𝑥1 + 𝑥𝑥2 = 5.20

→ |𝐴𝐴| = 0.50 ∗ 1 − 0.55 ∗ 1 = −0.05

Vemos que, después de escalar, el sistema mal condicionado presenta un valor en su


determinante de la matriz de los coeficientes muy próximo a cero. Sin embargo, es
imposible fijar un límite a esta proximidad y solo nos servirá de orientación.

Finalmente, si nos encontramos ante un sistema mal condicionado extremaremos la


exactitud en el cálculo de sus coeficientes.

9
8.4. Técnicas de mejoramiento de soluciones.

Las siguientes técnicas se pueden incorporar al algoritmo de Gauss en sistemas mal


condicionados y, también, para evitar su problema de acumulación de errores de
redondeo.

8.4.1. Uso de más cifras significativas

Aparte de asegurar al máximo los coeficientes del sistema, el uso de un mayor número
de cifras significativas mejora la solución final en sistemas mal condicionados.

8.4.2. Pivoteo

Para reducir errores de redondeo, a la hora de eliminar incógnitas hemos de procurar que
la ecuación base no tenga el coeficiente de la incógnita a eliminar próximo a cero. Para
ello basta elegir, como ecuación base, la ecuación cuyo coeficiente sea mayor.

Ejemplo 6. Resolver el siguiente sistema.

0.0003𝑥𝑥1 + 3.0000𝑥𝑥2 = 2.0001



1.0000𝑥𝑥1 + 1.0000𝑥𝑥2 = 1.0000
a) Sin pivoteo.
b) Con pivoteo.

Solución:

a) Sin pivoteo
1
0.0003𝑥𝑥1 + 3.0000𝑥𝑥2 = 2.0001 𝐸𝐸𝑐𝑐2 − 0.0003 𝐸𝐸𝑐𝑐1
� �⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯�
1.0000𝑥𝑥1 + 1.0000𝑥𝑥2 = 1.0000

0.0003𝑥𝑥1 + 3.0000𝑥𝑥2 = 2.0001


→ �
− 9999.0000𝑥𝑥2 = −6666.0000

𝑥𝑥1 = 0
Solución → �
𝑥𝑥2 = 0.6667

b) Con pivoteo

0.0003𝑥𝑥1 + 3.0000𝑥𝑥2 = 2.0001 𝐸𝐸𝑐𝑐1 ↔ 𝐸𝐸𝑐𝑐2 (Pivoteo)


� �⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯�
1.0000𝑥𝑥1 + 1.0000𝑥𝑥2 = 1.0000

1.0000𝑥𝑥1 + 1.0000𝑥𝑥2 = 1.0000 𝐸𝐸𝑐𝑐2 − 0.0003 𝐸𝐸𝑐𝑐1


→ � �⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯�
0.0003𝑥𝑥1 + 3.0000𝑥𝑥2 = 2.0001

10
1.0000𝑥𝑥1 + 1.0000𝑥𝑥2 = 1.0000
→ �
+ 2.9997𝑥𝑥2 = 1.9998

𝑥𝑥1 = 0.3333
Solución → �
𝑥𝑥2 = 0.6667

8.4.3. Escalamiento

Además de servir para la evaluación del mal condicionamiento, minimiza los errores de
redondeo cuando alguno de los coeficientes de un sistema es mucho más grande que los
demás.

Ejemplo 7. Resolver el siguiente sistema de ecuaciones y dar el resultado con 2 cifras


decimales.

2𝑥𝑥1 + 100000𝑥𝑥2 = 100000



𝑥𝑥1 + 𝑥𝑥2 = 2

a) Directamente.
b) Con escalamiento y pivoteo.

Solución:

a) Directamente

1
2𝑥𝑥1 + 100000𝑥𝑥2 = 100000 𝐸𝐸𝑐𝑐2 − 2 𝐸𝐸𝑐𝑐1 2𝑥𝑥1 + 100000𝑥𝑥2 = 100000
� �⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯� �
𝑥𝑥1 + 𝑥𝑥2 = 2 − 49999𝑥𝑥2 = −49998

𝑥𝑥1 = 0.00
→ Solución �
𝑥𝑥2 = 1.00

Aunque 𝑥𝑥2 es correcta, 𝑥𝑥1 tienen un 100% de error debido al redondeo.

b) Escalamiento y pivoteo

1
2𝑥𝑥1 + 100000𝑥𝑥2 = 100000 100000 𝐸𝐸𝑐𝑐1 (Escalamiento)
� �⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯�
𝑥𝑥1 + 𝑥𝑥2 = 2

0.00002𝑥𝑥1 + 𝑥𝑥2 = 1 𝐸𝐸𝑐𝑐1 ↔ 𝐸𝐸𝑐𝑐2 (Pivoteo)


→ � �⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯�
𝑥𝑥1 + 𝑥𝑥2 = 2

𝑥𝑥1 + 𝑥𝑥2 = 2 𝐸𝐸𝑐𝑐2 − 0.00002 𝐸𝐸𝑐𝑐1 (Gauss) 𝑥𝑥1 + 𝑥𝑥2 = 2


� �⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯� �
0.00002𝑥𝑥1 + 𝑥𝑥2 = 1 + 0.99998𝑥𝑥2 = 0.99996

11
𝑥𝑥1 = 1.00
→ Solución �
𝑥𝑥2 = 1.00

De esta forma, el escalamiento conduce a una respuesta más correcta.

NOTA. En algunos casos, el pivoteo y el escalamiento no son suficientes para asegurar


resultados precisos. Los errores, en general, se pueden reducir a través de un
procedimiento de corrección de errores.

8.5. Método de Gauss-Seidel

El método de eliminación de Gauss puede llegar a resolver, teóricamente, cualquier


tamaño de sistema. Sin embargo, en sistemas grandes, más de 30 ecuaciones con 30
incógnitas, debido a los errores de redondeo, los errores en las soluciones finales pueden
ser considerables, sobre todo si el sistema está mal condicionado.

Es aquí donde pueden resultar más exactos los métodos numéricos iterativos, pues se
pueden continuar aplicando hasta reducir el error al nivel deseado.

El único problema de estos métodos iterativos es su posible falta de convergencia, que se


analizará en el siguiente apartado.

Método de Gauss-Seidel

Esta técnica muestra cierta similitud con el método de iteración de punto fijo para la
resolución de ecuaciones algebraicas ordinarias, ya que consiste en despejar una de las
incógnitas de una ecuación dejándola en función de las otras. Generalmente se despejan
las incógnitas que ocupan la diagonal principal del sistema.

Se comienza despejando la incógnita 𝑥𝑥1 de la primera ecuación, la 𝑥𝑥2 de la segunda


ecuación, … 𝑥𝑥𝑖𝑖 de la i-ésima ecuación, … hasta llegar a 𝑥𝑥𝑛𝑛 que despejaremos de la n-
ésima ecuación.

Evidentemente, antes de comenzar a realizar este proceso, hemos de realizar los


intercambios de ecuaciones necesarios para asegurarnos que ninguna de las incógnitas
que ocupan la diagonal principal tiene a cero por coeficiente.

Consideremos el siguiente sistema:

12
𝑎𝑎11 𝑥𝑥1 + 𝑎𝑎12 𝑥𝑥2 + 𝑎𝑎13 𝑥𝑥3 + ... + 𝑎𝑎1𝑛𝑛 𝑥𝑥𝑛𝑛 = 𝑘𝑘1
𝑎𝑎21 𝑥𝑥1 + 𝑎𝑎22 𝑥𝑥2 + 𝑎𝑎23 𝑥𝑥3 + ... + 𝑎𝑎2𝑛𝑛 𝑥𝑥𝑛𝑛 = 𝑘𝑘2 ⎫⎪
𝑎𝑎31 𝑥𝑥1 + 𝑎𝑎32 𝑥𝑥2 + 𝑎𝑎33 𝑥𝑥3 + ... + 𝑎𝑎3𝑛𝑛 𝑥𝑥𝑛𝑛 = 𝑘𝑘3
. . . . . . ... . . . . ⎬⎪
𝑎𝑎𝑛𝑛1 𝑥𝑥1 + 𝑎𝑎𝑛𝑛2 𝑥𝑥2 + 𝑎𝑎𝑛𝑛3 𝑥𝑥3 + ... + 𝑎𝑎𝑛𝑛𝑛𝑛 𝑥𝑥𝑛𝑛 = 𝑘𝑘𝑛𝑛 ⎭

Si en él realizamos los despejes propuestos obtenemos (siempre que 𝑎𝑎𝑖𝑖𝑖𝑖 ≠ 0):

𝑘𝑘1 𝑎𝑎12 𝑎𝑎13 𝑎𝑎1𝑛𝑛


𝑥𝑥1 = − 𝑥𝑥 − 𝑥𝑥 − ... − 𝑥𝑥 ⎫
𝑎𝑎11 𝑎𝑎11 2 𝑎𝑎11 3 𝑎𝑎11 𝑛𝑛 ⎪
𝑘𝑘2 𝑎𝑎21 𝑎𝑎23 𝑎𝑎2𝑛𝑛 ⎪
𝑥𝑥2 = − 𝑥𝑥 − 𝑥𝑥 − ... − 𝑥𝑥 ⎪
𝑎𝑎22 𝑎𝑎22 1 𝑎𝑎22 3 𝑎𝑎22 𝑛𝑛
𝑘𝑘3 𝑎𝑎31 𝑎𝑎32 𝑎𝑎3𝑛𝑛 Fórmulas iterativas
𝑥𝑥3 = − 𝑥𝑥 − 𝑥𝑥 − ... − 𝑥𝑥⎬
𝑎𝑎33 𝑎𝑎33 1 𝑎𝑎33 2 𝑎𝑎33 𝑛𝑛 ⎪
. . . . . . . . ... . . ⎪
𝑘𝑘𝑛𝑛 𝑎𝑎𝑛𝑛1 𝑎𝑎𝑛𝑛2 𝑎𝑎(𝑛𝑛−1)𝑛𝑛 ⎪
𝑥𝑥𝑛𝑛 = − 𝑥𝑥 − 𝑥𝑥 − ... − 𝑥𝑥
𝑎𝑎𝑛𝑛𝑛𝑛 𝑎𝑎𝑛𝑛𝑛𝑛 1 𝑎𝑎𝑛𝑛𝑛𝑛 2 𝑎𝑎𝑛𝑛𝑛𝑛 𝑛𝑛−1 ⎭

Para comenzar el método iterativo, partimos de una solución aproximada a la real o de la


solución trivial (0, 0, 0, …, 0) (Ver nota 1) que sustituimos en las ecuaciones y obtenemos
una solución aproximada.

En el proceso iterativo, cada una de las aproximaciones de cada variable que se calcula
se sustituye inmediatamente en el cálculo de la siguiente variable en esa misma iteración;
es decir, en las fórmulas se sustituye siempre el valor más actualizado que se
disponga de cada variable. Posteriormente sustituimos esta solución aproximada en las
ecuaciones y volvemos a obtener una solución aún más aproximada. Así sucesivamente
hasta que se cumpla el criterio de parada (error relativo inferior a uno dado) para todas
las incógnitas. Es decir, que si paramos en la iteración k se ha de cumplir que:

𝑥𝑥𝑖𝑖𝑘𝑘 − 𝑥𝑥𝑖𝑖𝑘𝑘−1
𝜀𝜀𝑥𝑥 𝑘𝑘 =� � ∗ 100 ≤ 𝜀𝜀𝑟𝑟 , ∀𝑖𝑖 = 1,2, . . . , 𝑛𝑛
𝑖𝑖 𝑥𝑥𝑖𝑖𝑘𝑘

Siendo 𝜀𝜀𝑟𝑟 el error relativo máximo que hemos adoptado como criterio de parada para el
proceso iterativo.

Antes de presentar un ejemplo de aplicación del método de Gauss-Seidel vamos a estudiar


la convergencia de este.

Convergencia del método de Gauss-Seidel.

El método de Gauss-Seidel puede tener problemas de no convergencia, es decir, que al


realizar varias iteraciones las variables no vayan convergiendo a un valor determinado.

1
Generalmente partiremos de esta solución.

13
Sin embargo, en caso de fallar el método se puede buscar un reordenamiento de las
ecuaciones, de tal manera que el sistema se transforme en otro cuya matriz de coeficientes
sea diagonalmente dominante, según el teorema siguiente:

“El método de Gauss-Seidel convergerá si en la matriz de coeficientes, el valor absoluto


de cada elemento de la diagonal principal es mayor que la suma de los valores absolutos
de todos los demás elementos de la misma fila”.

Es decir, que se asegura la convergencia si se cumple que:

𝑛𝑛

|𝑎𝑎𝑖𝑖𝑖𝑖 | > ��𝑎𝑎𝑖𝑖𝑖𝑖 � para 1 ≤ 𝑖𝑖 ≤ 𝑛𝑛


𝑗𝑗=1
𝑗𝑗≠𝑖𝑖

Cabe subrayar que son pocos los sistemas de ecuaciones que cumplen con el criterio de
convergencia antes mencionado, sin embargo, si se ordenan las ecuaciones para que el
sistema cumpla con tal criterio, entonces se tiene por seguro que el sistema convergerá.
En caso de no cumplirse por completo el teorema, por lo menos, se debe aproximar lo
más que se pueda, para obtener algún beneficio.

El hecho de no cumplirse el teorema no quiere decir que el sistema no converja, puede


converger o no. Lo que es cierto es que si se cumple el teorema EL SISTEMA
CONVERGE SEGURO.

Ejemplo 8. En el sistema siguiente

𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 − 5𝑥𝑥4 = −14


𝑥𝑥1 − 𝟏𝟏𝟏𝟏𝑥𝑥2 + 2𝑥𝑥3 − 𝑥𝑥4 = −17

3𝑥𝑥1 − 2𝑥𝑥2 + 𝟖𝟖𝑥𝑥3 − 𝑥𝑥4 = 19
6𝑥𝑥1 − 𝑥𝑥2 − 𝑥𝑥3 + 3𝑥𝑥4 = 17

no se cumple la condición de convergencia, aunque se cumpla en las ecuaciones 2 y 3:

Ecuación 2. La incógnita que ocupa la diagonal principal es 𝑥𝑥2 , por tanto, su coeficiente
en valor absoluto debe ser mayor que la suma de los valores absolutos del resto de los
coeficientes de las restantes incógnitas que intervienen en la 2ª ecuación, es decir,
|−10| > |1| + |2| + |−1| SE CUMPLE.

Ecuación 3. La incógnita que ocupa la diagonal principal es 𝑥𝑥3 , por tanto, su coeficiente
en valor absoluto debe ser mayor que la suma de los valores absolutos del resto de los
coeficientes de las restantes incógnitas que intervienen en la 3ª ecuación, es decir,
|8| > |3| + |−2| + |−1| SE CUMPLE.

Sin embargo, en la ecuación 1ª y 4ª no se cumple el criterio de convergencia, pues, por

14
ejemplo, en la ecuación 4ª la incógnita que ocupa la diagonal principal es 𝑥𝑥4 , por tanto,
su coeficiente en valor absoluto debe ser mayor que la suma de los valores absolutos del
resto de los coeficientes de las restantes incógnitas que intervienen en la 4ª ecuación, pero
|3| < |6| + |−1| + |−1| NO SE CUMPLE.

A la hora de resolver el sistema, podemos abordarlo tal como está, sin tener asegurada su
convergencia, o realizar cambios en las ecuaciones para asegurarla.

Si nos decidimos por esta segunda opción, por ejemplo, en el sistema anterior, si
intercambiamos la ecuación 1ª con la 4ª obtenemos el sistema equivalente siguiente:

6𝑥𝑥1 − 𝑥𝑥2 − 𝑥𝑥3 + 3𝑥𝑥4 = 17


𝑥𝑥1 − 10𝑥𝑥2 + 2𝑥𝑥3 − 𝑥𝑥4 = −17

3𝑥𝑥1 − 2𝑥𝑥2 + 8𝑥𝑥3 − 𝑥𝑥4 = 19
𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 − 5𝑥𝑥4 = −14

que es fácil comprobar que cumple la condición de convergencia.

Ejemplo 9. Transformar el siguiente sistema de forma que se cumpla la condición


suficiente de convergencia del método de Gauss-Seidel.

𝑥𝑥 − 3𝑦𝑦 + 12𝑧𝑧 = 10
5𝑥𝑥 + 12𝑦𝑦 + 2𝑧𝑧 = −33 �
𝑥𝑥 − 14𝑦𝑦 = −103

Solución:

La ecuación 2 cumple la condición de convergencia.

Es fácil deducir que si intercambiamos la ecuación 1 y la 3 conseguimos la condición de


convergencia en la nueva ecuación 3:

𝑥𝑥 − 3𝑦𝑦 + 12𝑧𝑧 = 10 𝑥𝑥 − 14𝑦𝑦 = −103


𝐸𝐸𝑐𝑐1 ↔ 𝐸𝐸𝑐𝑐3
5𝑥𝑥 + 12𝑦𝑦 + 2𝑧𝑧 = −33 � �⎯⎯⎯⎯⎯⎯⎯⎯⎯� 5𝑥𝑥 + 12𝑦𝑦 + 2𝑧𝑧 = −33 �
𝑥𝑥 − 14𝑦𝑦 = −103 𝑥𝑥 − 3𝑦𝑦 + 12𝑧𝑧 = 10

Pero aún nos falta que se cumpla en la primera ecuación. Pero si sumamos a la ecuación
1 la ecuación 2:

𝑥𝑥 − 14𝑦𝑦 = −103 𝐸𝐸𝑐𝑐1 + 𝐸𝐸𝑐𝑐2


6𝑥𝑥 − 2𝑦𝑦 + 2𝑧𝑧 = −136
5𝑥𝑥 + 12𝑦𝑦 + 2𝑧𝑧 = −33 � �⎯⎯⎯⎯⎯⎯⎯⎯� 5𝑥𝑥 + 12𝑦𝑦 + 2𝑧𝑧 = −33 �
𝑥𝑥 − 3𝑦𝑦 + 12𝑧𝑧 = 10 𝑥𝑥 − 3𝑦𝑦 + 12𝑧𝑧 = 10

conseguimos también la condición de convergencia en la ecuación 1. Por tanto, tenemos

15
la certeza de que el sistema siguiente, equivalente al inicial, convergerá con seguridad por
el método de Gauss-Seidel,

6𝑥𝑥 − 2𝑦𝑦 + 2𝑧𝑧 = −136


5𝑥𝑥 + 12𝑦𝑦 + 2𝑧𝑧 = −33 �
𝑥𝑥 − 3𝑦𝑦 + 12𝑧𝑧 = 10
pues,

Ecuación 1: |6| > |−2| + |2| SE CUMPLE.


Ecuación 2: |12| > |5| + |2| SE CUMPLE.
Ecuación 3: |12| > |1| + |−3| SE CUMPLE.

Ejemplo 10. Resolver por Gauss-Seidel, el siguiente sistema de ecuaciones, hasta que el
error relativo sea inferior al 1%. Utilizar 3 cifras decimales.

3𝑥𝑥1 − 0.100𝑥𝑥2 − 0.200𝑥𝑥3 = 7.850


0.100𝑥𝑥1 + 7𝑥𝑥2 − 0.300𝑥𝑥3 = −19.300 �
0.300𝑥𝑥1 − 0.200𝑥𝑥2 + 10𝑥𝑥3 = 71.400

Solución:

Calculemos primero las fórmulas iterativas para este ejercicio, pero si queremos
asegurarnos la convergencia para este método, antes debemos comprobar que se cumple
que:
𝑛𝑛

|𝑎𝑎𝑖𝑖𝑖𝑖 | > ��𝑎𝑎𝑖𝑖𝑖𝑖 � para 1 ≤ 𝑖𝑖 ≤ 𝑛𝑛


𝑗𝑗=1
𝑗𝑗≠𝑖𝑖
Así pues,

Ecuación 1: |3| > |−0.100| + |−0.200| SE CUMPLE.


Ecuación 2: |7| > |0.100| + |−0.300| SE CUMPLE.
Ecuación 3: |10| > |0.300| + |−0.200| SE CUMPLE.

Entonces, las fórmulas iterativas para este sistema que nos aseguran la convergencia son:

7.850 + 0.100𝑥𝑥2 + 0.200𝑥𝑥3


𝑥𝑥1 = ⎫
3 ⎪

−19.300 − 0.100𝑥𝑥1 + 0.300𝑥𝑥3
𝑥𝑥2 = (6)
7 ⎬

71.400 − 0.300𝑥𝑥1 + 0.200𝑥𝑥2 ⎪
𝑥𝑥3 = ⎭
10

Construimos la siguiente tabla iterativa:


16
Iteración 𝒙𝒙𝟏𝟏 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝜺𝜺𝒙𝒙𝟏𝟏 𝜺𝜺𝒙𝒙𝟐𝟐 𝜺𝜺𝒙𝒙𝟑𝟑
0 0.000 0.000 0.000
1
2
3

ITERACIÓN 1:

En la iteración 1 partimos de la solución trivial (0, 0, 0) sustituyéndola en la 𝑥𝑥1 de las


fórmulas iterativas (6):

7.850+0.100·(0.000)+0.200·(0.000)
𝑥𝑥11 = = 2.617 ⎫
3
𝑥𝑥10 = 0.000 ⎪

𝑥𝑥20 = 0.000 � 
→ 𝑥𝑥21 = −19.300−0.100𝑥𝑥1+0.300𝑥𝑥3 𝐴𝐴 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇
7 ⎬
𝑥𝑥30 = 0.000
71.400−0.300𝑥𝑥1 +0.200𝑥𝑥2


𝑥𝑥31 = ⎭
10

Iteración 𝒙𝒙𝟏𝟏 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝜺𝜺𝒙𝒙𝟏𝟏 𝜺𝜺𝒙𝒙𝟐𝟐 𝜺𝜺𝒙𝒙𝟑𝟑


0 0.000 0.000 0.000
1 2.617
2
3

Ahora, para calcular la 𝑥𝑥2 , no tomamos el valor 𝑥𝑥1 = 0.000 pues ya disponemos de un
valor más actualizado, 𝑥𝑥1 = 2.617:

7.850+0.100·(0.000)+0.200·(0.000)
𝑥𝑥11 = ⎫ = 2.617
3
𝑥𝑥11 = 2.617 ⎪

𝑥𝑥20 = 0.000 � 
→ 1
𝑥𝑥2 =
−19.300−0.100·(2.617)+0.300·(0.000)
= −2.795 𝐴𝐴 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇
7 ⎬
𝑥𝑥30 = 0.000


1 71.400−0.300𝑥𝑥1 +0.200𝑥𝑥2
𝑥𝑥3 = ⎭
10

Iteración 𝒙𝒙𝟏𝟏 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝜺𝜺𝒙𝒙𝟏𝟏 𝜺𝜺𝒙𝒙𝟐𝟐 𝜺𝜺𝒙𝒙𝟑𝟑


0 0.000 0.000 0.000
1 2.617 -2.795
2
3

Nuevamente, para calcular para calcular la 𝑥𝑥3 , no tomamos el valor 𝑥𝑥1 = 0.000, ni
𝑥𝑥2 = 0.000 pues ya disponemos de valores más actualizados, 𝑥𝑥1 = 2.617 y
𝑥𝑥2 = −2.795:
17
7.850+0.100·(0.000)+0.200·(0.000)
𝑥𝑥11 = = 2.617 ⎫
3
𝑥𝑥11 = 2.617 ⎪

𝑥𝑥21 = −2.795 � 
→ 𝑥𝑥21 = −19.300−0.100·(2.617)+0.300·(0.000) = −2.795 𝐴𝐴 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇
7 ⎬
𝑥𝑥30 = 0.000


71.400−0.300·(2.617)+0.200·(−2.795)
𝑥𝑥31 = = 7.006 ⎭
10

Iteración 𝒙𝒙𝟏𝟏 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝜺𝜺𝒙𝒙𝟏𝟏 𝜺𝜺𝒙𝒙𝟐𝟐 𝜺𝜺𝒙𝒙𝟑𝟑


0 0.000 0.000 0.000
1 2.617 -2.795 7.006
2
3

A continuación, calculamos el error relativo en la primera iteración:

2.617−0.000
𝜀𝜀𝑥𝑥11 = � 2.617
� ∗ 100 = 100% > 1%
𝜀𝜀𝑥𝑥21 = � (Colocar en tabla)
𝜀𝜀𝑥𝑥31 =

Iteración 𝒙𝒙𝟏𝟏 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝜺𝜺𝒙𝒙𝟏𝟏 𝜺𝜺𝒙𝒙𝟐𝟐 𝜺𝜺𝒙𝒙𝟑𝟑


0 0.000 0.000 0.000
1 2.617 -2.795 7.006 100.000>1%
2
3

Como el error relativo en una de las incógnitas es superior al 1%, hemos de continuar el
proceso iterativo abordando la iteración 2.

ITERACIÓN 2:

Ahora, para calcular la 𝑥𝑥1 , tomamos en primer lugar los valores más actualizados de
𝑥𝑥2 = −2.795 y 𝑥𝑥3 = 7.006. A continuación, calcularemos 𝑥𝑥2 y después 𝑥𝑥3 con los
últimos valores de las variables que vayamos calculando.

7.850 + 0.100 · (−2.795) + 0.200 · (7.006)


𝑥𝑥12 = = 2.991 ⎫
3 ⎪

−19.300 − 0.100 · (2.991) + 0.300 · (7.006)
𝑥𝑥22 = = −2.500 𝐴𝐴 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇
7 ⎬

71.400 − 0.300 · (2.991) + 0.200 · (−2.500) ⎪
𝑥𝑥32 = = 7.000 ⎭
10
18
A continuación, calculamos el error relativo en la segunda iteración:

2.991−2.617
𝜀𝜀𝑥𝑥12 = � 2.991
� ∗ 100 = 12.504% > 1%
𝜀𝜀𝑥𝑥22 = � (Colocar en tabla)
𝜀𝜀𝑥𝑥32 =

Iteración 𝒙𝒙𝟏𝟏 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝜺𝜺𝒙𝒙𝟏𝟏 𝜺𝜺𝒙𝒙𝟐𝟐 𝜺𝜺𝒙𝒙𝟑𝟑


0 0.000 0.000 0.000
1 2.617 -2.795 7.006 100.000>1%
2 2.991 -2.500 7.000 12.504>1%
3

Como el error relativo en una de las incógnitas es superior al 1%, hemos de continuar el
proceso iterativo abordando la iteración 3.

ITERACIÓN 3:

Ahora, para calcular la 𝑥𝑥1 , tomamos en primer lugar los valores más actualizados de
𝑥𝑥2 = −2.500 y 𝑥𝑥3 = 7.000. A continuación, calcularemos 𝑥𝑥2 y después 𝑥𝑥3 con los
últimos valores de las variables que vayamos calculando.

7.850 + 0.100 · (−2.500) + 0.200 · (7.000)


𝑥𝑥13 = = 3.000 ⎫
3 ⎪

−19.300 − 0.100 · (3.000) + 0.300 · (7.000)
𝑥𝑥23 = = −2.500 𝐴𝐴 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇
7 ⎬

71.400 − 0.300 · (3.000) + 0.200 · (−2.500) ⎪
𝑥𝑥33 = = 7.000 ⎭
10

A continuación, calculamos el error relativo en la tercera iteración:

3.000−2.991
𝜀𝜀𝑥𝑥13 = � 3.000
� ∗ 100 = 0.300% < 1% ⎫


−2.500+2.500
𝜀𝜀 𝑥𝑥 3= �
−2.500 � ∗ 100 = 0.000% < 1% (Colocar en tabla)
2 ⎬


7.000−7.000
𝜀𝜀𝑥𝑥33 = � 7.000 � ∗ 100 = 0.000% < 1% ⎭

19
Iteración 𝒙𝒙𝟏𝟏 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝜺𝜺𝒙𝒙𝟏𝟏 𝜺𝜺𝒙𝒙𝟐𝟐 𝜺𝜺𝒙𝒙𝟑𝟑
0 0.000 0.000 0.000
1 2.617 -2.795 7.006 100.000>1%
2 2.991 -2.500 7.000 12.504>1%
3 3.000 -2.500 7.000 0.300<1% 0.000<1% 0.000<1%

Por tanto, terminamos el proceso concluyendo que la solución aproximada al sistema


propuesto es:
𝒙𝒙𝟏𝟏 ≃ 𝟑𝟑. 𝟎𝟎𝟎𝟎𝟎𝟎
𝒙𝒙𝟐𝟐 = −𝟐𝟐. 𝟓𝟓𝟓𝟓𝟓𝟓
𝒙𝒙𝟑𝟑 = 𝟕𝟕. 𝟎𝟎𝟎𝟎𝟎𝟎

Ejercicios propuestos.

1.- Se deja como ejercicio la resolución, por el método de Gauss-Seidel, del sistema
propuesto en el ejemplo 8.
Solución: 𝑥𝑥1 = 1.5939; 𝑥𝑥2 = 2.0094; 𝑥𝑥3 = 2.7895 𝑦𝑦 𝑥𝑥4 = 4.0786.

2.- Se deja como ejercicio la resolución, por el método de Gauss-Seidel, del sistema
propuesto en el ejemplo 9.
Solución: 𝑥𝑥1 = −22.1143; 𝑥𝑥2 = 5.7775 𝑦𝑦 𝑥𝑥3 = 4.1206.

BIBLIOGRAFÍA
Burden, R. L. and J. D. Faires (1985). Análisis Numérico. México, Grupo Editorial
Iberoamericana, S. A.

Chapra, S. C. and Canale, R. P. (2006). Métodos numéricos para ingenieros. México,


McGraw-Hill.

García, A. et al. (1993). Calculo I. Teoría y problemas de análisis matemático en una variable.
Madird, CLAGSA.

Martín, I. y Pérez, V. M. (1998). Cálculo numérico para computación en Ciencia e Ingeniería.


Desarrollo práctico con MATLAB. Madrid, Síntesis.

Quintana, P. and et al. (2005). Métodos numéricos con aplicaciones en Excel. Barcelona.,
Editorial Reverté, S.A.

Scheid, F. and Di Costanzo, R.E. (1991). Métodos numéricos. México, McGraw-Hill.


Steiner, E. (2005). Matemáticas para las ciencias aplicadas. Barcelona (Spain), Editorial
Reverté, S.A.

20

También podría gustarte