runge kuta matlab

2
Mtodo de Runge-Kutta de cuarto orden Uno de los mtodos ms utilizados para resolver numricamente problemas de ecuaciones diferenciales ordinarias con condiciones iniciales es el mtodo de Runge- Kutta de cuarto orden, el cual proporciona un pequeo margen de error con respecto a la solucin real del problema y es fcilmente programable en un software para realizar las iteraciones necesarias. El mtodo de Runge- Kutta es sumamente til para casos en los que la solucin no puede hallarse por los mtodos convencionales (como separacin de variables). Hay variaciones en el mtodo de Runge-Kutta de cuarto orden pero el ms utilizado es el mtodo en el cual se elige un tamao de paso h y un nmero mximo de iteraciones n tal que y se realiza la iteracin. Para i = 0…n. La solucin se da a lo largo del intervalo (to,to+h) Codigo en Matlab: %%Metodo de Runge Kuta 4to Orden h=0.001;% tamaÒo de paso t0=0; x=[0;-1]; %condiciones iniciales t=0:h:5;

Upload: luis-irving

Post on 11-Jan-2016

3 views

Category:

Documents


0 download

DESCRIPTION

Metodo de Runge Kuta programado en Matlab

TRANSCRIPT

Page 1: Runge Kuta Matlab

Metodo de Runge-Kutta de cuarto orden

Uno de los metodos mas utilizados para resolver numericamente problemas de ecuaciones diferenciales ordinarias con condiciones iniciales es el metodo de Runge- Kutta de cuarto orden, el cual proporciona un pequeno margen de error con respecto a la solucion real del problema y es facilmente programable en un software para realizar las iteraciones necesarias.

El metodo de Runge- Kutta es sumamente util para casos en los que la solucion no puede hallarse por los metodos convencionales (como separacion de variables). Hay variaciones en el metodo de Runge-Kutta de cuarto orden pero el mas utilizado es el metodo en el cual se elige un tamano de paso h y un numero maximo de iteraciones n tal que

y se realiza la iteracion. Para i = 0…n. La solucion se da a lo largo del intervalo (to,to+h)

Codigo en Matlab:

%%Metodo de Runge Kuta 4to Orden

h=0.001;% tamaÒo de paso

t0=0;

x=[0;-1]; %condiciones iniciales

t=0:h:5;

for k=1:(length(t)-1)

% t(k+1)=t(k)+t0+k*h;

k1=h*f(t(k),x(:,k));

k2=h*f(t(k)+(h/2),x(:,k)+(k1/2));

k3=h*f(t(k)+(h/2),x(:,k)+(k2/2));

Page 2: Runge Kuta Matlab

k4=h*f(t(k)+h,x(:,k)+k3);

promedio=(k1+2*k2+2*k3+k4)/6;

x(:,k+1)=x(:,k)+promedio;

end

%ploteo de resultados

sola=(-1/3)*(sin(3*t));

plot(t,x(1,:),'o',t,sola,'r')

%funcion ejemplo

function dx = f(t,x)

dx=[x(2);-9*x(1)];

end

end

Resultados: