3Eva_2024PAOI_T3 Salto Bungee y método de Jacobi

3ra Evaluación 2024-2025 PAO I. 17/Septiembre/2024

Tema 3. (35 puntos) Para el salto del Bungee y la tabla del ejercicio del tema 2, realice el sistema de ecuaciones para el polinomio de interpolación usando los tiempos en el vector ts = [0, 0.75,1.375, 2.55]

datos usando h=1/8
ti vi
0 0.0000
0.25 2.4479
0.5 4.8849
0.75 7.3001
1 9.6832
1.375 13.1763
1.75 16.5451
2.125 19.7641
2.4 22.0193
2.55 23.2075
  1. Plantee el sistema de ecuaciones usando los cuatro puntos datos en el vector ts
  2. Presente el sistema de ecuaciones en su forma matricial y muestre la matriz aumentada y pivoteada
  3. Desarrolle el ejercicio usando el método de Jacobi, para tres iteraciones. Justifique el vector inicial X0
  4. Comente sobre la convergencia del ejercicio y adjunte los archivos para algoritmo.py y resultados.txt

Rúbrica: Planteamiento (5 puntos), Matriz aumentada y pivoteada (5 puntos), iteraciones(15 puntos), error por iteración (5 puntos), literal d (5 puntos)

3Eva_2024PAOI_T2 Salto Bungee interpolar velocidad primer tramo

3ra Evaluación 2024-2025 PAO I. 17/Septiembre/2024

Tema 2. (30 puntos) Bungee Jumping 02
Para el salto del Bungee del ejercicio del tema anterior se toman lecturas con un sensor de velocidad sujetado a la persona.

De la tabla de datos obtenida, se observa que los tamaños de paso en tiempo no siempre son equidistantes.
Se requiere encontrar un polinomio interpolación de al menos grado 3.

datos usando h=1/8
ti vi
0 0.0000
0.25 2.4479
0.5 4.8849
0.75 7.3001
1 9.6832
1.375 13.1763
1.75 16.5451
2.125 19.7641
2.4 22.0193
2.55 23.2075

a. Describa el planteamiento del ejercicio, selección de puntos, expresiones usando el método de Lagrange.

b. Resuelva el sistema usando los algoritmos correspondientes.

c. Presente el polinomio obtenido, simplificado y grafique verificando que P(x) pase por los puntos de muestra.

d. Use el resultado P(x) para estimar el error con los valores de vi que no fueron usados para la interpolación.

e. Adjunte los archivos para algoritmo.py, resultados.txt y grafica.png

Rúbrica: literal a (10 puntos), literal b (5 puntos), literal c (5 puntos), literal d (5 puntos), literal e (5 puntos)

Referencia: Chapra. capítulo 28. Ejercicio 28.41 p852.

3Eva_2024PAOI_T1 EDO Salto Bungee extiende y estira toda la cuerda

3ra Evaluación 2024-2025 PAO I. 17/Septiembre/2024

Tema 1. (35 puntos) Salto Bungee 01
La ecuación diferencial para la velocidad de alguien que practica el salto del bungee es diferente según si el saltador ha caído una distancia en la que la cuerda está extendida por completo y comienza a estirarse o encogerse.

Si la distancia recorrida es menor que la longitud de la cuerda, el saltador sólo está sujeto a las fuerzas gravitacional y de arrastre de la cuerda.

\frac{d^2y}{dt^2} = g - signo(v) \frac{C_d}{m}\Big( \frac{dy}{dt}\Big)^2 y \leq L

Salto Bungee 02Suponga que las condiciones iniciales son:

y(0) =0

\frac{dy(0)}{dt} = 0

Una vez que la cuerda comienza a estirarse, también deben incluirse las fuerzas del resorte y del amortiguamiento de la cuerda.

\frac{d^2y}{dt^2} = g - signo(v) \frac{C_d}{m}\Big( \frac{dy}{dt}\Big)^2 -\frac{k}{m}(y-L) - \frac{\gamma}{m}( \frac{dy}{dt}\Big) y \gt L
dy/dt m/s velocidad (v)
t s tiempo
g 9.8 m/s2 gravedad
cd 0.25 kg/m coeficiente de arrastre
m 68.1 Kg masa
L 30 m Longitud de la cuerda
k 40 N/m constante de resorte de la cuerda
γ 8 N s/m coeficiente de amortiguamiento de la cuerda
signo(v) función que devuelve –1, 0 y 1, para v negativa, cero y positiva, respectivamente

