Está en la página 1de 4

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

Método de Runge Kutta


Integrantes: Bernardo Pedroza, Omar Martínez.

Ejercicio elegido: Problema 4 de Runge Kutta

A nuestro criterio, faltaba lo que seria el ancho de los subintervalos, por lo que
decidimos ponerle un valor: h = 0.05
Excel:
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 : ');
z0=input('\n Ingrese la condición inicial z(x0): ');
h=input('\n Ingrese el ancho de los subintervalos h: ');

fprintf('\n x z k1 k2 k3
k4\n');
fprintf('-----------------------------------------------------------------------
--------------------\n');

%Calculo del numero de iteraciones


n = (x1 - x0)/ h;

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


como datos iniciales
k1 = h * feval(f,x0,z0);
k2 = h * feval(f,x0 + h/2, z0 + k1/2);
k3 = h * feval(f,x0 + h/2, z0 + k2/2);
k4 = h * feval(f,x0 + h, z0 + 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,z0, k1,
k2, k3, k4);

%Inicio del ciclo for para calcular las siguientes filas, hasta n veces
for i=1:n

%Calculo de x1 y z1
x1 = h + x0 ;
z1 = z0 + ((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 z1
k1 = h*feval(f,x1,z1);
k2 = h * feval(f,x1 + h/2, z1 + k1/2);
k3 = h * feval(f,x1 + h/2, z1 + k2/2);
k4 = h * feval(f,x1 + h, z1 + 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,z1,
k1, k2, k3, k4);
%Reasignacion de valores
z0= z1;
x0= x1;

end

%Calculo de error relativo verdadero


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

Resultados:
Conclusiones:
Bernardo Pedroza: En lo personal, el aplicar el método a problemas reales se
me dificulto bastante. Cambia mucho a problemas resueltos en clase, sin
embargo, creo que es algo útil de ir practicando, ya que a lo largo de la vida
académica es extraño que te pongan problemas que están más en el mundo
laboral. De esta forma uno puede ir ganando practica de cómo enfrentar este
tipo de problemas. Para poder entender mejor como solucionar este tipo de
problemas, en lo personal, creo que solo es ir practicando o poder observar
más ejemplos a lo largo de la clase.
Omar Martínez: El método Runge Kutta consta de varias fórmulas que en
papel no son tan complicadas de entender, sin embargo, al momento de
ingresarlos a una hoja de cálculo o programarlo en Matlab pueden generar
confusiones al momento de aplicar las operaciones de forma correcta. Fue en
Matlab donde surgieron problemas para calcular de manera correcta los
valores requeridos.

También podría gustarte