Métodos de Runge-Kutta
Computación Científica
Facultad de Ciencias Matemáticas
Universidad Nacional Mayor de San Marcos
Facultad de Ciencias Matemáticas
Universidad Nacional Mayor de San Marcos
22 de octubre de 2010
Resumen
El presente trabajo presentamos algunos aplicaciones de los métodos de Runge-Kutta en la resolución de ecuaciones diferenciales ordinarias.
Introducción
Una gran variedad de problemas en las matemáticas aplicadas nos llevan a las ecuciones diferenciales. El primer paso para la solución numérica de una ecuación diferencial, es la reducción del problema continuo a uno discreto. Este proceso de reducir un problema continuo a otro problema en un número finito de incognitas se llama discretización. La idea fundamental es buscar una solución aproximada definida en un número finito de puntos. Para este fin existen diferentes métodos numéricos, cada uno con propiedades que los caracterizan.
Para obtener mayor eficiencia(esto es, mayor presición por unidad de esfuerzo computacional) y al mismo tiempo evitar el cálculo de las derivadas de órdenes altos, se utiliza el grupo de métodos de Runge-Kutta para obtener la solucón numérica de una ecuación diferencial.
Para obtener mayor eficiencia(esto es, mayor presición por unidad de esfuerzo computacional) y al mismo tiempo evitar el cálculo de las derivadas de órdenes altos, se utiliza el grupo de métodos de Runge-Kutta para obtener la solucón numérica de una ecuación diferencial.
Este es un código realizado en Matlab del método de Runge-Kutta. Estaré presentando mas detalles.
Código de Runge Kutta en Matlab
Enlaces Externos
function Y=RK5(fun,y0,A,B,I,h)
M=size(A,1);
N=(I(2)-I(1))/h;
for i=1:M
s=0;
for j=1:M
s=s+A(i,j);
end
C(i)=s;
end
T(1)=I(1);
Y(1,:)=y0;
for r=2:N+1
T(r)=T(1)+h*(r-1);
for i=1:M
s1=0;
for j=1:i-1
s1=s1+A(i,j)*K(j,:);
end
K(i,:)=h*(feval(fun,T(r-1)+C(i)*h,Y(r-1,:)+s1));
end
s2=0;
for k=1:M
s2=s2+B(k)*K(k,:);
end
Y(r,:)=Y(r-1,:)+s2;
end
plot(T,Y)
|
%ejemplo
%RK5('fun1',[1 1],[0 0 0 0;0.5 0 0 0;0 0.5 0 0;...
0 0 1 0],[1/6 2/6 2/6 1/6],[0 1],0.1)
%se crea una un fun1.m para la funcion
%f1(y1(t),y2(t))=y2(t)
%f2(y1(t),y2(t))=t*y1(t)
%y1(0)=1
%y2(0)=1
%0<1
%h=0.1
%function f=fun1(x,y)
%f(1)=y(2);
%f(2)=x*y(1); |
Enlaces Externos
No hay comentarios:
Publicar un comentario