Ejercicio: 3Eva2026PAOI_T4 Modelo de caos determinista
Literal a
Siendo las funciones del ejercicio las mostradas, se las ordena, etiqueta como se muestra:
f(t,x,y,z) = \frac{dx}{dt}=-\sigma x + \sigma y g(t,x,y,z) = \frac{dy}{dt} = \rho x-xz-y w(t,x,y,z) = \frac{dz}{dt}= xy-\beta zAl aplicar el método de Runge-Kutta se inicia las formulas con las variables dependientes, al final se actualiza la variable independiente:
K_{1x} = h f(t_i,x_i, y_i, z_i)
literal b
El ejercicio es muy semejante al tema 2 de la 2da Evaluación, por lo que se deja como tarea realizar las iteraciones.
| itera | ti | xi | yi | zi | K1x | K1y | K1z | K2x | K2y | K2z |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 6 | 5 | 7 | - | - | - | - | - | - |
| 1 | 1+0.02 |
literal c
El intervalo a observar es [1,9] con tamaño de paso h=0.02
Se calcula el número de iteraciones como:
iteraciones = (b-a)/h =(9-1)/0.02 = 400
cantidad de iteraciones que se realiza solo con el algoritmo, cuyo resultado adjunto es:

[ ti, xi, yi, zi]
[[ 1. 6. 5. 7. ]
[ 1.02 6.062 7.340653 7.350982]
[ 1.04 6.527825 9.695109 8.003293]
...
[ 8.96 3.715112 5.768706 19.104632]
[ 8.98 4.139316 6.369711 18.57629 ]
[ 9. 4.606063 7.07923 18.183582]]
Algoritmo en Python
Se usa como base el algoritmo de Sistemas EDO y se ajustan las operaciones y variables para obtener lo presentado.
# Sistemas EDO con Runge-Kutta de 2do Orden
import numpy as np
def rungekutta2_fgw(f,g,w,t0,x0,y0,z0,h,muestras):
tamano = muestras +1
tabla = np.zeros(shape=(tamano,4),dtype=float)
tabla[0] = [t0,x0,y0,z0]
ti = t0
xi = x0
yi = y0
zi = z0
for i in range(1,tamano,1):
K1x = h * f(ti,xi,yi,zi)
K1y = h * g(ti,xi,yi,zi)
K1z = h * w(ti,xi,yi,zi)
K2x = h * f(ti+h, xi + K1x, yi+K1y, zi +K1z)
K2y = h * g(ti+h, xi + K1x, yi+K1y, zi +K1z)
K2z = h * w(ti+h, xi + K1x, yi+K1y, zi +K1z)
xi = xi + (1/2)*(K1x+K2x)
yi = yi + (1/2)*(K1y+K2y)
zi = zi + (1/2)*(K1z+K2z)
ti = ti + h
tabla[i] = [ti,xi,yi,zi]
tabla = np.array(tabla)
return(tabla)
# Programa
# Parámetros de las ecuaciones
a = 10
b = 8/3
r = 28
# Ecuaciones
f = lambda t,x,y,z : -a*x+a*y
g = lambda t,x,y,z : r*x-x*z-y
w = lambda t,x,y,z : x*y-b*z
# Condiciones iniciales
t0 = 1
x0 = 6
y0 = 5
z0 = 7
# parámetros del algoritmo
h = 0.02
muestras = 400
# PROCEDIMIENTO
tabla = rungekutta2_fgw(f,g,w,t0,x0,y0,z0,h,muestras)
ti = tabla[:,0]
xi = tabla[:,1]
yi = tabla[:,2]
zi = tabla[:,3]
# SALIDA
np.set_printoptions(precision=6)
print(' [ ti, xi, yi, zi]')
print(tabla)
# Grafica tiempos vs población
import matplotlib.pyplot as plt
fig3D = plt.figure()
graf3D = fig3D.add_subplot(projection='3d')
graf3D.plot(xi,yi,zi)
graf3D.plot(xi[0],yi[0],zi[0],'o',label='t0')
graf3D.plot(xi[-1],yi[-1],zi[-1],'o',label='tn')
graf3D.set_title('Caos determinista')
graf3D.set_xlabel('xi')
graf3D.set_ylabel('yi')
graf3D.set_zlabel('zi')
plt.legend()
#plt.grid()
plt.show()
Literal d
Las observaciones sobre los resultados en la gráfica confirman lo indicado en el enunciado sobre que los resultados "volverse impredecibles a largo plazo debido a la extrema sensibilidad y por cambios muy pequeños en las condiciones iniciales [1]. Lorenz"
Añada sus propias observaciones sobre lo obtenido comparando con otros ejercicios desarrollados en clases.
Literal e
En esta sección se pide variar algún valor de las constantes en el grupo de propiedades físicas, cambiando su valor en tan solo 0.1.
Los resultados le permitirán completar mas observaciones en el literal d.