Professional Documents
Culture Documents
2013302063
METODO DE RUNGE-KUTTA.
Soto Espinosa Pedro Rodolfo
2013302063
Resumen.
Los mtodos de Taylor tienen la propiedad de un error local de truncamiento de
orden superior, pero la desventaja de requerir el clculo y la evaluacin de las
derivadas de f(t, y). Esto resulta algo lento y complicado, en la mayora de los
problemas, razn por la cual, en la prctica casi no se utilizan. El mtodo de Euler,
lamentablemente requiere de un paso muy pequeo para una precisin razonable.
Los mtodos de Runge kutta tienen el error local de truncamiento del mismo orden
que los mtodos de Taylor, pero prescinden del clculo y evaluacin de las
derivadas de la funcin f(t, y).
Justificacin.
En anlisis numrico, los mtodos de Runge-Kutta son un conjunto de mtodos
genricos iterativos, explcitos e implcitos, de resolucin numrica de ecuaciones
diferenciales. Este conjunto de mtodos fue inicialmente desarrollado alrededor
del ao 1900 por los matemticos C. Runge y M. W. Kutta.
Los mtodos de Runge-Kutta (RK) son un conjuntos de mtodos iterativos
(implcitos y explcitos) para la aproximacin de soluciones de ecuaciones
diferenciales ordinarias, concretamente, del problema de valor inicial.
Marco Terico.
El mtodo de Runge-Kutta no es slo un nico mtodo, sino una importante familia
de mtodos iterativos, tanto implcitos como explcitos, para aproximar las
soluciones deecuaciones diferenciales ordinarias (E.D.Os); estas tcnicas fueron
desarrolladas alrededor de 1900 por los matemticos alemanes Carl David Tolm
Runge y Martin Wilhelm Kutta.
Se presenta de nuevo el problema de valor inicial cuya solucin se intenta
aproximar:
{
dy
=f ( t , y ) ; a<t <b
dt
{ y ( a ) =
(1)
Como en los mtodos anteriores, se determina primero la malla {t0, t1, ... , tN} de
paso h, donde t0 = a y tN = b. En estos puntos es donde se va a obtener la
aproximacin de la solucin.
(2)
En esta expresin las ponderaciones wi, i = 1,..., m son constantes para las que en
general se pide que su suma sea igual a 1, es decir, w1 + w2 +... + wm = 1, y cada
kj es la funcin f evaluada en un punto seleccionado (t, y) para el cual ti t ti+1.
Se mostrar que los kj se definen en forma recursiva.
Se define como orden del mtodo al nmero m, es decir, a la cantidad de trminos
que se usan en el promedio ponderado.
Runge-Kutta de primer orden
Si m = 1, entonces se toma w1 = 1 y la frmula (2) resulta
y i+1= yi +h k 1
(3)
(4)
t
y ( i+1) y ( t i ) , resulta k1= f(ti, yi), obteniendo as la
Donde
es un
Con
coeficientes propios del esquema numrico elegido, dependiente de
la regla de cuadratura utilizada. Los esquemas Runge-Kutta pueden ser explcitos
o implcitos dependiendo de las constantes
del esquema. Si esta matriz es
triangular inferior con todos los elementos de la diagonal principal iguales a cero;
es decir,
para
, los esquemas son explcitos.
Problema Resuelto
Esquema Runge-Kutta de dos etapas, una en
(t,y(t)) en la primera etapa es:
Para estimar (t,y) en
y otra en
cout<<setw(50)<<"-----------------\n"<<endl;
cout<<"1.Metodo de Euler"<<endl;
cout<<"2.Metodo de Runge -Kutta"<<endl;
cout<<"3.Salir"<<endl;
cout<<"\nSeleccione Opcion: ";cin>>opc;
}while(opc<1 || opc>3);
return opc;
}
/**********************Metodo de Euler******************************/
void Euler(){
float x0,y0,xf,yf,h;
int n,i;
clrscr();
cout<<setw(50)<<"Metodo de Integracion de Euler"<<endl;
cout<<setw(50)<<"------------------------------"<<endl<<endl;
cout<<"Ingrese el valor de x0: ";
cin>>x0;
cout<<"Ingrese el valor de y0: ";
cin>>y0;
cout<<"ingrese el valor de xf: ";
cin>>xf;
do{
cout<<"Ingrese el numero de subintervalos a emplear: ";
cin>>n;
}while(n<=0);
h=(xf-x0)/n;
cout<<endl;
cout<<setw(10)<<"I"<<setw(15)<<"Xi"<<setw(15)<<"Yi"<<endl;
cout<<setw(10)<<"-"<<setw(15)<<"--"<<setw(15)<<"--"<<endl;
for(i=1;i<=n;i++)
{ y0=y0+h*func(x0,y0);
x0=x0+h;
reportar(x0,y0,i);
}
cout<<"\nEl valor de Yf: "<<y0<<endl;
getch();
}
/**********************Metodo de Runge Kutta******************************/
void Kutta(){
float x0,y0,xf,yf,h,k1,k2,k3,k4;
int n,i;
clrscr();
cout<<setw(50)<<"Metodo de Runge - Kutta"<<endl;
cout<<setw(50)<<"-----------------------"<<endl<<endl;
cout<<"Ingrese el valor de x0: ";
cin>>x0;
cout<<"Ingrese el valor de y0: ";
cin>>y0;
cout<<"ingrese el valor de xf: ";
cin>>xf;
do{
cout<<"Ingrese el numero de subintervalos a emplear: ";
cin>>n;
}while(n<=0);
h=(xf-x0)/n;
cout<<endl;
cout<<setw(10)<<"I"<<setw(15)<<"Xi"<<setw(15)<<"Yi"<<endl;
cout<<setw(10)<<"-"<<setw(15)<<"--"<<setw(15)<<"--"<<endl;
for(i=1;i<=n;i++)
{ k1=func(x0,y0);
k2=func(x0+h/2,y0+h*k1/2);
k3=func(x0+h/2,y0+h*k2/2);
k4=func(x0+h,y0+h*k3);
y0=y0+(k1+2*k2+2*k3+k4)*h/6;
x0=x0+h;
reportar(x0,y0,i);
}
cout<<"El valor de Yf: "<<y0<<endl;
getch();
}
/**********************Terminar******************************/
void terminar()
{cout<<"\t\t\t\tSalir del Programa\n";
cout<<"\t\t\t\t------------------\n\n";
cout<<"Gracias por usar el programa"<<endl<<endl;
}
/**********************Funcion Principal******************************/
void main (void)
{int opc;
do
{clrscr();
opc=menu();
clrscr();
switch(opc)
{case 1: clrscr();Euler(); break;
case 2: clrscr();Kutta();break;
case 3: clrscr();terminar();break;
}
getch();
}
while(opc!=3);
getch();
}
Conclusiones:
el anlisis y solucin de los problemas de valor inicial de ecuaciones diferenciales
ordinarias (EDO), estos son una extensin del mtodo de Euler para resolver las
(EDOS), pero con un orden de exactitud ms alto que este.
BIBLIOGRAFIA:
http://es.wikipedia.org/wiki/M%C3%A9todo_de_Runge-Kutta
http://es.slideshare.net/marticalu001/mtodo-runge-kutta-computacin-aplicada
http://www.frsn.utn.edu.ar/gie/an/mnedo/34_RK.html