Saltar al contenido principal
LibreTexts Español

6.2: Método Jacobi para resolver ecuaciones lineales

  • Page ID
    115553
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Durante la clase de hoy escribiremos un método iterativo (llamado así por Carl Gustav Jacob Jacobi) para resolver el siguiente sistema de ecuaciones:

    \[ 6x + 2y - ~z = 4~ \nonumber \]

    \[~ x + 5y + ~z = 3~ \nonumber \]

    \[ 2x +~ y + 4z = 27 \nonumber \]

    Aquí hay un esquema básico del algoritmo del método Jacobi:

    1. Inicializar cada una de las variables como cero\( x_0 = 0, y_0 = 0, z_0 = 0 \)
    2. Calcular la siguiente iteración usando las ecuaciones anteriores y los valores de las iteraciones anteriores. Por ejemplo aquí está la fórmula para calcular\(x_i\) a partir\(y_{(i-1)}\) y\(z_{(i-1)}\) basado en la primera ecuación:\(x_i = \dfrac{4-2y_{(i-1)} + z_{(i-1)}}{6} \). De igual manera, podemos obtener la actualización para\(y_i\) y\(z_i\) a partir de la segunda y tercera ecuaciones, respectivamente.
    3. Incremente el contador de iteraciones\(i=i+1\) y repita el Paso 2.
    4. Deténgase cuando la respuesta “converja” o se haya alcanzado un número máximo de iteraciones. (ex. \(i = 100\))
    Nota Importante

    Una condición suficiente (pero no necesaria) para que el método converja es que la matriz A sea estricta o irreduciblemente dominante diagonalmente. Dominio diagonal de fila estricta significa que para cada fila, el valor absoluto del término diagonal es mayor que la suma de los valores absolutos de otros términos. - De Wikipedia

    En otras palabras, el Jacobi Methid no va a funcionar un todos los problemas.

    Hacer esto

    Escriba las ecuaciones para\(x_i\),\(y_i\), y\(z_i\) basado en\(x_{(i−1)}, y_{(i−1)}\), y\(z_{(i−1)}\).

    Hacer esto

    Complete el siguiente código agregando fórmulas para\(y_i\) y\(z_i\) para resolver las ecuaciones anteriores usando el método Jacobi.

    %matplotlib inline
    import matplotlib.pylab as plt
    
    x = []
    y = []
    z = []
    
    #step 1: inicialize to zero
    x.append(0)
    y.append(0)
    z.append(0)
    
    for i in range(1,100):
        xi = (4 - 2*y[i-1]+ z[i-1])/6
    #####Start your code here #####
        yi = 0 #Change this line
        zi = 0 #Change this line
    #####End of your code here#####        
        #Add latest value to history
        x.append(xi)
        y.append(yi)
        z.append(zi)
    
    #Plot History of values
    plt.plot(x, label='x')
    plt.plot(y, label='y')
    plt.plot(z, label='z')
    plt.xlabel('Iteration')
    plt.ylabel('Value')
    plt.legend(loc=1);
    Pregunta

    ¿Cuáles son los valores finales para\(x\)\(y\), y\(z\)?

    \[ x = \nonumber \]

    \[ y = \nonumber \]

    \[ z = \nonumber \]

    Hacer esto

    Escribe cada una de las ecuaciones anteriores y demuestra que tu resultado final es una solución al sistema de ecuaciones:

    # Put your code here
    Pregunta

    Al inspeccionar la gráfica, ¿cuánto tiempo tardó el algoritmo en converger a una solución?

    Pregunta

    ¿Cómo podrías reescribir el programa anterior para detenerlo antes?


    This page titled 6.2: Método Jacobi para resolver ecuaciones lineales is shared under a CC BY-NC 4.0 license and was authored, remixed, and/or curated by Dirk Colbry via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.