Documentacióngauss_seidel(A, b, x0, tol, maxiter)
Nombre
gauss_seidel - Resuelve un sistema lineal Ax=b con el metodo iterativo de Gauss-Seidel.
Sinopsis
x = gauss.gauss_seidel(A, b, x0, tol, maxiter)
Descripcion
Aplica el esquema iterativo de Gauss-Seidel para aproximar la solucion de un sistema lineal.
En cada iteracion reutiliza inmediatamente los valores nuevos ya calculados de x, lo que suele acelerar la convergencia frente a Jacobi cuando el sistema cumple condiciones favorables.
Formula:
Validaciones y casos borde
- Valida que
Asea cuadrada y no vacia. - Valida que
byx0sean matrices columnan x 1compatibles conA. - Valida que
tolsea mayor que cero. - Valida que
maxitersea entero y mayor que cero. - Valida que la diagonal de
Ano contenga ceros. - Si alguna condicion falla, emite
ERROR(). - Si no converge dentro de
maxiter, retorna la ultima aproximacion calculada.
Comportamiento
- Recibe
Acomo matrizn x n,bcomo columnan x 1yx0como aproximacion inicial. - Recorre las ecuaciones actualizando
x_icon los valores mas recientes disponibles. - Usa la diferencia maxima entre iteraciones como criterio de parada.
- Detiene el proceso cuando
maxdiff < tolo cuando alcanzamaxiter.
Funciones API relacionadas
gauss.jacobi()gauss.sor()gauss.gauss_seidel_residuo()gauss.gauss_seidel_norma_infinito()
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| A | MATRIZ | Matriz de coeficientes A de tamaño n x n. |
| b | MATRIZ | Vector columna de términos independientes b, representado como MATRIZ n x 1. |
| x0 | MATRIZ | Aproximación inicial x0, representada como MATRIZ n x 1. |
| tol | NUMERICO | Tolerancia numérica usada como criterio de parada. |
| maxiter | NUMERICO | Cantidad máxima de iteraciones permitidas. |
Valor de retorno
MATRIZ - Matriz columna x de tamaño n x 1 con la aproximación de la solución.
Ejemplo
ejemplo.blox
INCLUIR "matrices.api"
INCLUIR "gauss.api"
FUNCION PRINCIPAL
INICIO
NUMERICO fila, columna
fila = 3
columna = 3
MATRIZ A[fila][columna]
MATRIZ b[columna][1]
MATRIZ x0[][]
MATRIZ x_sol[][]
MATRIZ r[][]
NUMERICO i, nr
// Definimos la matriz A
A = [[ 4, -1, 1],
[-2, 6, 1],
[-1, 1, 7]]
// Definimos la matriz B
b = [[ 7],
[ 9],
[-6]]
IMPRIMIR("\nPROBLEMA:")
IMPRIMIR(" Ax = b\n\n")
IMPRIMIR("\nA = ")
matrices.imprimir(A)
IMPRIMIR("\nb = ")
matrices.imprimir(b)
// Aproximación inicial x0 = (0, 0, 0)^T
x0 = matrices.carga_cero(columna, 1)
// Llamamos al método de Gauss-Seidel
x_sol = gauss.gauss_seidel(A, b, x0, 0.0001, 100)
IMPRIMIR("\nSolución aproximada por Gauss-Seidel:\n")
IMPRIMIR("\nx = ")
matrices.imprimir(x_sol)
// --- Calcular el residuo ---
r = gauss.gauss_seidel_residuo(A, x_sol, b)
nr = gauss.gauss_seidel_norma_infinito(r)
IMPRIMIR("\nResiduo r = b - Ax\n")
IMPRIMIR("\nr = ")
matrices.imprimir(r)
IMPRIMIR("\nNorma infinito del residuo ||r||_inf = ", nr:4)
FINAL
Restringido: este ejemplo no puede ejecutarse en el Playground web porque la API requerida no está disponible en el sandbox.