HISTORIA DE GAUSS SEIDEL
El método de Gauss-Seidel es una mejora del método de Jacobi y fue desarrollado por los matemáticos alemanes Carl Friedrich Gauss (1777–1855) y Philipp Ludwig von Seidel (1821–1896). Este método iterativo se utiliza para resolver sistemas de ecuaciones lineales y se caracteriza por utilizar inmediatamente los valores actualizados de las variables en cada iteración, lo que generalmente conduce a una convergencia más rápida. BYJU’S+1Wikipedia+1Wikipedia
Introducido en el siglo XIX, el método de Gauss-Seidel ha sido ampliamente adoptado en la solución de sistemas lineales, especialmente en problemas de ingeniería y física donde las matrices involucradas son grandes y dispersas. Su eficiencia y facilidad de implementación lo han convertido en una herramienta estándar en métodos numéricos y análisis computacional.
Funciones del Método de Gauss-Seidel
El método de Gauss-Seidel es un algoritmo iterativo para resolver sistemas de ecuaciones lineales de la forma:
A diferencia de los métodos directos, Gauss-Seidel parte de una estimación inicial y refina la solución progresivamente. Su función base se construye a partir de una reformulación de cada ecuación del sistema, aislando una variable a la vez.
Aproximación iterativa por componentes
Cada componente se actualiza usando la fórmula:
Donde:
- es la nueva estimación del valor de la variable en la iteración .
- son los coeficientes de la matriz .
- es el término independiente correspondiente a la ecuación .
- Se usan los valores ya actualizados de en la iteración para , y los anteriores para .
Función de error (criterio de convergencia)
Una función típica para verificar la convergencia es:
Donde es la tolerancia deseada, y puede ser la norma infinita (el mayor cambio entre componentes), o la norma euclidiana.
Condición para garantizar convergencia
Una propiedad importante para garantizar la convergencia del método es que la matriz sea diagonalmente dominante, es decir:
Si se cumple esta condición, el método está garantizado a converger para cualquier estimación inicial.
Cómo se hace el metodo Gauss-Seidel
1. Escribir el sistema de ecuaciones lineales
El sistema debe estar en la forma:
2. Aislar cada variable en su ecuación
Despeja cada variable de su respectiva ecuación:
3. Establecer una estimación inicial
Elige un vector inicial . Generalmente se puede usar el vector cero o cualquier otra aproximación razonable.
4. Actualizar cada variable usando las más recientes
Para cada iteración , calcula cada variable en orden usando:
Esto significa que cada valor actualizado se usa inmediatamente en el mismo paso.
5. Verificar el criterio de convergencia
Después de cada iteración, compara:
Si se cumple para una tolerancia previamente fijada (por ejemplo, ), se detiene el proceso. De lo contrario, se continúa iterando.
6. Repetir hasta converger
Continúa con las iteraciones hasta cumplir el criterio de convergencia o alcanzar un número máximo de iteraciones.
Nota técnica
Para que el método converja, es recomendable que la matriz de coeficientes sea diagonalmente dominante o simétrica positiva definida.
Perfecto. Aquí tienes un ejemplo escrito completamente, utilizando el método de Gauss-Seidel, paso por paso y con formato matemático claro y directo.
Ejemplo: Resolviendo un sistema con Gauss-Seidel
Resolvamos el siguiente sistema de ecuaciones:
Paso 1: Despejamos cada incógnita
Paso 2: Estimación inicial
Supongamos:
Paso 3: Primera iteración
Paso 4: Segunda iteración
Puedes seguir iterando hasta que la diferencia entre los vectores y sea menor que una tolerancia establecida, por ejemplo, .
Ejemplo en python
import numpy as np
import matplotlib.pyplot as plt
# Sistema de ecuaciones:
# 10x1 + 2x2 + x3 = 9
# 2x1 + 20x2 - 2x3 = -44
# -2x1 + 3x2 + 10x3 = 22
# Coeficientes
A = np.array([[10, 2, 1],
[2, 20, -2],
[-2, 3, 10]], dtype=float)
# Vector de constantes
b = np.array([9, -44, 22], dtype=float)
# Estimación inicial
x = np.zeros_like(b)
# Tolerancia y máximo de iteraciones
tol = 1e-4
max_iter = 25
# Lista para almacenar la evolución de las soluciones
x_hist = [x.copy()]
for _ in range(max_iter):
x_new = np.copy(x)
for i in range(A.shape[0]):
s1 = sum(A[i][j] * x_new[j] for j in range(i))
s2 = sum(A[i][j] * x[j] for j in range(i + 1, A.shape[1]))
x_new[i] = (b[i] - s1 - s2) / A[i][i]
x_hist.append(x_new.copy())
if np.linalg.norm(x_new - x, ord=np.inf) < tol:
break
x = x_new
# Convertimos la historia en un array para graficar
x_hist = np.array(x_hist)
# Gráfica
plt.figure(figsize=(10, 6))
plt.plot(x_hist[:, 0], label='x1')
plt.plot(x_hist[:, 1], label='x2')
plt.plot(x_hist[:, 2], label='x3')
plt.xlabel('Iteración')
plt.ylabel('Valor de x')
plt.title('Convergencia del método de Gauss-Seidel')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
Salida
[ 1.0000003 -1.99999973 2.99999998]
Grafica

Explicación visual del Metodo de Gauss Seidel
Claro, aquí te va una conclusión corta, directa y con flow tradicional:
Conclusión:
Conclusión del método de Gauss-Seidel
El método de Gauss-Seidel es otro algoritmo iterativo utilizado para resolver sistemas lineales, pero a diferencia de Jacobi, mejora la velocidad de convergencia al actualizar las soluciones inmediatamente después de calcularlas. Este método es ampliamente utilizado en aplicaciones de ingeniería, física y matemáticas, donde los sistemas de ecuaciones lineales aparecen con frecuencia.
La relevancia del método de Gauss-Seidel es que, a pesar de su simplicidad, ofrece una convergencia más rápida que el método de Jacobi en muchos casos, especialmente en sistemas de ecuaciones con matrices diagonales dominantes. Su uso es crucial en la resolución de grandes sistemas de ecuaciones lineales que se encuentran en simulaciones numéricas y modelado de fenómenos físicos (Conte & de Boor, 1980).
Conte, S. D., & de Boor, C. (1980). Elementary Numerical Analysis: An Algorithmic Approach (3rd ed.). McGraw-Hill.