En conocimiento que la primera ecuación es válida solo hasta tc=2.55, L=30mts, v= 23.20752.
Encuentre el tiempo td cuando se alcanza la longitud MÁXIMA de la cuerda extendida y estirada por completo, es decir y>L, con velocidad = 0. (solo 2da ecuación)

a. Realice el planteamiento del ejercicio usando Runge-Kutta de 2do Orden

b. Desarrolle tres iteraciones para y(t) con tamaño de paso h=0.5

c. Usando el algoritmo, aproxime la solución para y en el intervalo entre [0,tc], adjunte sus resultados.txt

d. Indique el valor de td, muestre cómo mejorar la precisión y realice sus observaciones sobre los resultados.

Observación: dy/dt = v, función signo(v) en Numpy:np.sign(v)

Rúbrica: literal a (5 puntos), literal b (15 puntos), literal c resultados.txt y grafica.png (10 puntos), literal d (5 puntos),

Referencia: [1] Chapra. capítulo 28. Ejercicio 28.41 p852.

[2] Extreme Bungy Jumping with Cliff Jump Shenanigans! Play On in New Zealand! 4K! – devinsupertramp. 23 mar 2015.

 

2Eva_2024PAOI_T3 EDP Parabólica

2da Evaluación 2024-2025 PAO I. 28/Agosto/2024

Tema 3. (30 puntos)

Para la siguiente Ecuación Diferencial Parcial con b = 2, resuelva usando las condiciones mostradas

\frac{\partial ^2 u}{\partial x^2} = b \frac{\partial u}{\partial t}
0 < x < 1  0 < t < 0.5
Condiciones iniciales:  u(x,0)=0
Condiciones de frontera: u(0,t)=1
u(1,t)= 2

Utilice diferencias finitas centradas y hacia adelante para las variables independientes x,t

a. Plantee las ecuaciones para usar un método numérico en un nodo i,j

b. Realice la gráfica de malla,

c. Desarrolle y obtenga el modelo discreto para u(xi,tj)

d. Realice al menos tres iteraciones en el eje tiempo.

e. Estime el error de u(xi,tj) y adjunte los archivos del algoritmo y resultados.

Rúbrica: Aproximación de las derivadas parciales (5 puntos), construcción de la malla (5), desarrollo de iteraciones (15), literal e (5 puntos)

Referencia: EDP Parabólicas. Chapra & Canale. 5ta Ed. Ejercicio 30.15. P.904

2Eva_2024PAOI_T2 Salto Bungee longitud total de cuerda

2da Evaluación 2024-2025 PAO I. 28/Agosto/2024

Tema 2. (40 puntos) Bungee Jumping 02
Para el salto del Bungee del ejercicio del tema anterior se toman lecturas con un sensor de velocidad sujetado a la persona.

2.1 De la tabla de datos obtenida, se observa que los tamaños de paso en tiempo no siempre son equidistantes.
Se requiere encontrar la distancia recorrida en el intervalo de [0,2.55] usando fórmulas de integración compuestas.

ti vi
0 0.0000
0.25 2.4479
0.5 4.8849
0.75 7.3001
1 9.6832
1.375 13.1763
1.75 16.5451
2.125 19.7641
2.4 22.0193
2.55 23.2075

2.2 Usando los datos de la tabla para el intervalo [2.55, 5.175] donde la velocidad de la caída de la persona al primer salto ha llegado a casi cero, o antes del primer rebote, se ha obtenido un polinomio de interpolación:

v = -3.979t2 + 21.557t – 5.3997

Obtenga la distancia recorrida en el segundo intervalo usando el método de Cuadratura de Gauss.

a. Realice el planteamiento de las ecuaciones para cada sección del ejercicio.

b. Describa el criterio usado para determinar el número de tramos usado en cada caso.

c. Desarrolle las expresiones completas del ejercicio para cada sección.

d. Encuentre la distancia total (profundidad) alcanzada por la persona al dar el salto.

