Ejercicio: 3Eva_IIT2010_T4 EDO con Taylor
\frac{\delta y}{\delta x} = \frac{y^3}{1-2xy^2} y(0) = 1, 0 \leq x \leq 1escrita en forma simplificada
y' = \frac{y^3}{1-2xy^2}tomando como referencia Taylor de 2 términos más el término de error O(h2)
y_{i+1} = y_i +\frac{h}{1!}y'_i + \frac{h^2}{2!}y''_iSe usa hasta el segundo término para el algoritmo.
y_{i+1} = y_i +\frac{h}{1!}Con lo que se puede realizar el algoritmo
estimado[xi,yi] [[0. 1. ] [0.2 1.2 ] [0.4 2.01509434] [0.6 1.28727044] [0.8 0.85567954] [1. 0.12504631]]
Algoritmo en Python
# 3Eva_IIT2010_T4 EDO con Taylor # estima la solución para muestras espaciadas h en eje x # valores iniciales x0,y0 # entrega arreglo [[x,y]] import numpy as np def edo_taylor2t(d1y,x0,y0,h,muestras): tamano = muestras + 1 estimado = np.zeros(shape=(tamano,2),dtype=float) # incluye el punto [x0,y0] estimado[0] = [x0,y0] x = x0 y = y0 for i in range(1,tamano,1): y = y + h*d1y(x,y) x = x+h estimado[i] = [x,y] return(estimado) # PROGRAMA PRUEBA # 3Eva_IIT2010_T4 EDO con Taylor # INGRESO. # d1y = y' = f, d2y = y'' = f' d1y = lambda x,y: (y**3)/(1-2*x*(y**2)) x0 = 0 y0 = 1 h = 0.2 muestras = 5 # PROCEDIMIENTO puntos = edo_taylor2t(d1y,x0,y0,h,muestras) xi = puntos[:,0] yi = puntos[:,1] # SALIDA print('estimado[xi,yi]') print(puntos) # Gráfica import matplotlib.pyplot as plt plt.plot(xi[0],yi[0],'o', color='r', label ='[x0,y0]') plt.plot(xi[1:],yi[1:],'o', color='g', label ='y estimada') plt.title('EDO: Solución con Taylor 2 términos') plt.xlabel('x') plt.ylabel('y') plt.legend() plt.grid() plt.show()
Nota: Revisar los resultados no lineales con los valores de h=0.02