6.2: Método Jacobi para resolver ecuaciones lineales
- Page ID
- 115553
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:
- Inicializar cada una de las variables como cero\( x_0 = 0, y_0 = 0, z_0 = 0 \)
- 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.
- Incremente el contador de iteraciones\(i=i+1\) y repita el Paso 2.
- Deténgase cuando la respuesta “converja” o se haya alcanzado un número máximo de iteraciones. (ex. \(i = 100\))
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.
Escriba las ecuaciones para\(x_i\),\(y_i\), y\(z_i\) basado en\(x_{(i−1)}, y_{(i−1)}\), y\(z_{(i−1)}\).
Complete el siguiente código agregando fórmulas para\(y_i\) y\(z_i\) para resolver las ecuaciones anteriores usando el método Jacobi.
¿Cuáles son los valores finales para\(x\)\(y\), y\(z\)?
\[ x = \nonumber \]
\[ y = \nonumber \]
\[ z = \nonumber \]
Escribe cada una de las ecuaciones anteriores y demuestra que tu resultado final es una solución al sistema de ecuaciones:
Al inspeccionar la gráfica, ¿cuánto tiempo tardó el algoritmo en converger a una solución?
¿Cómo podrías reescribir el programa anterior para detenerlo antes?