Rúbrica: literal a 2.1 (5 puntos), a 2.2 (5 puntos) literal b (5 puntos), literal c 2.1 (10 puntos), c 2.2 (10 puntos), literal d (5 puntos)

Referencia:[1] Chapra. capítulo 28. Ejercicio 28.41 p852.

[2] Extreme Bungy Jumping with Cliff Jump Shenanigans! Play On in New Zealand! 4K! – devinsupertramp. 23 mar 2015.

2Eva_2024PAOI_T1 EDO Salto Bungee tiempo extiende cuerda

2da Evaluación 2024-2025 PAO I. 28/Agosto/2024

Tema 1. (30 puntos) Salto Bungee 01
La ecuación diferencial para la velocidad de alguien que practica el salto del bungee es diferente según si el saltador ha caído una distancia en la que la cuerda está extendida por completo y comienza a estirarse o encogerse.

Si la distancia recorrida es menor que la longitud de la cuerda, el saltador sólo está sujeto a las fuerzas gravitacional y de arrastre de la cuerda.

\frac{d^2y}{dt^2} = g - signo(v) \frac{C_d}{m}\Big( \frac{dy}{dt}\Big)^2 y \leq L

Salto Bungee 02Suponga que las condiciones iniciales son:

y(0) =0

\frac{dy(0)}{dt} = 0

Una vez que la cuerda comienza a estirarse, también deben incluirse las fuerzas del resorte y del amortiguamiento de la cuerda.

\frac{d^2y}{dt^2} = g - signo(v) \frac{C_d}{m}\Big( \frac{dy}{dt}\Big)^2 -\frac{k}{m}(y-L) - \frac{\gamma}{m}( \frac{dy}{dt}\Big) y \gt L
dy/dt m/s velocidad (v)
t s tiempo
g 9.8 m/s2 gravedad
cd 0.25 kg/m coeficiente de arrastre
m 68.1 Kg masa
L 30 m Longitud de la cuerda
k 40 N/m constante de resorte de la cuerda
γ 8 N s/m coeficiente de amortiguamiento de la cuerda
signo(v) función que devuelve –1, 0 y 1, para v negativa, cero y positiva, respectivamente

Encuentre el tiempo tc y la velocidad de la persona cuando se alcanza la longitud de la cuerda extendida y sin estirar (30 m), es decir y<L, aún se entra cayendo signo(v)=1. (solo primera ecuación)

a. Realice el planteamiento del ejercicio usando Runge-Kutta de 2do Orden

b. Desarrolle tres iteraciones para y(t) con tamaño de paso h=0.5

c. Usando el algoritmo, aproxime la solución para y en el intervalo entre [0,tc], adjunte sus resultados.txt

d. Indique el valor de tc, muestre cómo mejorar la precisión y realice sus observaciones sobre los resultados.

Observación: dy/dt = v, función signo(v) en Numpy:np.sign(v)

Rúbrica: literal a (5 puntos), literal b (15 puntos), literal c resultados.txt y grafica.png (5 puntos), literal d (5 puntos),

Referencia: [1] Chapra. capítulo 28. Ejercicio 28.41 p852.

[2] Extreme Bungy Jumping with Cliff Jump Shenanigans! Play On in New Zealand! 4K! – devinsupertramp. 23 mar 2015.

 

1Eva_2024PAOI_T3 Tasas de natalidad de reemplazo en Ecuador

1ra Evaluación 2024-2025 PAO I. 2/Julio/2024

Tema 3 (30 puntos) El  acelerado crecimiento de la población de mayor edad tendrá un fuerte impacto en los gastos futuros del Instituto de Seguridad Social (IESS), una entidad a la que actualmente (2024) no le alcanzan sus ingresos para pagar las pensiones a sus jubilados y otros rubros. [1] trabajadores vs Pensionistas

Un motivo a considerar, podría ser la caída de la natalidad es un fenómeno generalizado en los países desarrollados que tienen tasa de hijos por mujer en edad fértil por debajo de la tasa de reemplazo poblacional de 2.1

Ejemplos de estos casos son Corea del Sur, Japón y China [2,3], países donde la cantidad de personas que trabajan y aportan al seguro social tiende a ser cada vez menor respecto a los pensionistas (jubilados).

