Ejercicio: 1Eva_IT2012_T2_MN Modelo Leontief
Planteamiento
X – TX = D
A(I-T) = D
(I-T)X = D
para el algoritmo:
A = I – T
B = D
Algoritmo en Python
Resultados del algoritmo
respuesta X: [[158.56573701] [288.73225044] [323.87373581]] verificar A.X=B: [[ 79.99999997] [139.99999998] [200. ]] >>> itera 8 >>>
Instrucciones en Python
# Método de Gauss-Seidel # solución de sistemas de ecuaciones # por métodos iterativos import numpy as np # INGRESO T = np.array([[0.40, 0.03, 0.02], [0.06, 0.37, 0.10], [0.12, 0.15, 0.19]]) A = np.identity(3) - T B = np.array([80.0, 140.0, 200.0],dtype=float) X0 = np.array([200.0,200.0,200.0]) tolera = 0.00001 iteramax = 100 # PROCEDIMIENTO # Gauss-Seidel tamano = np.shape(A) n = tamano[0] m = tamano[1] # valores iniciales X = np.copy(X0) diferencia = np.ones(n, dtype=float) errado = 2*tolera itera = 0 while not(errado<=tolera or itera>iteramax): # por fila for i in range(0,n,1): # por columna suma = 0 for j in range(0,m,1): # excepto diagonal de A if (i!=j): suma = suma-A[i,j]*X[j] nuevo = (B[i]+suma)/A[i,i] diferencia[i] = np.abs(nuevo-X[i]) X[i] = nuevo errado = np.max(diferencia) itera = itera + 1 # Respuesta X en columna X = np.transpose([X]) # revisa si NO converge if (itera>iteramax): X=0 # revisa respuesta verifica = np.dot(A,X) # SALIDA print('respuesta X: ') print(X) print('verificar A.X=B: ') print(verifica)