Ejercicio: 1Eva_IT2018_T3 Temperatura en nodos de placa
a) Plantear el sistema de ecuaciones. Usando el promedio para cada nodo interior:
que reordenando se convierte en:
simplificando:
que a forma matricial se convierte en:
A = [[ 4, -1, -1, 0.0], [ 1, -4, 0, 1.0], [ 1, 0, -4, 1.0], [ 0, 1, 1,-4.0]] B = [[ 150.0], [ -80.0], [-160.0], [ -90.0]]
Observación: la matriz A ya es diagonal dominante, no requiere pivotear por filas. Se aumentó el punto decimal a los valores de la matriz A y el vector B para que sean considerados como números reales.
El número de condición es: np.linalg.cond(A) = 3.0
que es cercano a 1 en un orden de magnitud, por lo que la solución matricial es «estable» y los cambios en los coeficientes afectan proporcionalmente a los resultados. Se puede aplicar métodos iterativos sin mayores inconvenientes.
b y c) método de Jacobi para sistemas de ecuaciones, con vector inicial
X(0) = [[60.0], [40], [70], [50]]
reemplazando los valores iniciales en cada ecuación sin cambios.
iteración 1
X(1) = [[65], [47.5], [67.5], [50]] vector de error = [|65-60|, |47.5-40|, |67.5-70|, |50-50|] = [|5|, |7.5|, |-2.5|, |0|] errormax = 7.5
iteración 2
X(2) = [[66.25], [48.75], [68.75], [51.3]] vector de error = [|66.25-65|, |48.75-47.5|, |68.75-67.5|, |51.3-50|] = [|1.25|, |1.25|, |1.25|, |1.3|] errormax = 1.3
iteración 3
X(2) = [[66.875], [49.38], [69.3875], [51.875]] vector de error = [|66.875-66.25|, |49.38-48.75|, |69.3875-68.75|, |51.875-51.3|] = [|0.655|, |0,63|, |0.6375|, |0.575|] errormax = 0.655 con error relativo de: 100*0.655/66.875 = 0.97%
siguiendo las iteraciones se debería llegar a:
>>> np.linalg.solve(A,B) array([[ 67.5], [ 50. ], [ 70. ], [ 52.5]])