Ejercicio: 3Eva_IT2010_T2 EDO problema con valor inicial dy/dx
Ecuación del problema:
(2y^2 + 4x^2)\delta x -xy \delta y =0se despeja dy/dx:
(2y^2 + 4x^2)\delta x = xy \delta y \frac{\delta y}{\delta x} =\frac{2y^2 + 4x^2}{xy}con valores iniciales de x0 = 1, y0=-2 , h=0.2 e intervalo [1,2]
Usando Runge-Kutta de 2do Orden
Iteración 1
K_1= h\frac{\delta y}{\delta x}(1,-2) =(0.2)\frac{2(-2)^2 + 4(1)^2}{(1)(-2)}= -1.2 K_2= h\frac{\delta y}{\delta x}(1+0.2,-2+(-1.2)) =(0.2)\frac{2(-2-1.2)^2 + 4(1+0.2)^2}{(1+0.2)(-2-1.2)}= -1.3667 y_1 = -2 + \frac{-1.2-1.3667}{2} = -3.2833 x_1 = x_0 + h = 1 + 0.2 = 1.2 error = O(h^3) = O(0.2^3) = 0.008Iteración 2
K_1= h\frac{\delta y}{\delta x}(1.2,-3.2833) =(0.2)\frac{2(-3.2833)^2 + 4(1.2)^2}{(1.2)(-3.2833)}= -1.3868 K_2= h\frac{\delta y}{\delta x}(1.2+0.2,-3.2833+(-1.3868)) =(0.2)\frac{2(-3.2833+(-1.3868))^2 + 4(1.2+0.2)^2}{(1.2+0.2)(-3.2833+(-1.3868))}= -1.5742 y_2 = -3.2833 + \frac{-1.3868-1.5742}{2} = -4.7638 x_2 = x_1 + h = 1.2 + 0.2 = 1.4Iteración 3
K_1= h\frac{\delta y}{\delta x}(1.4,-4.7638) =(0.2)\frac{2(-4.76383)^2 + 4(1.4)^2}{(1.4)(-4.7638)}= -1.5962 K_2= h\frac{\delta y}{\delta x}(1.4+0.2,-4.7638+(-1.5962)) =(0.2)\frac{2(-4.7638+(-1.5962))^2 + 4(1.4+0.2)^2}{(1.4+0.2)(-4.7638+(-1.5962))}= -1.7913 y_3 = -4.7638 + \frac{-1.5962-1.7913}{2} = -6.4576 x_3 = x_2 + h = 1.4 + 0.2 = 1.6con lo que usando el algoritmo se obtiene la tabla y gráfica:
[xi, yi, K1, K2 ] [[ 1. -2. 0. 0. ] [ 1.2 -3.2833 -1.2 -1.3667] [ 1.4 -4.7638 -1.3868 -1.5742] [ 1.6 -6.4576 -1.5962 -1.7913] [ 1.8 -8.3698 -1.8126 -2.0119] [ 2. -10.5029 -2.032 -2.2342]
Algoritmo en Python
# 3Eva_IT2010_T2 EDO import numpy as np import matplotlib.pyplot as plt # INGRESO d1y = lambda x,y : (2*(y**2)+4*(x**2))/(x*y) x0 = 1 y0 = -2 h = 0.2 a = 1 b = 2 # PROCEDIMIENTO muestras = int((b -a)/h)+1 tabla = np.zeros(shape=(muestras,4),dtype=float) i = 0 xi = x0 yi = y0 tabla[i,:] = [xi,yi,0,0] i = i+1 while not(i>=muestras): K1 = h* d1y(xi,yi) K2 = h* d1y(xi+h,yi+K1) yi = yi + (K1+K2)/2 xi = xi +h tabla[i,:] = [xi,yi,K1,K2] i = i+1 # vector para gráfica xg = tabla[:,0] yg = tabla[:,1] # SALIDA # muestra 4 decimales np.set_printoptions(precision=4) print(' [xi, yi, K1, K2]') print(tabla) # Gráfica plt.plot(xg,yg) plt.xlabel('xi') plt.ylabel('yi') plt.grid() plt.show()
Tarea: Realizar con Runge Kutta de 4to Orden