-Fundamento Teórico-
El método de Gauss-Seidel se basa en el principio de la convergencia iterativa para encontrar la solución de un sistema de ecuaciones lineales. El proceso se puede resumir en los siguientes pasos:
- Sistema de Ecuaciones: Se parte de un sistema de ecuaciones lineales de la forma AX = B, donde A es la matriz de coeficientes, X es el vector de incógnitas y B es el vector de términos constantes.
- Desarrollo de las Ecuaciones: Se despeja cada incógnita (xᵢ) de su respectiva ecuación.
- Iteración Inicial: Se asignan valores iniciales (estimados) a las incógnitas.
- Iteración Sucesiva: En cada iteración, se calcula el nuevo valor de cada incógnita (xᵢ) utilizando los valores recién calculados de las incógnitas anteriores en la misma iteración, y los valores iniciales de las incógnitas que aún no han sido calculadas en esa iteración.
- Evaluación de la Convergencia: Se continúa iterando hasta que la diferencia entre los valores de las incógnitas en dos iteraciones consecutivas sea menor que un umbral predefinido (tolerancia).
-Algoritmo del Método-
- Asignar valores iniciales a las incógnitas del sistema.
- Para cada ecuación:
- Despejar la incógnita principal de la ecuación.
- Reemplazar las otras incógnitas en la ecuación con sus valores más recientes (calculados en la iteración actual o en una iteración anterior).
- Resolver la ecuación para obtener el nuevo valor de la incógnita principal.
- Despejar la incógnita principal de la ecuación.
- Repetir este paso para todas las ecuaciones del sistema.
- Para cada ecuación:
- Calcular la diferencia entre los valores de las incógnitas de la iteración actual y la iteración anterior.
- Si la diferencia es menor que un umbral predefinido, el método ha convergido y la solución se ha encontrado. De lo contrario, volver al paso 2 y repetir la iteración.
Consideraciones:
- El método de Gauss-Seidel converge si la matriz de coeficientes del sistema de ecuaciones es diagonalmente dominante.
- El método de Gauss-Seidel generalmente converge más rápidamente que el método de Jacobi.
- El número de iteraciones necesarias para la convergencia puede variar según el sistema de ecuaciones y los valores iniciales.
-Ejercicio Resuelto Paso a Paso-
resolver:
✅ Paso 1: Despejar cada variable
Se despeja cada variable usando su ecuación correspondiente:
✅ Paso 2: Estimación inicial
Tomamos como punto de partida:
🔁 Iteración 1
Usamos los valores iniciales y vamos actualizando inmediatamente:
🔁 Iteración 2
Usamos los valores de la iteración 1:
🔁 Iteración 3
✅ Criterio de paro
Cuando el cambio entre iteraciones sea muy pequeño (por ejemplo < 0.01), podemos detenernos. En este caso vemos que se va estabilizando:
-Código del Método-
import numpy as np
import matplotlib.pyplot as plt
# Sistema de ecuaciones:
# 4x + y + z = 7
# x + 3y + z = -8
# x + y + 5z = 6
# Coeficientes y términos independientes
A = np.array([[4.0, 1.0, 1.0],
[1.0, 3.0, 1.0],
[1.0, 1.0, 5.0]])
b = np.array([7.0, -8.0, 6.0])
# Condiciones iniciales
x = np.zeros(3)
max_iter = 25
tolerance = 1e-6
# Para graficar el historial de cada variable
history = [x.copy()]
# Método de Gauss-Seidel
for iteration in range(max_iter):
x_new = x.copy()
for i in range(len(A)):
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, len(A)))
x_new[i] = (b[i] - s1 - s2) / A[i][i]
history.append(x_new.copy())
if np.allclose(x, x_new, atol=tolerance):
print(f"Convergió en {iteration + 1} iteraciones.")
break
x = x_new
# Convertir historial a numpy array para graficar
history = np.array(history)
# Mostrar resultado
print("Aproximación final:")
print(f"x = {x[0]:.6f}, y = {x[1]:.6f}, z = {x[2]:.6f}")
# Graficar la convergencia de cada variable
plt.figure(figsize=(10, 6))
plt.plot(history[:, 0], label='x')
plt.plot(history[:, 1], label='y')
plt.plot(history[:, 2], label='z')
plt.xlabel('Iteración')
plt.ylabel('Valor de la variable')
plt.title('Convergencia del método de Gauss-Seidel')
plt.grid(True)
plt.legend()
plt.show()
-Grafica-
-Conclusión-
El método de Gauss-Seidel es una técnica iterativa para resolver sistemas de ecuaciones lineales, queconverge más rápido que el método de Jacobi, pero solo si la matriz de
coeficientes es diagonalmente dominante o si es simétrica y definida positiva.
Su eficiencia radica en utilizar los valores de las incógnitas recién calculados en la
misma iteración, acelerando la convergencia.
Comentarios
Publicar un comentario