s1Eva2026PAOI_T2 Escuelas para el futbol

Ejercicio: 1Eva2026PAOI_T2 Escuelas para el futbol

A partir de los datos de la tabla, se tiene que:

\Componente País \Infraestructura (Canchas)Formación de Educadores (miles)Equipamiento (césped, balones, arcos, etc.)Niños (uniformes, alimentos, becas) (miles)Atención salud (miles)
Ecuador0.80.90.75.00.3
Colombia0.70.74.60.80.2
Venezuela6.00.80.70.70.2
Chile0.94.50.60.30.1

literal a. Sistema de Ecuaciones

Se plantean las ecuaciones considerando los montos asignados a cada país con los valores sugeridos.

0.8 a+0.9 b + 0.7 c +5.0 d + 0.3e = 25 0.7 a+0.7 b + 4.6 c +0.8 d + 0.2e = 50 6.0 a+0.8 b + 0.7 c +0.7 d + 0.2e = 70 0.9 a+4.5 b + 0.6 c +0.3 d + 0.1e = 30

Adicionalmente se indica que al menos se invierte en atención de salud en la unidad, siendo la variable libre la e=1.

0.8 a+0.9 b + 0.7 c +5.0 d = 25 - 0.3(1) 0.7 a+0.7 b + 4.6 c +0.8 d = 50 - 0.2(1) 6.0 a+0.8 b + 0.7 c +0.7 d = 70 - 0.2(1) 0.9 a+4.5 b + 0.6 c +0.3 d = 30- 0.1(1)

literal b. Forma matricial y matriz aumentada

Forma matricial A.X=B

\begin{bmatrix} 0.8 & 0.9 & 0.7 & 5.0 \\ 0.7 & 0.7 & 4.6 & 0.8 \\ 6.0 &0.8 & 0.7 & 0.7 \\ 0.9 & 4.5 & 0.6 & 0.3 & \end{bmatrix} \begin{bmatrix} a\\b\\c\\d \end{bmatrix} \begin{bmatrix} 25-0.3 \\ 50-0.2 \\ 70 -0.2 \\ 30-0.1 \end{bmatrix}

Matriz aumentada

\begin{bmatrix} 0.8 & 0.9 & 0.7 & 5.0 & 25-0.3 \\ 0.7 & 0.7 & 4.6 & 0.8 & 50-0.2\\ 6.0 &0.8 & 0.7 & 0.7 & 70 -0.2 \\ 0.9 & 4.5 & 0.6 & 0.3 & 30-0.1 \end{bmatrix}

literal c. Pivoteo parcial por filas

Tomando la columna=0, el máximo en magnitud se encuentra en fila =2. Se intercambia i=0 con i=2.

\begin{bmatrix} 6.0 &0.8 & 0.7 & 0.7 & 70 -0.2 \\ 0.7 & 0.7 & 4.6 & 0.8 & 50-0.2 \\ 0.8 & 0.9 & 0.7 & 5.0 & 25-0.3 \\ 0.9 & 4.5 & 0.6 & 0.3 & 30-0.1 \end{bmatrix}

Se observa columna=1, desde la diagonal en adelante. el máximo en magnitud se encuentra en fila=0. Se intercambia i=1 con i= 3

\begin{bmatrix} 6.0 &0.8 & 0.7 & 0.7 & 70 -0.2 \\ 0.9 & 4.5 & 0.6 & 0.3 & 30-0.1 \\ 0.8 & 0.9 & 0.7 & 5.0 & 25-0.3 \\ 0.7 & 0.7 & 4.6 & 0.8 & 50-0.2 \end{bmatrix}

Se observa columna=2, desde la diagonal en adelante. el máximo en magnitud se encuentra en fila=3. Se intercambia i=2 con i= 3

\begin{bmatrix} 6.0 &0.8 & 0.7 & 0.7 & 70 -0.2 \\ 0.9 & 4.5 & 0.6 & 0.3 & 30-0.1 \\ 0.7 & 0.7 & 4.6 & 0.8 & 50-0.2 \\0.8 & 0.9 & 0.7 & 5.0 & 25-0.3 \end{bmatrix}

literal d Método de Jacobi

a = \frac{(70-0.2)-0.8b-0.7c-0.7d}{6.0} b = \frac{(30-0.1) -0.9a-0.6c-0.3d}{4.5} c = \frac{(50-0.2)-0.7a-0.7b-0.8d}{4.6} d = \frac{(25-0.3)-0.8a-0.9b-0.7c}{5.0}

