Está en la página 1de 3

Algoritmos de solución numérica 10/11/2023

Método de Runge Kutten


Integrantes: Bernardo Pedroza, Omar Martínez,

A continuación, se presenta el programa de Runge Kutten que fue elaboradora en base al


programa de Excel que se realizo en clase. En el cual se trata de aproximar una ecuación
diferencial de orden 4. Este método es un poco mas complejo que el método de Euler, sin
embargo, es más preciso.

Programa en Matlab
%Programa Metodo de Runge Kutta - Bernardo-Omar

clear all
clc

fprintf('\n \tRESOLUCIÓN DE ECUACIONES DIFERENCIALES POR MEDIO RUNGE-KUTTA DE


ORDEN 4\n')

%Ingreso de datos dados por el usuario


f=inline(input('\n Ingrese la ecuación diferencial: ','s'));
x0=input('\n Ingrese el primer punto x0: ');
x1=input('\n Ingrese el segundo punto x1 : ');
y0=input('\n Ingrese la condición inicial y(x0): ');
n=input('\n Ingrese el número de pasos n: ');
fprintf('\n x y k1 k2 k3
k4\n');
fprintf('-----------------------------------------------------------------------
--------------------\n');

%Calculo del ancho de los subintervalos


h = (x1 - x0)/ n;

%Aplicacion de las formulas de Runge Kutten de orden cuatro, tomando x0 y y0


como datos iniciales
k1 = h*feval(f,x0,y0);
k2 = h * feval(f,x0 + h/2, y0 + k1/2);
k3 = h * feval(f,x0 + h/2, y0 + k2/2);
k4 = h * feval(f,x0 + h, y0 + k3);

%Impresion de la primera fila, tomando x0 y y0 como datos iniciales


fprintf(' %2f %10.6f %10.6f %10.6f %10.6f %10.6f \n',x0,y0, k1,
k2, k3, k4);

%Inicio del ciclo for para calcular las siguientes filas, hasta n veces
for i=1:n
%Calculo de x1 y y1
x1 = h + x0 ;
y1 = y0 + ((k1+ (2*k2) + (2*k3) + k4) /6); %La fórmula completa de Runge
Kutta

%Aplicacion de las formulas de Runge Kutten de orden cuatro, tomando los


datos x1 y y1
k1 = h*feval(f,x1,y1);
k2 = h * feval(f,x1 + h/2, y1 + k1/2);
k3 = h * feval(f,x1 + h/2, y1 + k2/2);
k4 = h * feval(f,x1 + h, y1 + k3);

%Impresion de la fila con los datos calculados dentro del ciclo


fprintf(' %2f %10.6f %10.6f %10.6f %10.6f %10.6f \n',x1,y1,
k1, k2, k3, k4);

%Reasignacion de valores
y0= y1;
x0= x1;
end

%Calculo de error relativo verdadero


error = abs((((y1-0.00001)-y1)/(y1-0.00001)*100));
fprintf('\n Error relativo verdadero: %2f\n',error);

Caso de prueba
A continuación, se compara los resultados obtenidos con el código anterior con el Excel
elaborado durante la clase.
Excel:
Matlab:

Conclusiones:
Bernardo Pedroza: Este tema se me complico un poco más que el método de Euler, sin
embargo, note que funcionan de manera similar. Solo sería cuestión de seguir trabajando
con el para acostumbrarme a sus formular ya que realmente no esta difícil y ahí es donde
tuve más problemas a la hora de realizar la tarea.
Omar Martínez: El método Runge Kutten consta de varias formulas que en papel no son
tan complicadas de entender, sin embargo, al momento de ingresarlos a una hoja de calculo
o programarlo en Matlab pueden generar confusiones al momento de aplicar las
operaciones de forma correcta. En lo personal, no hubo problema en aplicarlo en Excel. En
Matlab, fue algo complicado al momento de generar la tabla.

También podría gustarte