Para el caso de Ecuador a fin de realizar un análisis preliminar, se requiere disponer de un modelo matemático que permita estimar cuando ser alcanzaría esta tasa de natalidad.

Promedio Hijos por mujer en Ecuador. INEC 29 Agosto 2019 [4]
tasa 7.32 6.39 5.58 4.89 4.31 3.85 3.50 3.26 3.03 2.79 2.54 2.35
año 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020
k 0 1 2 3 4 5 6 7 8 9 10 11

Realice un modelo de interpolación polinómica usando los datos de los años 1965, 1980, 1995 y 2010.

a. Describa el planteamiento del ejercicio, justificando el grado del polinomio seleccionado

b. Realice el del sistema de ecuaciones en su forma matricial y muestre la matriz aumentada

c. Resuelva el sistema usando los algoritmos correspondientes.

d. Presente el polinomio obtenido y grafique verificando que P(x) pase por los puntos de muestra.

e. Use el resultado P(x) para estimar la tasa de hijos por mujer para el año 2020 y calcule el error.

f. Estime el año en que se alcanza la tasa mínima de reemplazo de 2.1

Adjunte los archivos de resultados, algoritmos y gráficas realizados para el ejercicio

Rúbrica: literal a (5 puntos), literal b (5 puntos), literal c (5 puntos), literal d (5 puntos), literal e (5 puntos) ), literal f (5 puntos).

Referencia:  [1] IESS: Envejecimiento de la población disparará gastos; Peña plantea subir aportes. Primicias.ec: 3 Marzo 2024. https://www.primicias.ec/noticias/economia/envejecimiento-poblacion-iess-aportes/
[2] «Emergencia nacional» en Corea del Sur: por qué las mujeres surcoreanas no están teniendo hijos. BBC News Mundo. 30 marzo 2024.

[3] Por qué China amplió a 3 el número de hijos que pueden tener las parejas. BBC News Mundo. 4 junio 2021.
https://www.youtube.com/watch?v=8kErwjPKwjY .
[4] 5 datos sobre población del Ecuador. INEC Ecuador. 29 Agosto 2019. Min 0:45 https://www.youtube.com/watch?v=wjTZNfykmZU [5] ¿Por qué los PAÍSES RICOS se enfrentan al COLAPSO DEMOGRÁFICO? VisualEconomik. 11 Octubre 2022.

import numpy as np
tasa = [7.32, 6.39, 5.58, 4.89, 4.31, 3.85, 3.50, 3.26, 3.03, 2.79, 2.54, 2.35]
anio = [1965, 1970, 1975, 1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2020]
k    = [   0,     1,   2,    3,    4,   5,     6,    7,    8,    9,   10,   11]
cual = [0,3,6,9]
tasamin = 2.1
fi = np.take(tasa,cual) # datos seleccionados

s1Eva_2024PAOI_T3 Tasas de natalidad de reemplazo en Ecuador

Ejercicio: 1Eva_2024PAOI_T3 Tasas de natalidad en países desarrollados

Los datos de la tabla que se requieren usar para la tabla son los años 1965, 1980, 1995 y 2010.

Promedio Hijos por mujer en Ecuador. INEC 29 Agosto 2019 [4]
tasa 7.32 4.89 3.50 2.79
año 1965 1980 1995 2010
k 0 3 6 9

literal a

Para cuatro datos o muestras el grado del polinomio que se puede plantear es 3. La ecuación se ordena siguiendo el modelo para la matriz de Vandermonde, primer coeficiente es del termino de mayor grado.

p(x) = ax^3+bx^2+cx+d

Por el orden de magnitud del eje x comparado con los valores de las constantes, se usan los valores del vector k que corresponde a los índices de la tabla. El valor del año se obtiene al hacer un cambio de escala que inicia en el año t0 = 1965 y tamaño de paso Δx = 5 años.

el sistema de ecuaciones usando cada punto será:

p(0) = a(0)^3+b(0)^2+c(0)+d = 7.32 p(3) = a(3)^3+b(3)^2+c(3)+d = 4.89 p(6) = a(6)^3+b(6)^2+c(6)+d = 3.50 p(9) = a(9)^3+b(9)^2+c(9)+d = 2.79

literal b

El sistema de ecuaciones para la Matriz de Vandermonde D y el vector de constantes B en la forma de matriz aumentada D|B:

