2 FisComp
Temas abordados
2 FisComp
Temas abordados
Tema 2
Los sistemas de ecuaciones lineales aparecen en numerosas áreas de la ciencia. Por ejemplo, se obtienen
al plantear las ecuaciones de equilibrio de un sistema de muelles acoplados, al resolver circuitos eléctricos
mediante las reglas de Kirchhoff, al ajustar por mínimos cuadrados un conjunto de datos numéricos, en
problemas mecanocuánticos en los que es necesario hallar una o más raíces de una ecuación secular, al
resolver numéricamente ecuaciones diferenciales parciales por el método de diferencias finitas, etc.
La resolución de sistemas de ecuaciones lineales está directamente relacionada con el álgebra de matri-
ces, por lo que también discutiremos en este tema los aspectos del álgebra matricial más relevantes para la
resolución de sistemas de ecuaciones. Nos limitaremos a matrices cuadradas N × N con todos sus coefi-
cientes reales. Los problemas más habituales que suelen tratarse en el álgebra de matrices son:
Resolución de un sistema de ecuaciones lineales con el mismo número de ecuaciones que de incógni-
tas. En este caso, la matriz de referencia está formada por los coeficientes de las incógnitas. Si se intenta
resolver un sistema de 20 ecuaciones mediante la regla de Cramer, habría que realizar unas 5 × 109
multiplicaciones, lo cual resulta prohibitivo. Por ello se han desarrollado otros procedimientos más efi-
caces para resolver este tipo de problemas: los métodos directos, que proporcionan la respuesta exacta,
excepto errores de redondeo, y los métodos iterativos, cuya solución no es exacta, sino que se obtie-
ne con una precisión preestablecida, a partir de un conjunto de valores iniciales que se va mejorando
sucesivamente.
La mayoría de matrices que encontramos en cálculos científicos y técnicos pueden agruparse en dos
grandes categorías: (i) de pequeño o mediano tamaño, pero densas (es decir, con pocos elementos nulos) y
(ii) de gran tamaño, pero dispersas o ralas (la mayoría de elementos son nulos). Los métodos que se tratarán
en este tema se pueden aplicar en el primer caso (cuando N . 100 y con pocos elementos nulos). Para
las matrices grandes y dispersas no siempre son apropiados los métodos discutidos en este tema (aunque
podríamos usarlos), por lo cual conviene emplear técnicas especiales, las cuales no se tratarán en este curso.
Para resolver sistemas de ecuaciones lineales estudiaremos en primer lugar los métodos iterativos; pos-
teriormente abordaremos los métodos directos basados en el procedimiento de eliminación hacia delante y
sustitución hacia atrás. Estos últimos métodos están relacionados con el álgebra de matrices; partir de ellos
también pueden obtenerse procedimientos para calcular el determinante y la inversa de una matriz.
25
26 Rafael Garcia Molina, Departamento de Física – CIOyN, Universidad de Murcia
Este sistema de ecuaciones también puede escribirse en notación matricial como A x = b, o abreviadamente
como (A | b), donde A es la matriz formada por los coeficientes aij de las incógnitas, x es el vector columna
que contiene las incógnitas xi , y b es el vector columna formado por los términos independientes bi . Es
decir:
a11 a12 ... ...
x1
b1
a21 a22 ... ... x2 b2
A= . . .
. . . , x =
.
, b = .. .
(2.2)
. . .
.
.
.
.. .. xN bN
. . aN N
Los métodos iterativos para resolver el sistema de ecuaciones lineales Ax = b son: (i) método de Jacobi,
(ii) método de Gauss-Seidel y (iii) método de sobrerrelajación. El método de Jacobi tiene carácter didáctico
y no se usa en la práctica, pues el de Gauss-Seidel es más eficiente. El método de sobrerrelajación es una
mejora sobre el de Gauss-Seidel.
(k+1)
El criterio de convergencia que se elija para finalizar el proceso iterativo puede ser que | xi −
(k)
xi |< i , donde i es un conjunto de valores pequeños establecidos previamente; generalmente se toma
i = para todas las incógnitas. Otro criterio para finalizar las iteraciones es definir un valor M (k+1) =
(k+1) (k)
máx | xi − xi | y detener el proceso iterativo si M (k+1) < . Cuando convenga, en las expresiones
(k+1) (k) (k+1) (k) (k)
anteriores puede sustituirse el error absoluto | xi − xi | por el error relativo | (xi − xi )/xi |.
Una condición suficiente para que el proceso iterativo converja es que la matriz formada por los coefi-
cientes de las incógnitas sea diagonalmente dominante, lo cual implica que:
N
X
|aii | > |aij | para todas las filas (i = 1, 2, ..., N ) . (2.5)
j=1,j6=i
Es decir, cuando el valor absoluto de cada elemento de la diagonal es mayor que la suma de los valores
absolutos del resto de elementos en la misma fila se dice que la matriz de coeficientes es diagonalmente
dominante. Esto se debe a que, según la ecuación (2.3), el error del nuevo valor de xi será la suma de los
errores del resto de incógnitas multiplicados por los cocientes de coeficientes aij /aii , y si la suma de los
coeficientes es menor que la unidad, el error disminuirá conforme avance el proceso de iteración. La con-
dición (2.5) es una condición suficiente (pero no necesaria) para que el proceso iterativo converja, aunque
en algunas situaciones también puede converger sin que se cumpla la condición (2.5). Evidentemente, la
velocidad de convergencia también está directamente relacionada con lo “dominantes” que son los términos
de la diagonal con respecto al resto de términos.
Cuando se verifica la condición (2.5) el método de Jacobi converge independientemente de los valores
(0)
iniciales xi de las incógnitas con los cuales comience la iteración.
Los principales inconvenientes del método de Jacobi son que: (i) la convergencia es de tipo lineal (por
lo que es lento) y (ii) puede que no converja si no se verifica la condición (2.5).
(k+1) (k+1)
Nótese que en el cálculo de xi ya se usan los valores precedentes xj<i obtenidos en la misma itera-
ción.
El método de Gauss-Seidel también se denomina método de desplazamientos sucesivos, pues las
incógnitas antiguas se sustituyen (o desplazan) por las más recientes tan pronto se calculan.
El procedimiento para aplicar el método de Gauss-Seidel es análogo al de Jacobi. Las iteraciones se
detienen cuando se verifique el criterio de convergencia que impongamos a las incógnitas. Si la matriz
de coeficientes es diagonalmente dominante, el método de Gauss-Seidel converge para cualquier conjunto
de valores iniciales de las incógnitas, pero lo hace más rápidamente que el método de Jacobi. Por tanto, en
general siempre es preferible usar el método de Gauss-Seidel en lugar del método de Jacobi. Cuanto mejores
(más próximas a la solución) sean los valores de xi propuestos para iniciar la iteración, más rápidamente
convergerá el proceso.
28 Rafael Garcia Molina, Departamento de Física – CIOyN, Universidad de Murcia
Una elección adecuada del factor de sobrerrelajación ω permite acelerar notablemente el ritmo de conver-
gencia de las iteraciones. En principio, dado el radio espectral ρ de la matriz de Jacobi,3 puede determinarse
a priori el valor teórico óptimo de ω para aplicar el método de sobrerrelajación:
2
ω= p .
1 + 1 − ρ2
Pero el esfuerzo de computación para calcular ρ suele ser prohibitivo, por lo que, en general, no es posible
conocer por adelantado el valor de ω que maximiza el ritmo de convergencia del método de sobrerrelajación.
Si es posible estimar aproximadamente ρ, se pueden obtener valores razonables para el parámetro ω.
El método de sobrerrelajación no converge si ω está fuera del intervalo (0, 2). Aunque técnicamente
debería de usarse el término subrelajación (underrelaxation) cuando 0 < ω < 1, por comodidad se emplea
el término sobrerrelajación para cualquier valor de ω ∈ (0, 2). El valor ideal de ω suele estar comprendido
entre 1 y 2, aunque conviene tantear diferentes valores de ω para ver cuál es el que funciona mejor con el
problema particular que se está resolviendo. Si ω = 1, el método de sobrerrelajación equivale al método de
Gauss-Seidel.
El método de sobrerrelajación sucesiva se usa también cuando se discretizan ecuaciones diferenciales
en derivadas parciales, tal como se discutirá en el Tema 6.
2.1.4. Estrategias para mejorar los cálculos
En ocasiones puede que no sea conveniente despejar las incógnitas siempre en el mismo orden a lo largo
del proceso iterativo. Para evitar esto se puede sortear de un modo aleatorio (mediante números elegidos
al azar, tal como se explica en el Tema 7) la ecuación por la cual se comienza la secuencia de despejar
incógnitas. Si, además, no queremos seguir siempre la misma secuencia de incógnitas a resolver (asociadas
a las correspondientes ecuaciones), podemos sortear cada vez la ecuación a resolver. Lógicamente, estos
procedimientos hacen que los cálculos sean más lentos, pero pueden servir para evitar caer en resultados que
se verían afectados por errores acumulativos o por cualquier disposición “mal condicionada” o “viciada”
del sistema de ecuaciones.
Los métodos iterativos pueden aplicarse siempre (con las precauciones debidas sobre la naturaleza do-
minante de la diagonal de la matriz de coeficientes), pero cuando la matriz de coeficientes asociada al
sistema de ecuaciones a resolver es rala son recomendables frente a los métodos directos de eliminación
que se expondrán seguidamente, ya que suelen ser más rápidos.4
aparecen formando patrones sencillos, como es el caso de matrices tridiagonales [DeVries: p.99].
F ÍSICA COMPUTACIONAL , Sistemas de ecuaciones lineales. Álgebra matricial 29
ecuaciones para eliminar incógnitas hasta que se obtenga una sola ecuación con una sola incógnita, la cual
se despeja inmediatamente. Durante la manipulación de las ecuaciones, resultan expresiones que permitirán
calcular las incógnitas restantes a partir de las que se han hallado previamente.
A continuación se explica un procedimiento sistemático para implementar en el ordenador un algoritmo
que permita resolver un sistema de ecuaciones.
Dadas N ecuaciones, el procedimiento es el siguiente: eliminamos x1 de las ecuaciones 2 hasta N ;
procedemos de forma análoga para eliminar x2 de las ecuaciones 3 hasta N , y así sucesivamente. Es decir,
vamos eliminando xi desde la ecuación (i + 1) hasta la ecuación N , ambas incluidas. Se procede de este
modo hasta que la última ecuación contenga sólo la variable xN , y así obtenemos su valor. Este método se
denomina eliminación hacia delante.
Veamos un caso práctico con el siguiente sistema de ecuaciones:
x1 + x2 + x3 = 6
−x1 + 2x2 = 3 (2.8)
2x1 + x3 = 5 .
En la primera etapa de este proceso eliminamos x1 de la segunda ecuación (i = 2). Para ello mul-
tiplicamos la primera ecuación (que es la primera fila, i = 1) por a21 /a11 = (−1)/1 y el resultado se
lo sustraemos a la segunda ecuación (que es la segunda fila, i = 2). Seguidamente eliminamos x1 de la
tercera ecuación (que es la tercera fila, i = 3) multiplicando la primera ecuación (primera fila, i = 1) por
a31 /a11 = 2/1 y el resultado se lo restamos a la tercera ecuación:
x1 + x2 + x3 = 6
3x2 + x3 = 9 (2.9)
−2x2 − x3 = −7 .
En la siguiente etapa eliminamos x2 desde la tercera ecuación en adelante. Para ello multiplicamos la
segunda ecuación (i = 2) por a32 /a22 = (−2)/3 y el resultado se lo substraemos a la tercera ecuación
(i = 3):
x1 + x2 + x3 = 6
3x2 + x3 = 9 (2.10)
1
3 x 3 = 1 .
De la última ecuación anterior obtenemos xN , que en nuestro caso es x3 .
Una vez hemos obtenido el valor de la incógnita xN tras aplicar la eliminación hacia delante, a con-
tinuación procedemos en sentido inverso: sustituimos el valor de xN en la ecuación (N − 1), de donde
obtenemos el valor de xN −1 ; luego sustituimos los valores xN y xN −1 en la ecuación (N − 2) para obtener
xN −2 ; seguimos procediendo de esta manera hasta que llegamos a la primera ecuación, de donde obtenemos
x1 . Este método se denomina sustitución hacia atrás. En el ejemplo que hemos empleado, obtendríamos
la siguiente secuencia de resultados: x3 = 3, x2 = 2 y x1 = 1.
Este procedimiento de obtener las variables por eliminación hacia delante y sustitución hacia atrás5 se
denomina también método de eliminación gaussiana o, simplemente, método de Gauss. Los pasos a se-
guir en este método se pueden programar fácilmente en un ordenador. Para N ecuaciones con N incógnitas,
el tiempo requerido por el método de Gauss crece como N 3 . Afortunadamente, si el sistema es ralo (muchos
de los coeficientes son nulos), puede reducirse enormemente el tiempo de cálculo.
A = LU .
Queremos obtener los elementos de las matrices L y U , respectivamente, en función de los elementos
de la matriz original A. Para ello hemos de resolver el sistema de ecuaciones
a11 a12 a13 a14 1 0 0 0 u11 u12 u13 u14
a21 a22 a23 a24 `21 1 0 0 0 u22 u23 u24 .
a31 a32 a33 a34 = `31 `32 1 0 0
0 u33 u34
a41 a42 a43 a44 `41 `42 `43 1 0 0 0 u44
6 Puedeconsultarse los pasos detallados en [DeVries: p.119, Gaussian elimination].
7 Enclase empleamos una matriz 3 × 3, por brevedad.
8 Definimos la matriz L con los elementos de su diagonal principal igual a 1, tal como se hace en Numerical recipes (cuyas
subrutinas emplearemos) y la mayoría de textos, pero [DeVries: Cap. 3, Gaussian elimination] define la matriz U con los elementos
de la diagonal principal igual a 1.
F ÍSICA COMPUTACIONAL , Sistemas de ecuaciones lineales. Álgebra matricial 31
De aquí obtenemos sucesivamente los valores de u12 , u22 , `32 , `42 , etc. (en este orden). Vuelve a surgir el
mismo problema que aparecía anteriormente si al resolver la segunda ecuación resulta que u22 = 0, porque
entonces no podremos proseguir en la forma indicada.
Columna 3
Fijémonos que para obtener el conjunto de elementos ui2 y `i2 (con el índice de columna igual a 2) no
se ha empleado ningún valor ai1 , es decir, de la columna primera de la matriz A. Lo mismo sucede con los
elementos de la columna j de A, que ya no se usan tras obtener los elementos uij y `ij . Por este motivo,
podemos almacenar en la columna j de la matriz original, los elementos uij y `ij a medida que se van
obteniendo, con el consiguiente ahorro de espacio.
Al finalizar la descomposición, en lugar de los elementos aij de la matriz original A, tendremos
u11 u12 u13 u14
`21 u22 u23 u24
.
`31 `32 u33 u34
`41 `42 `43 u44
Esta forma de almacenar la matriz descompuesta tiene la ventaja de ahorrar memoria, pero la desventaja es
que se pierde la matriz original. No es necesario guardar los elementos de la diagonal principal de la matriz
L porque sabemos que todos ellos son la unidad.
Algoritmo de Crout
Un procedimiento que permite construir de forma eficiente las matrices L y U es el algoritmo de Crout.
En este método se construye una nueva matriz (que se almacena justo sobre la matriz A, para ahorrar espacio
en la memoria del ordenador) cuyos elementos se obtienen por columnas como sigue.
Para cada columna j = 1, 2, 3, ..., N se ejecutan los dos siguientes pasos:
i−1
X
uij = aij − `ik ukj .
k=1
Subrutina ludcmp
En este tema empleamos las subrutinas de Numerical recipes para resolver el sistema de ecuaciones
lineales Ax = b mediante el método de la descomposición LU de la matriz de coeficientes A. En la figura
2.1 se muestra la cabecera de la subrutina ludcmp, que se usa para descomponer una matriz A en el
producto LU .
Para usar bien la subrutina ludcmp hay que distinguir entre la dimensión física np de la matriz y
su dimensión lógica n. La primera es la que se declara en la sentencia de la dimensión, mientras que la
segunda es el tamaño que tiene realmente la matriz. Es útil trabajar con la matriz de dimensión física (np ≥
9 Es recomendable leer la discusión detallada sobre el método del pivote en [Numerical recipes: Cap. 2].
F ÍSICA COMPUTACIONAL , Sistemas de ecuaciones lineales. Álgebra matricial 33
Figura 2.1: Primeras líneas de la subrutina ludcmp empleada para la descomposición LU de una
matriz [Numerical recipes: p.38]. Es importante recordar que la dimensión física np ha de ser mayor
o igual que dimensión lógica n, la cual corresponde a la dimensión N de la matriz.
n) porque en ocasiones se compila el programa para una dimensión física grande y luego se puede ejecutar
el programa (ya compilado) para diferentes problemas en los que la matriz tiene una dimensión lógica
menor. La figura 2.2 ilustra la diferencia entre las dimensiones física y lógica. Por ejemplo, si se usa la
subrutina ludcmp para alojar una matriz 4 × 4 en un espacio del ordenador con dimensión física 7 × 7,
hemos de escribir
parameter (n=4,np=7)
dimension a(np,np),indx(np) Obsérvese que la matriz A e indx se declara con la dimension
física np.
A fin de no complicarnos la vida y para el propósito de este curso es suficiente usar los mismos valores
para las dimensiones física y lógica, a los cuales asignaremos el valor de la dimensión N de la matriz.
Figura 2.2: Una matriz de dimensión lógica m × n se almacena en una matriz de dimensión física mp
× np. Los lugares marcados con aspas (×) contienen información irrelevante que puede sobrar de
otro uso previo de la matriz. Los números dentro de círculos muestran el orden exacto de los elementos
de la matriz en la memoria del ordenador (lo que no suele ser relevante para el programador). Nótese
que los elementos de la matriz lógica no ocupan lugares consecutivos en la memoria del ordenador.
Para que una subrutina localice un elemento (i, j) correctamente, hay que darle los valores de mp y
np, no sólo i y j [Numerical recipes: Fig. 2.0.1].
34 Rafael Garcia Molina, Departamento de Física – CIOyN, Universidad de Murcia
y1 = b1
`21 y1 + y2 = b2
`31 y1 + `32 y2 + y3 = b3
`41 y1 + `42 y2 + `43 y3 + y4 = b4
Subrutina lubksb
Para resolver un sistema de ecuaciones, nosotros emplearemos la subrutina lubksb, cuya cabecera
aparece en la figura 2.3; esta subrutina ha de emplearse justo después de usar la subrutina ludcmp comen-
tada anteriormente. Los términos independientes del sistema de ecuaciones se introducen a través del vector
columna b. Es importante recordar que en el programa principal (el que llama a las subrutinas ludcmp y
lubksb se ha de declarar A, indx y b con dimensión física np.
Figura 2.3: Primeras líneas de la subrutina lubksb [Numerical recipes: p.39] empleada para obtener
las incógnitas de un sistema de ecuaciones mediante el método de sustitución hacia atrás, después de
haber realizado la descomposición LU de la matriz A de coeficientes mediante la subrutina ludcmp.
A = LU , (2.13)
donde uii son los elementos de la diagonal principal de la matriz U , que coinciden con los elementos de la
diagonal principal aii de la matriz A que devuelve la subrutina ludcmp al aplicar el método de eliminación
gaussiana.
Hay que tener en cuenta que al realizar la descomposición LU mediante la subrutina ludcmp puede
haberse producido una reordenación de filas, y cada intercambio de filas implica un cambio de signo en el
determinante. La paridad p (par o impar) del total de estos cambios de signo debe determinarse a lo largo
del proceso de descomposición, por ello el determinante de la matriz original A se obtendrá multiplicando
por (−1)p el determinante resultante de la descomposición de la matriz original:
N
Y
det A = (−1)p uii . (2.16)
i=1
La subrutina ludcmp de Numerical recipes proporciona la variable d, que vale ±1 según sea la paridad
del número de permutaciones. Así pues, si empleamos esta variable d, el determinante de A será
N
Y
det A = d uii . (2.17)
i=1
Hay que declarar la matriz y con dimensión (np,np). El resultado del programa devuelve en la matriz
ai la inversa de la matriz original a (que se habrá destruido en el proceso de descomposición LU ).
Figura 2.4: Procedimiento que emplea [Numerical recipes: p.40] para calcular la matriz inversa ai
de la matriz a.
disposición de las resistencias no permite su agrupación en serie ni en paralelo para reemplazarlas por su
resistencia equivalente, aplicaremos las reglas de Kirchhoff, tal como se explicará seguidamente.11
De acuerdo con la ley de Ohm, obtendremos la diferencia de potencial Vj entre los extremos de una
resistencia Rj si conocemos la intensidad Ij que circula por ella, pues Vj = Ij Rj . Aplicaremos las reglas
de Kirchhoff para calcular las intensidades Ij (j = 1, ..., 13) que circulan por las resistencias del circuito,
de acuerdo con la nomenclatura empleada en la parte derecha de la figura 2.5.
Figura 2.5: (Izq.) Conjunto de resistencias Rj (i = 1, . . . , 12) a la que se aplica una diferencia de
potencial V entre los puntos a e i. (Der.) Propuesta de sentidos de las intensidades (en color azul) y
de recorrido de las mallas (en color rosa) para resolver el circuito mediante las reglas de Kirchhoff.
la corriente (o en sentido opuesto). Cuando se pasa a través de una fem, se toma la diferencia de potencial
como positiva (o negativa) según se atraviese desde la terminal negativa a la positiva (o al revés).
La regla de las mallas se aplica a tantas mallas del circuito como sea necesario para que cada conductor
forme parte de un tramo recorrido al menos una vez y sin que se recorra dos veces la misma malla.
A continuación aplicamos las reglas de Kirchhoff, de acuerdo con la nomenclatura que se muestra en la
parte derecha de la figura 2.5. Los nudos están indicados en la figura por las letras minúsculas.
Regla de los nudos. Las intensidades que circulan por cada resistencia se han representado en la figura
mediante flechas de color azul; no hemos de preocuparnos por el sentido de las intensidades propuestas,
pues el resultado que obtengamos finalmente confirmará (o cambiará) el signo de cada intensidad. Para
aplicar la regla de los nudos elegimos el convenio (arbitrario) de que las intensidades que entran a los nudos
son negativas y las que salen son positivas). A continuación se indican los nudos donde se aplica la primera
regla de Kirchhoff, así como la suma de intensidades en cada nudo:
nudo a: I1 + I2 − I13 = 0
nudo b: −I1 + I3 + I4 = 0
nudo c: −I2 − I5 + I6 = 0
nudo d: −I3 + I7 = 0
nudo e: −I4 + I5 − I8 + I9 = 0
nudo f: −I6 + I10 = 0
nudo g: −I7 + I8 + I11 = 0
nudo h: −I9 − I10 + I12 = 0
Regla de las mallas. En la figura se ha representado mediante flechas de color rosa el sentido en el
cual se recorre cada una de las mallas a las que se aplica la segunda regla de Kirchhoff. Al aplicar la regla
de las mallas, hay que tener en cuenta el sentido en que se recorren. Habría que ponerle un signo menos a
las diferencias de potencial entre los extremos de una resistencia cuando la intensidad que la recorre tenga
sentido opuesto al del recorrido de la malla. También habría que poner un signo negativo a las fuentes de
potencial que estén dispuestas para suministrar corriente en sentido contrario al propuesto para recorrer la
malla. A continuación se indica las mallas (identificadas por la secuencia de letras en que se recorren, en
sentido horario, en este caso) y la suma de variaciones de potencial en cada caso:
Mediante el programa 2-09LU-rgm.f se resuelve ese sistema de ecuaciones por el método de des-
composición LU . Si empleamos los valores
I1 (A) I2 (A) I3 (A) I4 (A) I5 (A) I6 (A) I7 (A) I8 (A) I9 (A) I10 (A) I11 (A) I12 (A) I13 (A)
3.056 1.806 1.111 1.944 −0.694 1.111 1.111 −0.694 1.944 1.111 1.806 3.056 4.861
Bibliografía
G. J. Borse, Programación en FORTRAN77, con aplicaciones de cálculo numérico en ciencias e inge-
niería (Anaya, Madrid, 1989). Cap. 12.
P. DeVries, A First Course in Computational Physics (Wiley, New York, 1994). Cap. 3 (principalmente
las secciones Tridiagonal Linear Systems y Gaussian elimination).
A. L. Garcia, Numerical methods for physics, 2nd ed. (Prentice-Hall, Upper Saddle River, NJ, 2000).
Cap. 4.
C. F. Gerald, Applied Numerical Analysis (Addison-Wesley, Reading, Mass., 1980). Cap. 2.
R. Guardiola, E. Higón y J. Ros, Mètodes numèrics per a la física (Universitat de València, Valencia,
1997). Cap. 3.
W. H. Press, S. A. Teukolsky, W. T. Vetterling y B. P. Flannery, Numerical Recipes, in Fortran. The Art
of Scientific Computing, 2nd ed. (Cambridge University Press, Cambridge, 1992). Cap. 2.
L. Vázquez, S. Jiménez, C. Aguirre y P. J. Pascual, Métodos numéricos para la Física y la Ingeniería
(McGraw-Hill, Madrid, 2009). §§6.1-6.5 y 2.8.
F ÍSICA COMPUTACIONAL , Sistemas de ecuaciones lineales. Álgebra matricial 41
Método de Jacobi
i−1 N
(k+1) 1 X (k)
X (k)
xi = bi − aij xj − aij xj , i = 1, 2, ..., N
aii j=1 j=i+1
Método de Gauss-Seidel
i−1 N
(k+1) 1 X (k+1)
X (k)
xi = bi − aij xj − aij xj , i = 1, 2, ..., N
aii j=1 j=i+1
Una condición suficiente para que el proceso iterativo converja es que la matriz de coeficientes sea diago-
nalmente dominante:
N
X
|aii | > |aij | para todas las filas (i = 1, 2, ..., N ) .
j=1,j6=i
Cuando se verifica esta condición, los dos métodos anteriores convergen para cualquier conjunto de valores
(0)
xi con el que se inicia la iteración. El método el método de Gauss-Seidel converge más rápido que el de
Jacobi.
Sobrerrelajación
El método de sobrerrelajación (Successive Over Relaxation, SOR) consiste en obtener una mejora x̄i
para cada incógnita mediante un promedio ponderado de dos iteraciones consecutivas obtenidas por el
método de Gauss-Seidel:
(k+1) (k+1) (k)
x̄i = ω xi + (1 − ω) xi , k = 0, 1, 2, . . .
convergencia. Por ello, conviene tantear diferentes valores de ω para ver cuál es el que funciona mejor con
el problema particular que se está resolviendo.
Álgebra matricial
Descomposición LU de una matriz
Una matriz A de dimensión N × N se puede escribir como el producto de una matriz triangular inferior
L (del inglés lower) multiplicada por otra matriz triangular superior U (del inglés upper):
A = LU .
Algoritmo de Crout
Se emplea para calcular las matrices L y U (que se almacenan justo sobre la matriz A original). Los
elementos de la nueva matriz se obtienen por columnas mediante el procedimiento que se detalla a conti-
nuación.
Para cada columna j = 1, 2, 3, ..., N se ejecutan los dos pasos siguientes.
Primero, para i = 1, 2, ..., j (elementos en y por encima de la diagonal principal) se obtiene:
i−1
X
uij = aij − `ik ukj .
k=1
De esta forma se ahorra espacio, pero se pierde la matriz A original; si interesa conservarla, antes de emplear
el algoritmo de Crout hay que guardarla en otra matriz.
Para que el método sea estable ha de realizarse la operación de pivote: el elemento de la diagonal ujj
por el que se divide al determinar `ij debe elegirse como el mayor de los elementos `ij (i = j + 1, ..., N )
que hay en la columna j; a este elemento se le denomina pivote. Esto significa que el pivote pasa a ocupar la
posición ujj en la diagonal. Para ello habrá que realizar los intercambios de filas que sean necesarios (pivote
parcial), con lo cual se ha modificado el problema original y se ha cambiado la paridad de la ordenación de
la matriz. Conviene guardar un conjunto de números enteros que indique las permutaciones de filas que se
ha efectuado al proceder a la descomposición LU de la matriz A.
donde el término (−1)p tiene en cuenta la paridad (p par o impar) de los intercambios de filas que se ha
efectuado en la matriz A para descomponerla en el producto LU .
La variable d que devuelve la subrutina ludcmp de Numerical recipes vale ±1 según sea la paridad
del número de permutaciones. Así pues, si empleamos esta variable d, el determinante de A será
N
Y
det A = d uii .
i=1
N = 1 → D 1 = b1 ,
N = 2 → D2 = b2 D1 − a2 c1 ,
N ≥ 3 → DN = bN DN −1 − aN cN −1 DN −2 .
Matriz inversa
La inversa A−1 de la matriz A satisface la relación A · A−1 = I. Denominaremos cij a los elementos
de la matriz inversa.
Para calcular A−1 descomponemos las matrices A−1 e I en columnas, de forma que
a11 a12 · · · a1N c11 c12 c1N 1 0 0
a21 a22 · · · a2N c21 c22 c2N 0 1 0
· . t . t···t . = . t . t···t .
.. .. . .. .
.. .. .. .. .. .. ..
. .
aN 1 aN 2 ··· aN N cN 1 cN 2 cN N 0 0 1
Podemos obtener la matriz inversa A−1 tras resolver N sistemas de ecuaciones lineales de la forma
a11 a12 · · · a1N c1j δ1j
a21 a22 · · · a2N c2j δ2j
.. · .. = .. (para cada columna j) ,
.. .. ..
. . . . . .
aN 1 aN 2 ··· aN N cN j δN j
δij = 0 (i 6= j) ,
δij = 1 (i = j) .
La matriz inversa de A se forma al disponer uno a continuación de otro los vectores columna calculados
al resolver cada uno de los sistemas de ecuaciones anteriores:
c11 c12 c1N
c21 c22 c2N
A−1 = . t . t · · · t . .
.. .. ..
cN 1 cN 2 cN N
Para resolver el sistema de ecuaciones que corresponde a cada una de las columnas de la matriz A−1 se
emplean las subrutinas de descomposición LU (ludcmp) y de sustitución hacia atrás (lubksb).
F ÍSICA COMPUTACIONAL , Sistemas de ecuaciones lineales. Álgebra matricial 45
Ejercicios resueltos
2.1 Escribe el valor de x1 , x2 y x3 que se obtiene en cada iteración k (hasta k . 100) al resolver el
sistema de ecuaciones:
2x1 + x3 = 5 ,
−x1 + 2x2 = 3,
x1 + x2 + x3 = 6 ,
(a) por el método de Jacobi y (b) por el método de Gauss-Seidel. (c) Emplea el método de eliminación
gaussiana para resolver analíticamente el sistema de ecuaciones.
(a) Los valores de x1 , x2 y x3 que se obtienen mediante el método de Jacobi (2-01Jacobi.f) apa-
recen en la tabla adjunta, cuando se parte de los valores iniciales x1 = x2 = x3 = 1.
iteración k x1 x2 x3
1 2.00000 2.00000 4.00000
2 0.50000 2.50000 2.00000
3 1.50000 1.75000 3.00000
4 1.00000 2.25000 2.75000
5 1.12500 2.00000 2.75000
10 1.06250 2.03125 2.89063
20 1.01794 2.01013 2.96826
30 1.00527 2.00298 2.99068
40 1.00155 2.00087 2.99727
50 1.00045 2.00026 2.99920
60 1.00013 2.00008 2.99976
70 1.00004 2.00002 2.99993
80 1.00001 2.00001 2.99998
90 1.00000 2.00000 2.99999
x1 + x3 /2 = 5/2 .
x2 + x/4 = 11/4 .
Esta ecuación se resta a la tercera ecuación que se obtuvo anteriormente, lo cual resulta en
Así pues, tras operar sobre el sistema original de ecuaciones, éstas se han transformado en:
2x1 + x3 = 5,
2x2 + x3 /2 = 11/2 ,
x3 /4 = 3/4 .
3a ec.: x3 /4 = 3/4 → x3 = 3 ,
2a ec.: 2x2 + x3 /2 = 11/2 → 2x2 + 3/2 = 11/2 → x2 = 2 ,
1a ec.: 2x1 + x3 = 5 → 2x1 + 3 = 5 → x1 = 1 .
Al aplicar los métodos iterativos al sistema de ecuaciones, los valores que se obtienen para x1 , x2 y x3
divergen.
Se reordenan las ecuaciones de la siguiente forma
A continuación aparecen los resultados que se obtiene mediante cada método (con una tolerancia =
10−4 y con un número máximo de 20 iteraciones).
(a) Método de Jacobi (2-10Jacobi-rgm.f): x1 = −0.182749, x2 = 0.152982 y x3 = 0.0622746
(tras 20 iteraciones)
(b) Método de Gauss-Seidel (2-10GaussSeidel-rgm.f): x1 = −0.182779, x2 = 0.152987 y
x3 = 0.0623296 (tras 10 iteraciones)
(c) Método de sobrerrelajación (2-10SOR-rgm.f): x1 = −0.182758, x2 = 0.152992 y x3 =
0.0623176 (tras 6 iteraciones, con ω = 0.9)
(d) Método de descomposición LU (2-10LU-rgm.f): x1 = −0.182756513, x2 = 0.152989089 y
x3 = 0.0623167716.
6x1 − 3x2 + x3 = 11
2x1 + x2 − 8x3 = −15 .
x1 − 7x2 + x3 = 10
6x1 − 3x2 + x3 = 11
x1 − 7x2 + x3 = 10
2x1 + x2 − 8x3 = −15
A continuación aparecen los resultados que se obtienen mediante cada método (con una precisión =
10−4 y con un número máximo de 20 iteraciones).
(a) Método de Jacobi (2-11Jacobi-rgm.f): x1 = 1.00003, x2 = −0.999975 y x3 = 2.00003.
(b) Método de Gauss-Seidel (2-11GaussSeidel-rgm.f): x1 = 1.00001, x2 = −0.999998 y
x3 = 2.00000.
(c) Método de sobrerrelajación (2-11SOR-rgm.f): el parámetro para el cual funciona más rápido
es ω = 1, lo cual equivale al método de Gauss-Seidel y, por tanto, se obtienen los mismos resultados
x1 = 1.00001, x2 = −0.999998 y x3 = 2.00000.
(d) Método de descomposición LU (2-11LU-rgm.f): x1 = 0.99999994, x2 = −1.00000012 y
x3 = 2.00.
Una vez conocidos los valores de x0 , x1 , x2 , el cálculo de la temperatura T correspondiente a una lectura
de V0 = 9.000 mV se reduce a resolver la ecuación de segundo grado:
x2 T 2 + x1 T + x0 − V0 = 0 ,
cuyo resultado es p
x21 − 4x2 (x0 − V0 )
−x1 ±
T = .
2x2
De aquí se obtiene que T = 950.21 o C y T = −6097.80 o C, pero sólo el primer valor de T tiene sentido
físico.
2.27 Aplica algún algoritmo iterativo para resolver el siguiente sistema de ecuaciones no lineales:
x3 + 3y 2 = 21
2 .
x + 2y + 2 = 0
p
Buscamos gráficamente la solución mediante la intersección de las curvas y = ± (21 − x3 )/3 e y =
−(2 + x2 )/2, que se obtienen de la primera
p y de la segunda ecuación, respectivamente. En la figura adjunta
se muestra que sólo la curva y = − (21 − x3 )/3 se cruza con y = −(2 + x2 )/2 en las proximidades de
los puntos (−2, −3) y (1.6, −2.3).
2.29 Aplica algún algoritmo iterativo para resolver el siguiente sistema de ecuaciones no lineales:
x2 + x − y 2 = 1
.
y − sin(x2 ) = 0
La solución gráfica
√ de este sistema de ecuaciones corresponde a las intersecciones de las curvas y =
sin(x2 ) e y = ± x2 + x − 1, que están en las proximidades de (0.7, 0.5) y (−1.6, 0.4) respectivamente.
Los términos de la primera ecuación se pueden reordenar como sigue
x2 + x − (y 2 + 1) = 0 ,
Tras despejar y de la segunda ecuación, llegamos a los dos siguientes sistemas de ecuaciones no lineales:
p
−1 + 5 + 4y 2
x=
2
y = sin(x2 )
y p
−1 − 5 + 4y 2
x=
2
y = sin(x2 )
Para resolver cada sistema de ecuaciones no lineales empleamos el programa 2-29-rgm.f, que aplica
el algoritmo iterativo de Gauss-Seidel. Las soluciones que obtenemos son (0.726, 0.503) y (−1.67, 0.345)
para el primer y el segundo sistema de ecuaciones, respectivamente. Pero es importante el orden en que se
resuelve las ecuaciones, así como la variable que se despeja de cada ecuación.
A continuación aparecen diferentes formas de resolver el sistema de ecuaciones, así como los resultados
que se obtiene en cada caso.
orden de las ecuaciones variable que se despeja en cada ecuación solución (x, y)
p
2 2
x +x−y =1 x = −1 + 5 + 4y 2 /2 (0.726, 0.503)
y − sin(x2 ) = 0 y = sin(x2 )
y − sin(x2 ) = 0 y = sin(x
2
) (0.726, 0.503)
p
2 2
x +x−y =1 x = −1 + 5 + 4y 2 /2
p
x2 + x − y 2 = 1 x = −1 − 5 − 4y 2 /2 (−1.67, 0.345)
y − sin(x2 ) = 0 y = sin(x2 )
y − sin(x2 ) = 0 y = sin(x
2
) (error, 0.345)
p
2 2
x +x−y =1 x = −1 − 5 − 4y 2 /2
(b)
x1 − 2x2 − x4 = 3,
−2x1 + 7x2 + x3 − x5 = 2,
x2 + 2x3 + x4 + 2x5 = 1,
−x1 − x3 + 6x4 + x5 = 4,
− x2 + 2x3 + x4 + 9x5 = 0.
(c)
5x1 + 4x2 + 2x3 − 3x4 + x5 = 2,
2x1 − 6x2 + x3 + 2x4 − 3x5 = −5 ,
4x1 − x2 + 4x3 − x4 − x5 = −9 ,
x1 + x2 + x3 + x4 + x5 = −1 ,
−x1 + x2 − x3 + x4 − x5 = 7.
Tal como aparecen escritas las ecuaciones no se pueden resolver mediante el método de Gauss-Seidel
(2-41aGaussSeidel-rgm.f). Pero si se reordenan las ecuaciones, permutando la 2a y la 3a ecuacio-
nes, entonces sí converge el método de Gauss-Seidel y se obtiene la siguiente solución: x1 = −0.4899166,
x2 = −1.669916 y x3 = −0.4099997, con una tolerancia de 10−4 .
Si se emplea el método de la descomposición LU (2-41aLU-rgm.f) se obtiene la solución x1 =
−0.49, x2 = −1.67 y x3 = −0.41.
Mediante el programa 2-41aLU-inversa-rgm.f se obtiene que el determinante vale det = 5 y la
matriz inversa vale
1 −0.8 −1.4
1 −1.4 −2.2 .
∼ 0 −0.2 −0.6
(b) El sistema de ecuaciones (A | b) que hay que resolver es:
1 −2 0 −1 0 3
−2 7 1 0 −1 2
A−1 =
0 1 2 1 2 1 .
−1 0 −1 6 1 4
0 −1 2 1 9 0
Tal como está escrito el sistema, no se puede aplicar el método de Gauss-Seidel (2-41cGaussSeidel-rgm.f),
pues las iteraciones divergen. Tras probar con varias permutaciones entre las ecuaciones, tampoco consigo
resolverlo mediante el método de Gauss-Seidel.
Si se emplea el método de la descomposición LU (2-41cLU-rgm.f) se obtiene la solución x1 = 1,
x2 = 2, x3 = −3, x4 = 1 y x5 = −2.
Mediante el programa 2-41cLU-inversa-rgm.f se obtiene que el determinante vale det = 310 y
la matriz inversa vale
0.26 0.23 −0.23 0.14 −0.048
0.032 −0.097 0.071 0.055 0.31
−1
A = −0.26
−0.23 0.43 0.061 0.048 .
−0.032 0.097 −0.071 0.45 0.19
0.0 0.0 −0.20 0.30 −0.50
2.45 Resuelve el siguiente sistema de ecuaciones lineales mediante algún método iterativo:
8x1 + x2 − x3 = 8
2x1 + x2 + 9x3 = 12 .
x1 − 7x2 + 2x3 = −4
Iteración x1 x2 x3
0 0.0 0.0 0.0
1 1.000000 10.00000 32.50000
2 3.812500 −288.1250 −1012.344
3 −89.52734 9302.148 32600.28
4 2913.267 −299217.1 −1048719.
5 −93686.67 9625852. 0.3373732E8
10 0.3228039E13 −0.3316617E15 −0.1162430E16
A continuación reordenamos las ecuaciones, intercambiando la segunda y la tercera, para que la matriz
de los coeficientes sea diagonalmente dominante:
8x1 + x2 − x3 = 8
x1 − 7x2 + 2x3 = −4
2x1 + x2 + 9x3 = 12
Ahora sí que convergen ambos métodos, aunque se aprecia claramente que el método de Gauss-Seidel
(segundo conjunto de resultados) converge más rápidamente que el de Jacobi (primer conjunto de resulta-
dos), tal como era de esperar.
52 Rafael Garcia Molina, Departamento de Física – CIOyN, Universidad de Murcia
Iteración x1 x2 x3 x1 x2 x3
0 0.0 0.0 0.0 0.0 0.0 0.0
1 1.000000 0.5714286 1.333333 1.000000 0.7142857 1.031746
2 1.095238 1.095238 1.047619 1.039683 1.014739 0.9895440
3 0.9940476 1.027211 0.9682540 0.9968506 0.9965627 1.001082
4 0.9926304 0.9900793 0.9982993 1.000565 1.000390 0.9998311
5 1.001027 0.9984613 1.002740 0.9999301 0.9999418 1.000022
6 1.000535 1.000930 0.9999427 1.000010 1.000008 0.9999969
7 0.9998766 1.000060 0.9997779 0.9999986 0.9999989 1.000000
8 0.9999647 0.9999189 1.000021 1.000000 1.000000 0.9999999
9 1.000013 1.000001 1.000017 1.000000 1.000000 1.000000
10 1.000002 1.000007 0.9999971 1.000000 1.000000 1.000000
2.46 Resuelve el siguiente sistema de ecuaciones mediante el método de Gauss-Seidel y por el método
de descomposición LU :
1 4 1 x1 2
4 1 0 x2 = 1 .
0 1 4 x3 3
La matriz de coeficientes de las incógnitas ilustra un caso práctico en que el método de Gauss-Seidel
diverge para cualquier valor inicial distinto de la solución exacta, pues la matriz de coeficientes no es
diagonalmente dominante.
Partimos de los valores iniciales x1 = x2 = x3 = 0.
La tabla adjunta muestra los resultados de las iteraciones cuando la matriz de coeficientes no es diago-
nalmente dominante.
1 k x1 x2 x3
2 1 2.0000000 -7.0000000 2.5000000
3 2 27.500000 -109.00000 28.000000
4 3 410.00000 -1639.0000 410.50000
5 4 6147.5000 -24589.000 6148.0000
6 5 92210.000 -368839.00 92210.500
7 6 1383147.5 -5532589.0 1383148.0
8 7 20747210. -82988840. 20747210.
9 8 0.31120816E+09 -0.12448326E+10 0.31120816E+09
10 9 0.46681226E+10 -0.18672490E+11 0.46681226E+10
11 10 0.70021841E+11 -0.28008736E+12 0.70021841E+11
12 11 0.10503276E+13 -0.42013106E+13 0.10503276E+13
13 12 0.15754915E+14 -0.63019661E+14 0.15754915E+14
14 13 0.23632373E+15 -0.94529492E+15 0.23632373E+15
15 14 0.35448561E+16 -0.14179424E+17 0.35448561E+16
16 15 0.53172842E+17 -0.21269137E+18 0.53172842E+17
17 16 0.79759261E+18 -0.31903704E+19 0.79759261E+18
18 17 0.11963889E+20 -0.47855558E+20 0.11963889E+20
19 18 0.17945835E+21 -0.71783339E+21 0.17945835E+21
20 19 0.26918752E+22 -0.10767501E+23 0.26918752E+22
21 20 0.40378130E+23 -0.16151252E+24 0.40378130E+23
Sin embargo, intercambiando las filas primera y segunda, obtenemos una matriz que sí es diagonalmente
dominante. Por lo tanto, converge.
4 1 0 x1 1
1 4 1 x2 = 2
0 1 4 x3 3
En la tabla adjunta aparecen las iteraciones que se obtienen cuando la matriz de coeficientes no es
diagonalmente dominante. Puede comprobarse que el resultado converge hacia los valores 5/28, 2/7 y
19/27, que coinciden con los que proporciona el método de descomposición LU .
1 k x1 x2 x3
2 1 0.25000000 0.43750000 0.64062500
3 2 0.14062500 0.30468750 0.67382813
4 3 0.17382813 0.28808594 0.67797852
F ÍSICA COMPUTACIONAL , Sistemas de ecuaciones lineales. Álgebra matricial 53
2.48 Escribe el valor de x1 , x2 y x3 que se obtiene en cada iteración k (desde k = 1 hasta 30) al
resolver el sistema de ecuaciones:
x1 + 5x2 − 8x3 = −13 ,
6x1 − 2x2 + 2x3 = 8,
7x2 − x3 = 11 ,
por el método de Gauss-Seidel. Compara este resultado con el que obtienes cuanso se emplea el método de
eliminación gaussiana para resolver el sistema de ecuaciones.
La matriz de coeficientes de las incógnitas ilustra un caso práctico en que el método de Gauss-Seidel
diverge para cualquier valor inicial distinto de la solución exacta, pues la matriz de coeficientes no es
diagonalmente dominante.
Partimos de los valores iniciales x1 = x2 = x3 = 0.
La tabla adjunta muestra los resultados de las iteraciones cuando la matriz de coeficientes no es diago-
nalmente dominante.
1 k x1 x2 x3
2 1 -13.000000 -43.000000 -312.00000
3 2 -110.00000 -646.00000 -4533.0000
4 3 -1316.0000 -8485.0000 -59406.000
5 4 -16994.000 -110392.00 -772755.00
6 5 -220808.00 -1435183.0 -10046292.
7 6 -2870390.0 -18657466. -0.13060227E+09
8 7 -37314956. -0.24254714E+09 -0.16978299E+10
9 8 -0.48509414E+09 -0.31531123E+10 -0.22071785E+11
10 9 -0.63062241E+10 -0.40990458E+11 -0.28693319E+12
11 10 -0.81980899E+11 -0.53287590E+12 -0.37301314E+13
12 11 -0.10657519E+13 -0.69273869E+13 -0.48491707E+14
13 12 -0.13854772E+14 -0.90056019E+14 -0.63039215E+15
14 13 -0.18011207E+15 -0.11707284E+16 -0.81950982E+16
15 14 -0.23414562E+16 -0.15219467E+17 -0.10653627E+18
16 15 -0.30438931E+17 -0.19785306E+18 -0.13849715E+19
17 16 -0.39570619E+18 -0.25720900E+19 -0.18004630E+20
18 17 -0.51441806E+19 -0.33437173E+20 -0.23406022E+21
19 18 -0.66874355E+20 -0.43468328E+21 -0.30427831E+22
20 19 -0.86936671E+21 -0.56508832E+22 -0.39556183E+23
21 20 -0.11301768E+23 -0.73461483E+23 -0.51423037E+24
En el método de Crout, los valores calculados de ℓij y uij se almacenan en el lugar de los aij utilizados para obtenerlos, haciendo que la matriz A original se pierda a menos que se guarde en otra matriz antes del proceso. Este método ahorra espacio de almacenamiento pero requiere precauciones adicionales si es necesario conservar A .
Una matriz de coeficientes es diagonalmente dominante si, para cada fila, el valor absoluto del elemento diagonal es mayor o igual que la suma de los valores absolutos de los otros elementos en esa fila. Esta condición ayuda a asegurar la convergencia de soluciones usando métodos iterativos. Para verificarlo, se evalúan las desigualdades |a_{ii}| >= Σ|a_{ij}| para cada fila i, ajustando a_{ii} según sea necesario .
La elección del parámetro ω en el método de sobrerrelajación afecta significativamente la tasa de convergencia: valores de ω entre 1 y 2 generalmente aceleran la convergencia, mientras que ω = 1 equivale al método de Gauss-Seidel. Una selección adecuada de ω, basada en el sistema específico y su tendencia a converger, puede reducir el número de iteraciones requeridas para alcanzar una solución .
En la descomposición LU, la matriz L es una matriz triangular inferior, y sus elementos diagonales son todos iguales a 1. Esto simplifica el proceso de cálculo y es una convención comúnmente aceptada en algoritmos de descomposición LU, como se describe en Numerical Recipes .
El pivote parcial es más sencillo que el pivote total porque no requiere almacenar las permutaciones del vector solución. Sin embargo, no garantiza la estabilidad numérica completa que el pivote total puede ofrecer, ya que este último selecciona como pivote el mayor valor absoluto de todos los elementos restantes, evitando así posibles problemas de redondeo en mayor medida .
Si las ecuaciones no se reordenan adecuadamente en los métodos iterativos como Jacobi o Gauss-Seidel, el sistema puede no converger o converger muy lentamente. Una solución es reordenar las ecuaciones para que la matriz de coeficientes sea diagonalmente dominante, lo cual se puede lograr ordenando de manera que los términos de mayor magnitud estén en la diagonal principal .
El método del pivote en la eliminación gaussiana ayuda a evitar soluciones erróneas causadas por problemas de redondeo cuando los términos de la diagonal principal son pequeños. Esto es esencial para asegurar la estabilidad numérica, especialmente cuando se trabaja con matrices grandes. La operación de pivote también requiere más cuidado en la programación debido a la necesidad de reordenar las ecuaciones .
Los valores de x obtenidos por el método de Jacobi tienden a tener una convergencia más lenta comparados con Gauss-Seidel. Por ejemplo, los métodos muestran diferencias en el número de iteraciones necesarias para alcanzar una solución precisa, donde Gauss-Seidel suele ser más eficiente. En la práctica, esto implica que Gauss-Seidel es preferible cuando la velocidad es crítica y se desea acelerar el tiempo de cálculo .
Para resolver el sistema Ax = b usando descomposición LU, primero se resuelve el sistema Ly = b para obtener el vector intermedio y mediante sustitución hacia adelante. Luego, se resuelve Ux = y mediante sustitución hacia atrás para encontrar el vector de incógnitas x .
En el método de Gauss-Seidel, la convergencia puede mejorarse reordenando las ecuaciones del sistema para que la matriz de coeficientes sea más cercana a ser diagonalmente dominante. Esto ocurre cuando el valor absoluto del coeficiente diagonal es mayor que la suma de los valores absolutos de otros coeficientes en la misma fila, lo que mejora la estabilidad y tasa de convergencia del método .