Documentacióngauss_seidel(A, b, x0, tol, maxiter)

gauss_seidel(A,b,x0,tol,maxiter)\texttt{gauss\_seidel}(A, b, x_{0}, 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:

xi(k+1)=bij=1i1aijxj(k+1)j=i+1naijxj(k)aiix_i^{(k+1)}=\frac{b_i-\sum_{j=1}^{i-1}a_{ij}x_j^{(k+1)}-\sum_{j=i+1}^{n}a_{ij}x_j^{(k)}}{a_{ii}}

Validaciones y casos borde

  • Valida que A sea cuadrada y no vacia.
  • Valida que b y x0 sean matrices columna n x 1 compatibles con A.
  • Valida que tol sea mayor que cero.
  • Valida que maxiter sea entero y mayor que cero.
  • Valida que la diagonal de A no contenga ceros.
  • Si alguna condicion falla, emite ERROR().
  • Si no converge dentro de maxiter, retorna la ultima aproximacion calculada.

Comportamiento

  • Recibe A como matriz n x n, b como columna n x 1 y x0 como aproximacion inicial.
  • Recorre las ecuaciones actualizando x_i con los valores mas recientes disponibles.
  • Usa la diferencia maxima entre iteraciones como criterio de parada.
  • Detiene el proceso cuando maxdiff < tol o cuando alcanza maxiter.

Funciones API relacionadas

  • gauss.jacobi()
  • gauss.sor()
  • gauss.gauss_seidel_residuo()
  • gauss.gauss_seidel_norma_infinito()

Parámetros

ParámetroTipoDescripción
AMATRIZMatriz de coeficientes A de tamaño n x n.
bMATRIZVector columna de términos independientes b, representado como MATRIZ n x 1.
x0MATRIZAproximación inicial x0, representada como MATRIZ n x 1.
tolNUMERICOTolerancia numérica usada como criterio de parada.
maxiterNUMERICOCantidad 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
Solo lectura
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.