Se propone para vector inicial al menos un número mayor a la unidad concedida para el atención de salud.

Un criterio complementario, la infraestructura de canchas y equipamiento deberían ser iguales en cantidad. por ejemplo en el orden de las decenas. Por lo que el vector inicial podría sugerirse como:

X0 = [10, 2, 10, 2]

Para la tolerancia, se considera que los niños y educadores se miden por miles, por lo que la tolerancia podría ser en menor al orden de las unidades, es decir 0.0001

Se podría mantener el número de iteraciones para convergencia menores a 100, que es iteramax.

literal e. Iteraciones con el método

itera = 0

X0 = [10, 2, 10, 2]

a = \frac{(70-0.2)-0.8(2)-0.7(10)-0.7(2)}{6.0}=9.9666 b = \frac{(30-0.1) -0.9(10)-0.6(10)-0.3(2)}{4.5}=3.1777 c = \frac{(50-0.2)-0.7(10)-0.7(2)-0.8(2)}{4.6}=8.6521 d = \frac{(25-0.3)-0.8(10)-0.9(2)-0.7(10)}{5.0}=1.58

diferencias =|[9.9666-10, 3.1777-2, 8.6521-10, 1.58-2]|

diferencias = |[0.0333, 1.1777, 1.3478, -0.42]|

errado = max|diferencias| = 1.3478

itera = 1

X0 = [9.9666, 3.1777, 8.6521, 1.58]

a = \frac{(70-0.2)-0.8(3.1777)-0.7(8.6521)-0.7(1.58)}{6.0}=10.0158 b = \frac{(30-0.1) -0.9(9.9666)-0.6(8.6521)-0.3(1.58)}{4.5}=3.3921 c = \frac{(50-0.2)-0.7(9.9666)-0.7(3.1777)-0.8(1.58)}{4.6}=8.5510 d = \frac{(25-0.3)-0.8(9.9666)-0.9(3.1777)-0.7(8.6521)}{5.0}=1.5620

diferencias =|[10.0158-9.9666, 3.3921-3.1777, 8.5510-8.6521, 1.5620-1.58]|

diferencias = |[0.0492, 0.2143. -0.1011, -0.0179]|

errado = max|diferencias| = 0.2143

itera =2

X0 = [10.0158, 3.3921, 8.5510, 1.5620]

a = \frac{(70-0.2)-0.8(3.3921)-0.7(8.5510)-0.7(1.5620)}{6.0}=10.0011 b = \frac{(30-0.1) -0.9(10.0158)-0.6(8.5510)-0.3(1.5620)}{4.5}=3.3969 c = \frac{(50-0.2)-0.7(10.0158)-0.7(3.3921)-0.8(1.5620)}{4.6}=8.5140 d = \frac{(25-0.3)-0.8(10.0158)-0.9(3.3921)-0.7(8.5510)}{5.0}=1.5297

diferencias =|[10.0011-10.0158, 3.3969-3.3921, 8.5140-8.5510, 1.5297 - 1.5620]|

diferencias = |[0.01469, 0.004837, 0.03698, 0.03230]|

errado = max|diferencias| = 0.03698

literal f. Resultados

El valor de error disminuye en cada iteración por lo que el método converge.

Con el algoritmo se alcanza a la tolerancia luego de 10 iteraciones.

El número de condición= 1.89 es cercano a 1 lo que muestra que el sistema es estable.

El vector resultante usando el algoritmo es:

[10.00659513, 3.40509722, 8.51849232, 1.53343836]

El primer valor indica que al menos se trabajarían 10 canchas completas. Se equipan 8 canchas completas y otras con algunos implementos complementarios, Se empieza a invertir mas en educadores de futbol que participantes, si el programa está iniciando se deben capacitar primero a los educadores.

Se incorporan al plan al menos 1533 niños en la etapa inicial.

Resultados con el algoritmo:

0 [10.  2. 10.  2.]
   1.3478260869565215 [0.03333333 1.17777778 1.34782609 0.42      ]
1 [9.96666667 3.17777778 8.65217391 1.58      ]
   0.21437681159420308 [0.04920934 0.21437681 0.10111111 0.01797101]
2 [10.01587601  3.39215459  8.5510628   1.56202899]
   0.036985542253029635 [0.01469066 0.00483768 0.03698554 0.03230576]
3 [10.00118535  3.39699227  8.51407726  1.52972322]
   0.010023255338515558 [0.00743896 0.01002326 0.00711776 0.0066577 ]