\left[ \begin{array}{cccc | c} (0)^3 & (0)^2 & (0) & 1 & 7.32 \\ (3)^3 & (3)^2 & (3) &1 &4.89\\ (6)^3 & (6)^2 & (6) &1 & 3.50 \\ (9)^3 & (9)^2 & (9) & 1 & 2.79 \end{array} \right]

literal c

Resolviendo el sistema de ecuaciones con el algoritmo y usando la instrucción np.linalg.solve(A,B)

>>> np.linalg.solve(A,B)
array([-2.22222222e-03,  7.77777778e-02,
       -1.02333333e+00,  7.32000000e+00])

literal d

p(x) = -0.00222 x^3 + 0.07777 x^2 - 1.0233 x + 7.32

Para el ajuste de escala de años, se usa:

año = x*5 +1965

la gráfica usando el algoritmo, muestra que el polinomio pasa por los puntos seleccionados y existe un error entre los puntos que no participan en la construcción del polinomio.

tasa reemplazo colapso Ec v1

literal e

El año 2020 en x se escala como

2020 = x*5 +1965

x = 11

o revisando la tabla proporcionada en el ejercicio

p(11) = -0.00222 (11)^3 + 0.07777(11)^2 - 1.0233 (11)x + 7.32 = 2.5166

el error se calcula usando el valor medido para el año 2020

error = | 2.51- 2.35| = 0.16

literal f

p(x) = -0.00222 x^3 + 0.07777 x^2 - 1.0233 x + 7.32 = 2.51

para resolverlo se requiere usar cualquiera de los algoritmos de la unidad 2.

>>> import scipy.optimize as opt
>>> opt.bisect(px,11,30,xtol=0.001)
20.312713623046875
>>>

que corresponde al año = 20.31*5+1965 = 2066.55

Sin embargo la interpolación se usa para estimar valores dentro del intervalo de muestras. El concepto de extrapolación corresponde a otro capítulo. Sin embargo la pregunta se la considera para evaluar la comprensión de la unidad 2.


Algoritmo con Python

El resultado con el algoritmo se observa como

xi [0 3 6 9]
fi [7.32 4.89 3.5  2.79]
Matriz Vandermonde: 
[[  0.   0.   0.   1.]
 [ 27.   9.   3.   1.]
 [216.  36.   6.   1.]
 [729.  81.   9.   1.]]
los coeficientes del polinomio: 
[-2.22222222e-03  7.77777778e-02 
 -1.02333333e+00  7.32000000e+00]
Polinomio de interpolación: 
-0.00222222224*x**3 + 0.077777778*x**2 - 1.02333333*x + 7.32

 formato pprint
                       3                      2                            
- 0.002222222224*x  + 0.0777777778*x  - 1.023333333*x + 7.32
>>> px(11)
2.5166666666667066

Instrucciones en Python

# 1Eva_2024PAOI_T3 Tasas de natalidad en países desarrollados
import numpy as np
import matplotlib.pyplot as plt
import sympy as sym

# INGRESO
tasa = [7.32, 6.39, 5.58, 4.89,4.31,3.85,3.50,3.26,3.03,2.79,2.54,2.35]
anio = [1965, 1970, 1975, 1980,1985,1990,1995,2000,2005,2010,2015,2020]
k    = [   0,     1,   2,    3,   4,   5,   6,   7,   8,   9,  10,  11]
cual = [0,3,6,9]
tasamin = 2.1

# PROCEDIMIENTO
fi = np.take(tasa,cual)
xi = np.take(k,cual)

# El polinomio de interpolación
# muestras = tramos+1
muestras = 25

# PROCEDIMIENTO
# Convierte a arreglos numpy 
xi = np.array(xi)
B = np.array(fi)
n = len(xi)

# Matriz Vandermonde D
D = np.zeros(shape=(n,n),dtype =float)
for i in range(0,n,1):
    for j in range(0,n,1):
        potencia = (n-1)-j # Derecha a izquierda
        D[i,j] = xi[i]**potencia

# Aplicar métodos Unidad03. Tarea
# Resuelve sistema de ecuaciones A.X=B
coeficiente = np.linalg.solve(D,B)

