Referencia: Chapra 25.3.3 p746 pdf 770, Rodriguez 9.1.8 p358
Para una ecuación diferencial de primer orden con una condición de inicio, la fórmula de Runge-Kutta de 4to orden se obtiene de la expresión con cinco términos:
y_{i+1} = y_i + aK_1 + bK_2 + cK_3 + dK_4siendo:
y'(x) = f(x_i,y_i) y(x_0) = y_0debe ser equivalente a la serie de Taylor de 5 términos:
y_{i+1} = y_i + h f(x_i,y_i) + + \frac{h^2}{2!} f'(x_i,y_i) + \frac{h^3}{3!} f''(x_i,y_i) + +\frac{h^4}{4!} f'''(x_i,y_i) + O(h^5) x_{i+1} = x_i + hque usando aproximaciones de derivadas, se obtienen:
# Runge Kutta de 4do orden def rungekutta4(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] xi = x0 yi = y0 for i in range(1,tamano,1): K1 = h * d1y(xi,yi) K2 = h * d1y(xi+h/2, yi + K1/2) K3 = h * d1y(xi+h/2, yi + K2/2) K4 = h * d1y(xi+h, yi + K3) yi = yi + (1/6)*(K1+2*K2+2*K3 +K4) xi = xi + h estimado[i] = [xi,yi] return(estimado)
Note que el método de Runge-Kutta de 4to orden es similar a la regla de Simpson 1/3. La ecuación representa un promedio ponderado para establecer la mejor pendiente.
La segunda parte corresponde a Runge-Kutta de 4to Orden