EDs - Método de Milne - Python - ChatGPT
ฝัง
- เผยแพร่เมื่อ 24 ธ.ค. 2024
- EDs - Método de Milne - Python - ChatGPT
por: Semillero MMCC
Historia
Explicación
ChatGPT
Código en Python
Resultados
import numpy as np
import matplotlib.pyplot as plt
def milne_method(f, y0, t0, tn, h):
"""
Método de Milne para resolver una EDO de primer orden.
:param f: Función que define la EDO (dy/dt = f(t, y)).
:param y0: Valor inicial de y.
:param t0: Tiempo inicial.
:param tn: Tiempo final.
:param h: Tamaño del paso.
:return: Lista de valores de y en diferentes puntos de tiempo.
"""
N = int((tn - t0) / h)
t = np.linspace(t0, tn, N+1)
y = [y0]
Calcula los primeros 4 valores usando el método de Euler
for i in range(1, 4):
y.append(y[i-1] + h * f(t[i-1], y[i-1]))
Aplica el método de Milne para los valores restantes
for i in range(3, N):
y.append(y[i-3] + 4 * h/3 * (2 * f(t[i], y[i]) - f(t[i-1], y[i-1]) + 2 * f(t[i-2], y[i-2])))
return y
Definir la función f(t, y) = 0.05 * y
def f(t, y):
return 0.05 * y
Parámetros del problema
y0 = 10000 # Valor inicial de la inversión
t0 = 0 # Tiempo inicial
tn = 5 # Tiempo final
h = 0.5 # Tamaño del paso
Resolver la EDO utilizando el método de Milne
y_values = milne_method(f, y0, t0, tn, h)
Mostrar los valores de la inversión en diferentes puntos de tiempo
print("Valores de la inversión:")
for i, y in enumerate(y_values):
t = t0 + i * h
print(f"t = {t:.1f} años, y = {y:.2f}")
Graficar el crecimiento de la inversión
t_values = np.linspace(t0, tn, len(y_values))
plt.plot(t_values, y_values)
plt.xlabel("Tiempo (años)")
plt.ylabel("Valor de la inversión")
plt.title("Crecimiento de la inversión a lo largo del tiempo")
plt.grid(True)
plt.show()