4 [10.00862431  3.40701553  8.52119502  1.53638092]
   0.003990906268057648 [0.00294357 0.00288067 0.00381515 0.00399091]
5 [10.00568074  3.40413485  8.51737987  1.53239001]
   0.00158036874496581 [0.0012948  0.00136346 0.00158037 0.00152361]
6 [10.00697553  3.40549831  8.51896023  1.53391363]
   0.0006738422704755109 [0.00054393 0.00057125 0.00066949 0.00067384]
7 [10.00643161  3.40492706  8.51829074  1.53323979]
   0.00028689062021491907 [0.00023289 0.00024297 0.00028689 0.00028358]
8 [10.0066645   3.40517004  8.51857763  1.53352337]
   0.00012173260873638014 [9.89516971e-05 1.03735402e-04 1.21732609e-04 1.21162264e-04]
9 [10.00656555  3.4050663   8.5184559   1.53340221]
   5.191538694759856e-05 [4.21691220e-05 4.40988382e-05 5.19153869e-05 5.15472091e-05]
Metodo de Jacobi
numero de condición: 1.8965248084337174
X:  [10.00660771  3.4051104   8.51850781  1.53345375]
errado: 5.191538694759856e-05
iteraciones: 10
[10.00659513  3.40509722  8.51849232  1.53343836]

El algoritmo en Python ajustado al ejercicio es:

# 1Eva2026PAOI_T2 Escuelas para el futbol
# Método de Jacobi
import numpy as np
 
# INGRESO
k = 1 #
A = [[0.8,    0.9,    0.7,    5.0], # 0.3],
     [0.7,    0.7,    4.6,    0.8], # 0.5],
     [6.0,    0.8,    0.7,    0.7], # 0.2],
     [0.9,    4.5,    0.6,    0.3]] # 0.1]]

#B = [50,50,50,50]
B = [25-0.3*k,50-0.2*k,70-0.2*k,30-0.1*k]

X0 = [10,2,10,2]
tolera = 0.0001 #la unidad es miles
iteramax = 100

# PROCEDIMIENTO
# Matrices como arreglo, numeros reales
A = np.array(A,dtype=float)
B = np.array(B,dtype=float)
 
# Matriz aumentada AB
B_columna = np.transpose([B])
AB  = np.concatenate((A,B_columna),axis=1)
AB0 = np.copy(AB) # copia de AB
 
# Pivoteo parcial por filas
tamano = np.shape(AB)
n = tamano[0]
m = tamano[1]
 
# Para cada fila en AB
for i in range(0,n-1,1):
    # columna desde diagonal i en adelante
    columna = abs(AB[i:,i])
    dondemax = np.argmax(columna)
     
    if (dondemax !=0): # NO en diagonal
        # intercambia filas
        temporal = np.copy(AB[i,:])
        AB[i,:]  = AB[dondemax+i,:]
        AB[dondemax+i,:] = temporal
# Actualiza A y B pivoteado
A = AB[:,:n]
B = AB[:,n]
 
# PROCEDIMIENTO
# Matrices como arreglo, numeros reales
A = np.array(A,dtype=float)
B = np.array(B,dtype=float)
X0 = np.array(X0,dtype=float)
tamano = np.shape(A) # tamaño A
n = tamano[0]
m = tamano[1]
 
# valores iniciales
diferencia = np.ones(n, dtype=float)
errado = 2*tolera # np.max(diferencia)
 
itera = 0
X = np.copy(X0)
Xnuevo = np.copy(X0)
while errado>tolera and itera<=iteramax:
     
    for i in range(0,n,1): # una ecuacion
        suma = B[i] # numerador
        for j in range(0,m,1): # un coeficiente
            if (i!=j): # excepto diagonal de A
                suma = suma-A[i,j]*X[j]
        Xnuevo[i] = suma/A[i,i]
     
    diferencia = abs(Xnuevo-X)
    errado = np.max(diferencia)
     
    print(itera, X)
    print('  ',errado,diferencia)
     
    X = np.copy(Xnuevo) # actualiza X
    itera = itera + 1
 
if (itera>iteramax): # No converge
    X = np.nan
    print('No converge,iteramax superado')
 
# numero de condicion
ncond = np.linalg.cond(A)
 
# SALIDA
print('Metodo de Jacobi')
print('numero de condición:', ncond)
print('X: ',X)
print('errado:',errado)
print('iteraciones:', itera)
print(np.linalg.solve(A,B))

Ejemplos por año