La regla de los 3/8 en Matlab
La regla de los 3/8 es un método de Runge-Kutta de orden 4. Este es el código para un programa escrito en Matlab para el problema de valores iniciales
y'=y
y(0)=1
Queremos saber el valor de y en t = 1. La solución obvia para este problema es
y(t)=et, por tanto y(1) = e
function [y,f_calls]=rk3_8(funcion,t0,t1,y0,h,rpar)
t=t0;
y=y0;
fc=0;
while t < t1
if t+h>t1;h=t1-t;end
k1=feval(funcion,t,y,rpar);
k2=feval(funcion,t+h/3,y+h*k1/3,rpar);
k3=feval(funcion,t+2*h/3,y+h*(k2-k1/3),rpar);
k4=feval(funcion,t+h,y+h*(k3-k2+k1),rpar);
y=y+h*(k1+3*(k2+k3)+k4)/8;
fc=fc+4;
t=t+h;
end
if nargout > 1 fcalls=fc; end
function[y] = funcion(x, y, rpar)
u=x;
Guardamos los dos archivos en el mismo directorio, y desde la consola de Matlab nos desplazamos a ese directorio
Ejecutamos el siguiente comando desde la consola
>>y = rk3_8('funcion', 0, 1, y0, 0.0001,0);
Ahora tenemos el resultado almacenado en la variable y, para verla simplemente ejecutamos
>> y
y eso nos produce el resultado
y = 2.718
Ejectua aquí la regla de los 3/8 en The Runge kutta calculator
y'=y
y(0)=1
Queremos saber el valor de y en t = 1. La solución obvia para este problema es
y(t)=et, por tanto y(1) = e
Código Matlab para la regla de los tres octavos: Archivo rk3_8.m
function [y,f_calls]=rk3_8(funcion,t0,t1,y0,h,rpar)
t=t0;
y=y0;
fc=0;
while t < t1
if t+h>t1;h=t1-t;end
k1=feval(funcion,t,y,rpar);
k2=feval(funcion,t+h/3,y+h*k1/3,rpar);
k3=feval(funcion,t+2*h/3,y+h*(k2-k1/3),rpar);
k4=feval(funcion,t+h,y+h*(k3-k2+k1),rpar);
y=y+h*(k1+3*(k2+k3)+k4)/8;
fc=fc+4;
t=t+h;
end
if nargout > 1 fcalls=fc; end
Archivo funcion.m
Este es un archivo conteniendo la función a evaluarfunction[y] = funcion(x, y, rpar)
u=x;
Ejecución
Guardamos los dos archivos en el mismo directorio, y desde la consola de Matlab nos desplazamos a ese directorio
Ejecutamos el siguiente comando desde la consola
>>y = rk3_8('funcion', 0, 1, y0, 0.0001,0);
Ahora tenemos el resultado almacenado en la variable y, para verla simplemente ejecutamos
>> y
y eso nos produce el resultado
y = 2.718
Ejectua aquí la regla de los 3/8 en The Runge kutta calculator
Ha sido util? Alguna idea para complementar el texto?
Deja tu post
Comentarios de otros usuarios
Deja tu post