# Polinomio en forma simbólica
x = sym.Symbol('x')
polinomio = 0
for i in range(0,n,1):
    potencia = (n-1)-i   # Derecha a izquierda
    termino = coeficiente[i]*(x**potencia)
    polinomio = polinomio + termino

# Polinomio a forma Lambda
# para evaluación con vectores de datos xin
px = sym.lambdify(x,polinomio)

# Para graficar el polinomio en [a,b]
a = np.min(xi)
b = np.max(xi)
xin = np.linspace(a,b,muestras)
yin = px(xin)
   
# SALIDA
print('xi', xi)
print('fi',fi)
print('Matriz Vandermonde: ')
print(D)
print('los coeficientes del polinomio: ')
print(coeficiente)
print('Polinomio de interpolación: ')
print(polinomio)
print('\n formato pprint')
sym.pprint(polinomio)

# Grafica
plt.plot(anio,tasa,'o')
plt.plot(xi*5+anio[0],fi,'o',color='red', label='[xi,fi]')
plt.plot(xin*5+anio[0],yin,color='red', label='p(x)')
plt.xlabel('xi')
plt.ylabel('fi')
plt.legend()
plt.axhline(0)
plt.axhline(2.1,linestyle='-.')
plt.xlabel('anio')
plt.ylabel('tasa')
plt.title(polinomio)
plt.show()

 

1Eva_2024PAOI_T2 Temperatura en nodos de placa cuadrada

1ra Evaluación 2024-2025 PAO I. 2/Julio/2024

Tema 2 (40 puntos) La distribución de temperatura en estado estable en una placa cuadrada caliente está modelada por la ecuación de Laplace [1], cuya solución en su forma iterativa cuando el factor
(Δy)2/(Δx) = 1 se interpreta como:

“La temperatura en los nodos de la malla de una placa se puede calcular con el promedio de las temperaturas de los 4 nodos vecinos de la izquierda, derecha, arriba y abajo” [2].

Considere placa cuadrada de 4.5 cm de lado tiene la temperatura en los nodos de los bordes como se indica en la figura. Placa Cuadrada Calentada Nodos01

a) Plantee el sistema de ecuaciones para encontrar los valores en los nodos a, b, c, d. Use la solución descrita para la ecuación de Laplace.

b) Presente la matriz aumentada y Muestre los pasos detallados para el pivoteo parcial por filas.

c) Desarrolle las expresiones para resolver mediante el método de Gauss-Seidel. Considere para el vector inicial Xo, valores intermedios entre las temperaturas de los bordes de la placa.

d) Realice al menos 3 iteraciones, indicando el error por iteración.

e) Analice la convergencia del método, número de condición y resultados obtenidos.

Adjunte los archivos del algoritmo y resultados de computadora utilizados.

Rúbrica: Literal a (5 puntos), literal b (5 puntos), literal c (5 puntos), literal d (15 puntos). literal e (5 puntos) Adjuntos (5 puntos)

Referencia: [1] Ejercicio 12.39 p339 Steven C. Chapra. Numerical Methods 7th Edition.
[2] Ecuaciones Elípticas. Método iterativo. http://blog.espol.edu.ec/analisisnumerico/edp-elipticas-metodo-iterativo/

s1Eva_2024PAOI_T2 Temperatura en nodos de placa cuadrada

Placa Cuadrada Calentada Nodos01Ejercicio: 1Eva_2024PAOI_T2 Temperatura en nodos de placa cuadrada

literal a

El planteamiento de las ecuaciones según se cita en la solución iterativa es el promedio de los nodos adjacentes:

a = \frac{100+40+b+c}{4} b = \frac{40+20+a+d}{4} c = \frac{100+80+a+d}{4} d = \frac{80+20+c+b}{4}

reordenando las ecuaciones para su forma maticial:

4a -b -c = 100+40 4b -a -d= 40+20 4c -a -d= 100+80 4d -c -b= 80+20

literal b

la forma matricial del sistema de ecuaciones es:

\begin{bmatrix} 4 & -1 &-1 & 0 \\ -1 & 4 & 0 &-1 \\ -1 & 0 & 4 &-1 \\ 0 & -1 &-1 & 4 \end{bmatrix} \begin{bmatrix} a \\ b \\ c \\ d \end{bmatrix} = \begin{bmatrix} 140 \\ 60 \\ 180 \\ 100 \end{bmatrix}

