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

jacobi(A,b,x0,tol,maxiter)\texttt{jacobi}(A, b, x_{0}, tol, maxiter)

Nombre

jacobi - Resuelve un sistema lineal Ax=b con el metodo iterativo de Jacobi.

Sinopsis

x = gauss.jacobi(A, b, x0, tol, maxiter)

Descripcion

Aplica el metodo iterativo de Jacobi para aproximar la solucion de un sistema lineal.

A diferencia de Gauss-Seidel, cada iteracion usa unicamente los valores de la iteracion anterior.

Formula:

xi(k+1)=bijeiaijxj(k)aiix_i^{(k+1)}=\frac{b_i-\sum_{j e i}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 el ultimo vector calculado.

Comportamiento

  • Recibe A como matriz n x n, b como columna n x 1 y x0 como aproximacion inicial.
  • Construye x_new usando solo los valores de x de la iteracion anterior.
  • Usa la diferencia maxima entre iteraciones como criterio de parada.
  • Retorna el ultimo vector calculado.

Funciones API relacionadas

  • gauss.gauss_seidel()
  • gauss.sor()
  • gauss.gauss_seidel_residuo()

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_new de tamaño n x 1 con la solución aproximada.

Ejemplo

ejemplo.blox
Solo lectura
INCLUIR "matrices.api"
INCLUIR "gauss.api"

FUNCION PRINCIPAL
INICIO
    MATRIZ A[3][3], b[3][1], x0[][]
    MATRIZ x_jac[][], r_jac[][]
    NUMERICO i, nr_jac

    // 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)


    // x0 inicial
    x0 = matrices.carga_cero(3, 1)



    // Jacobi
    x_jac = gauss.jacobi(A, b, x0, 0.0001, 200)


    IMPRIMIR("\nSolución aproximada por Jacobi:\n")

    IMPRIMIR("\nx = ")
    matrices.imprimir(x_jac)

    // Podemos reutilizar las funciones de residuo/norma:
    r_jac  = gauss.gauss_seidel_residuo(A, x_jac, b)
    nr_jac = gauss.gauss_seidel_norma_infinito(r_jac)

    IMPRIMIR("\nResiduo Jacobi\n")
    IMPRIMIR("\nr = ")
    matrices.imprimir(r_jac)
    IMPRIMIR("\n||r_jac||_inf = ", nr_jac:4)

FINAL





Restringido: este ejemplo no puede ejecutarse en el Playground web porque la API requerida no está disponible en el sandbox.