matriz aumentada:

\left[ \begin{array} {cccc|c} 4 & -1 &-1 & 0 & 140\\ -1 & 4 & 0 &-1 & 60 \\ -1 & 0 & 4 &-1 & 180 \\ 0 & -1 &-1 & 4 & 100 \end{array}\right]

al revisar el procedimiento de pivoteo parcial por filas se muestra que ya se encuentra pivoteada la matriz. Por lo que no es necesario realizar cambios en las filas.

literal c

Las expresiones a partir de la matriz aumentada y pivoteada para usar en un método iterativo como Gauss-Seidel son:

a = 0.25(b+c+140) b = 0.25*(a+d+60) c = 0.25(a+d+180) d = 0.25(c+b+100)

el vector inicial debe considerar que las temperaturas serán medias entre los  bordes de la placa

X0 = [ (100+40)/2, (40+20)/2, (100+80)/2, (80+20)/2 ]

X0 = [ 70, 30, 90, 50 ]

literal d iteraciones

itera = 0

a = 0.25(30+90+140)= 65

b = 0.25*(65+50+60) = 43.75

c = 0.25(65+50+180) = 73.75

d = 0.25(73.75+43.75+100) = 54.375

error = max|[65-70, 43.75-30, 73.75-90, 54.375-50]|

error = max|[ -5, 13.75, -16.25, 4.375| = 16.25

X1 = [ 65, 43.75, 73.75, 54.375 ]

itera = 1

a = 0.25(43.75+73.75+140)= 64.375

b = 0.25*(64.375+54.375+60) = 44.687

c = 0.25(64.375+54.375+180) = 74.687

d = 0.25(74.687+44.687+100) = 54.843

error = max|[64.375-65, 44.687-43.75, 74.687-73.75, 54.843-54.375]|

error = max|[-0.625, 0.937, 0.937, 0.468| = 0.937

X2 = [ 64.375, 44.687, 74.687, 54.843 ]

itera = 2

a = 0.25(44.687+74.687+140)= 64.843

b = 0.25*(64.843 +54.843+60) = 44.921

c = 0.25(64.843+54.843+180) = 74.921

d = 0.25(74.921+44.921+100) = 54.960

error = max|[64.843-64.375, 44.921-44.687, 74.921-74.687, 54.960-54.843]|

error = max|[0.468, 0.234, 0.234, 0.117| = 0.468

X3 = [ 64.843, 44.921, 74.921, 54.960 ]

literal e

El método converge pues los errores en cada iteración disminuyen. Los valores obtenidos en el resultado son acorde a las temperaturas esperadas en los nodos.

Algoritmos con Python

Los resultados obtenidos son:

X 0 = [65.    43.75  73.75  54.375]
X 1 = [64.375   44.6875  74.6875  54.84375]
X 2 = [64.84375   44.921875  74.921875  54.9609375]
X 3 = [64.9609375  44.98046875 74.98046875 54.99023438]
X 4 = [64.99023438 44.99511719 74.99511719 54.99755859]
X 5 = [64.99755859 44.9987793  74.9987793  54.99938965]
X 6 = [64.99938965 44.99969482 74.99969482 54.99984741]
X 7 = [64.99984741 44.99992371 74.99992371 54.99996185]
X 8 = [64.99996185 44.99998093 74.99998093 54.99999046]
X 9 = [64.99999046 44.99999523 74.99999523 54.99999762]
respuesta X: 
[[64.99999046]
 [44.99999523]
 [74.99999523]
 [54.99999762]]
verificar A.X=B: 
[[139.99997139]
 [ 59.99999285]
 [179.99999285]
 [100.        ]]
>>>

el algoritmo usado es:

# 1Eva_2024PAOI_T2 Temperatura en nodos de placa cuadrada
# Método de Gauss-Seidel
import numpy as np
# INGRESO
A = np.array([[4,-1,-1,0],
              [-1,4,0,-1],
              [-1,0,4,-1],
              [0,-1,-1,4]],dtype=float)
B = np.array([140,60,180,100],dtype=float)
X0  = np.array([70,30,90,50],dtype=float)

tolera = 0.0001
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
    print('X',itera,'=',X)
    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)