Runge-Kutta f

12.507 visualizaciones

Publicado el

Algoritmos en matlab del metodo Runge- Kutta

0 comentarios
4 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
12.507
En SlideShare
0
De insertados
0
Número de insertados
8
Acciones
Compartido
0
Descargas
429
Comentarios
0
Recomendaciones
4
Insertados 0
No insertados

No hay notas en la diapositiva.

Runge-Kutta f

  1. 1. UNIVERSIDAD CENTROCCIDENTAL “LISANDRO ALVARADO” DECANATO DE AGRONOMÍAPROGRAMA DE INGENIERÍA AGROINDUSTRIAL COMPUTACIÓN APLICADA NÚCLEO OBELISCO Integrantes: Alvarez, Fernando C.I.17.618.791 Brizuela, Laurimar C.I.19.241.332 Navas, Dilmary C.I.19.449.757 Valero, Nélida C.I.18.862.072 Ing. Juan Carlos Molina Barquisimeto, Enero del 2011
  2. 2. Implementación de sistemas numéricosRUNGE-KUTTAEl método de Runge Kutta es un método numérico de resolución deecuaciones diferenciales que surge como una mejora del método deEuler. El método de Euler se puede considerar como un método deRunge Kutta de primer orden, el de Heun, es un método de Runge Kuttade orden dos.Los métodos de Runge-Kutta logran la exactitud del procedimiento deuna serie de Taylor sin requerir el cálculo de derivadas superiores. Existenmuchas variaciones, pero todas se pueden denotar en la formageneralizada de la ecuaciónyi + 1 = yi + F(xi,yi,h)hDonde F(xi,yi,h) se conoce como la función incremento la cual puedeinterpretarse como una pendiente representativa en el intervalo. Lafunción incremento se escribe en forma general como:F = a1k1 + a2k2 +….+ anknDonde las a son constantes y las k son:k1 = f(xi,yi)k2 = f(xi + p1h,yi + q11k1h)k3 = f(xi + p2h,yi + q21k1h + q22k2h)kn = f(xi + pnh,yi + q2n-1k1h + qn-1,2k2h + …. + qn-1,n-1kn-1h)Donde las p y q son constantes.Como cada k es una evaluación funcional, esta recurrencia hace quelos métodos Runge-Kutta sean eficientes para la programación. Existenvarios tipos de métodos Runge-Kutta al emplear diferentes números detérminos en la función incremento como la especificada por n.n = 1, es el método de Euler. Una vez se elige n, se evalúan las a, p y q aligualar la función incremento a los términos en la serie de expansión deTaylor. La versión de segundo orden para la ecuación en su formageneralizada es:
  3. 3. Donde:Los valores de a1, a2, p1 y q11 son evaluados al igualar el término desegundo orden de la ecuación dada con la expansión de la serie deTaylor.Desarrollando tres ecuaciones para evaluar las cuatro incógnitas:Como se tienen tres ecuaciones con cuatro incógnitas se tiene quesuponer el valor de una de ellas. Suponiendo que se especificó un valorpara a2, se puede resolver de manera simultánea el sistema deecuaciones obtenido:Como se puede elegir un número infinito de valores para a2, hay unnúmero infinito de métodos Runge-Kutta de segundo orden.a2 = 1/2: Método de Heun con un solo corrector, donde:a2 = 1 : Método del punto medio.a2 = 2/3: Método de Ralston.Siguiendo el mismo razonamiento para n = 3, o sea, Runge-Kutta detercer orden, el resultado son seis ecuaciones con ocho incógnitas, porlo tanto se deben suponer dos valores con antelación para poderdesarrollar el sistema de ecuaciones. Una versión ampliamente usadaes:Éste es el más popular de los métodos Runge-Kutta de cuarto orden:EjemploRunge –Kutta para segundo orden, método punto medio.
  4. 4. Resuelva el siguiente problema de valor inicial en el intervalo de x=0 ax=1.dy = yx 2 − 1.2 ydxDonde:y(0)=1h = 0.25Solucióny i +1 = y i + k 2 hk 1 = f(xi, y i ) 1 1k 2 = f(x i + h , y i + k 1 h) 2 2  Primera iteraciónk 1 = f(x 0 , y 0 ) = f = (0 , 1)k1 = (1)(0) 2 − 1.2(1)k1 = −1.2 1 1k 2 = f ( x0 + h , y 0 + k1 h) 2 2 1 1k2 = f (0 + (0.25) , 1 + (−1.2)(0.25)) 2 2k2 = f (0.125,0.85)k2 = 0.85(0.125) 2 − 1.2(0.85)k2 = −1.006718y1 = 1 + (−1.006718)0.25y1 = 0.748320  Segunda iteraciónx1 = x0 + hx1 = 0 + 0.25x1 = 0.25k 1 = f(x 1 , y1 ) = f = (0.25 , 0.748320)k1 = (0.748320)(0.25) 2 − 1.2(0.748320)k1 = −0.851432
  5. 5. 1 1k 2 = f (0.25 + (0.25) , 0.748320 + (−0.851432)(0.25)) 2 2k 2 = f (0.375,0.641891)k 2 = 0.641891(0.375) 2 − 1.2(0.641891)k 2 = −0.680003y 2 = 0.748320 + (−0.680003)0.25y 2 = 0.578319  Tercera iteraciónx 2 = x1 + hx 2 = 0.25 + 0.25x 2 = 0 .5k 1 = f(x 2 , y 2 ) = f = (0.5,0.578319)k1 = (0.578319)(0.5) 2 − 1.2(0.578319)k1 = −0.549403 1 1k 2 = f ( x 2 + h , y 2 + k1 h ) 2 2 1 1k 2 = f (0.5 + (0.25) , 0.578319 + (−0.549403)(0.25)) 2 2k 2 = f (0.625,0.509643)k 2 = 0.509643(0.625) 2 − 1.2(0.509643)k 2 = −0.4125y 3 = 0.578319 + (−0.4125)0.25y 3 = 0.4752  Cuarta iteraciónx3 = x 2 + hx 3 = 0.5 + 0.25x3 = 0.75k 1 = f(x 3 , y 3 ) = f = (0.75,0.4752)k1 = (0.4752)(0.75) 2 − 1.2(0.4752)k1 = −0.3029 1 1k 2 = f ( x 3 + h , y 3 + k1 h ) 2 2 1 1k 2 = f (0.75 + (0.25) , 0.4752 + (−0.3029)(0.25)) 2 2k 2 = f (0.875,0.4373)
  6. 6. k 2 = 0.4373(0.875) 2 − 1.2(0.4373)k 2 = −0.1900y 4 = 0.4752 + (−0.1900)0.25y 4 = 0.4277x4 = x3 + hx 4 = 0.75 + 0.25x4 = 1Vectores solución X 0 0.25 0.5 0.75 1 y 1 0.7483 0.5783 0.4752 0.4277Algoritmo MATLAB- Segundo orden%Método Runge kutta de segundo ordenx=0;y=1;t=0;tmax=1;h=0.25;iter=round ((tmax-t)/h);vectory=y;vectort=t;for i=1:iter %Cálculo de las constantes de Runge-kutta K1=(y*(t^2))-(1.2*y); K2=(y+(K1/2)*h)*(t+(h/2))^2-(1.2*(y+(K1/2)*h)); y=y+(K2*h); t=t+h; vectory=[vectory y]; vectort=[vectort t];endvectoryvectortsubplot (1,1,1);plot(vectort,vectory,b-p);title(Método runge kutta segundo orden. y vs t);xlabel (valores t);ylabel (valores y);
  7. 7. Runge –Kutta para tercer orden.Se resuelve el mismo problema anterior pero esta vez mediante el usodel método Runge kutta de tercer grado, de valor inicial, en el intervalode x=0 a x=1.dy = yx 2 − 1.2 ydxDonde:y(0)=1h = 0.25Solución.En el método de Runge kutta de tercer orden se utilizan las siguientesformulas: 1y i +1 = y i + (k 1 + 4k 2 + k 3 )h 6k 1 = f(xi, y i )
  8. 8. 1 1k 2 = f(x i + h , y i + k 1 h) 2 2k 3 = f(x i + h , y i −k 1 h + 2k 2 h)  Primera iteraciónk1 = f(x 0 , y 0 ) = f = (0 , 1) k1 = (1)(0) 2 − 1.2(1)k1 = −1.2 1 1k 2 = f ( x0 + h , y 0 + k1 h) 2 2 1 1k2 = f (0 + (0.25) , 1 + (−1.2)(0.25)) 2 2k2 = f (0.125,0.85)k2 = 0.85(0.125) 2 − 1.2(0.85)k2 = −1.0067k 3 = f(x o + h , y o −k 1 h + 2k 2 h)k 3 = f (0 + (0.25), (1) − (−1.2)(0.25) + 2(−1.0067)(0.25))k 3 = f (0.25,0.7966)k 3 = 0.7966(0.25) 2 − 1.2(0.7966)k 3 = −0.9062 1y1 = y 0 + (k 1 + 4k 2 + k 3 )h 6y1 = 0.7445  Segunda iteraciónx1 = x0 + hx1 = 0 + 0.25x1 = 0.25k 1 = f(x 1 , y1 ) = f = (0.25 , 0.7445)k1 = (0.7445)(0.25) 2 − 1.2(0.7445)k1 = −0.8468 1 1k 2 = f ( x1 + h , y1 + k1 h) 2 2
  9. 9. 1 1k 2 = f (0.25 + (0.25) , 0.7445 + (−0.8469)(0.25)) 2 2k 2 = f (0.375,0.6386)k 2 = 0.6386(0.375) 2 − 1.2(0.6386)k 2 = −0.6765k 3 = f(x 1 + h , y1 − k 1 h + 2k 2 h)k 3 = f (0.25 + (0.25), (0.7445) − (−0.8469)(0.25) + 2(−0.6765)(0.25))k 3 = f (0.5,0.6178)k 3 = 0.6178(0.5) 2 − 1.2(0.6178)k 3 = −0.5870 1y 2 = y1 + (k 1 + 4k 2 + k 3 )h 6y 2 = 0.5720  Tercera iteraciónx 2 = x1 + hx 2 = 0.25 + 0.25x 2 = 0 .5k 1 = f(x 2 , y 2 ) = f = (0.5,0.5720)k1 = (0.5720)(0.5) 2 − 1.2(0.5720)k1 = −0.5434 1 1k 2 = f ( x2 + h , y 2 + k1 h) 2 2 1 1k2 = f (0.5 + (0.25) , 0.5720 + (−0.5434)(0.25)) 2 2k2 = f (0.625,0.5041)k2 = 0.5041(0.625) 2 − 1.2(0.5041)k2 = −0.4080k 3 = f(x 2 + h , y 2 − k 1 h + 2k 2 h)k 3 = f (0.5 + (0.25), (0.5720) − (−0.5434)(0.25) + 2(−0.4080)(0.25))k 3 = f (0.75,0.5038)k 3 = 0.5038(0.75) 2 − 1.2(0.5038)k 3 = −0.3212
  10. 10. 1y 3 = y 2 + (k 1 + 4k 2 + k 3 )h 6y 3 = 0.4679  Cuarta iteraciónx3 = x 2 + hx 3 = 0.5 + 0.25x3 = 0.75k 1 = f(x 3 , y 3 ) = f = (0.75,0.4679)k1 = (0.4679)(0.75) 2 − 1.2(0.4679)k1 = −0.2986 1 1k 2 = f ( x3 + h , y 3 + k1 h ) 2 2 1 1k2 = f (0.75 + (0.25) , 0.4679 + (−0.2983)(0.25)) 2 2k2 = f (0.875,0.4306)k2 = 0.4306(0.875) 2 − 1.2(0.4306)k2 = −0.1871k 3 = f(x 3 + h , y 3 − k 1 h + 2k 2 h)k 3 = f (0.75 + (0.25), (0.4679) − ( −0.2983)(0.25) + 2(−0.1871)(0.25))k 3 = f (1,0.4489)k 3 = 0.4489(1) 2 − 1.2(0.4489)k 3 = −0.0898 1y 4 = y 3 + (k 1 + 4k 2 + k 3 )h 6y 4 = 0.4206x 4 = x3 + hx 4 = 0.75 + 0.25x4 = 1Vectores solución X 0 0.25 0.5 0.75 1 y 1 0.7445 0.5720 0.4679 0.4206
  11. 11. Algoritmo MATLAB- Tercer orden%Método Runge-Kutta de 3er ordenx=0;y=1;t=0;tmax=1;h=0.25;iter=(tmax-t)/h;vectory=y;vectort=t;for i=1:iter %Cálculo de las constantes de Runge-kutta K1=(y*(t^2))-(1.2*y); K2=(y+(K1/2)*h)*(t+(h/2))^2-(1.2*(y+(K1/2)*h)); K3=(y-(K1*h)+(2*K2*h))*((t+h)^2)-(1.2*((y-(K1*h)+(2*K2*h)))); y=y+((K1+(4*K2)+K3)/6)*h; t=t+h; vectory=[vectory,y]; vectort=[vectort,t];endvectoryvectortsubplot (1,1,1);plot(vectort,vectory,r-*);title(Método runge kutta Tercer orden. y vs t);xlabel (valores t);ylabel (valores y);
  12. 12. AplicaciónLos métodos numéricos son técnicas, donde es posible resolver losproblemas por medio de operaciones aritméticas, estos métodosimplementan un buen numero de cálculos que son por demásdemasiado lentos si se hacen manualmente, gastando mucha energíaen la técnica misma de solución en vez de aplicarla sobre la definicióndel problema y su interpretación.El trabajo monótono que se hacia anteriormente al uso de lacomputadora, hace de importancia, el dominio de los métodosnuméricos, los cuales se deben llevar a cabo en combinación con lascapacidades y potencialidades de la programación de computadoraspara de esa forma resolver los problemas de ingeniería mucho masfácilmente y eficientemente.En general, estos métodos se aplican cuando se necesita un valornumérico como solución a un problema matemático, y losprocedimientos "exactos" o "analíticos" (manipulaciones algebraicas,teoría de ecuaciones diferenciales, métodos de integración, etc.) sonincapaces de dar una respuesta. Debido a ello, son procedimientos deuso frecuente por físicos e ingenieros, y cuyo desarrollo se ha visto
  13. 13. favorecido por la necesidad de éstos de obtener soluciones, aunque laprecisión no sea completa. Debe recordarse que la física experimental,por ejemplo, nunca arroja valores exactos sino intervalos que englobanla gran mayoría de resultados experimentales obtenidos, ya que no eshabitual que dos medidas del mismo fenómeno arrojen valoresexactamente iguales. ConclusiónEl estudio de los métodos numéricos, es muy útil y por ende importantepara quien utilice esta herramientas para resolución de operaciones, lascuales se saben que pueden resultar complicadas, tediosas y largas, ypor más que se dominen los métodos tradicionales, estos muchas vecespueden no ser suficientes, sin embargo esto no quiere decir que laoperación sea imposible de solucionar, y es ahí donde los métodosnuméricos se aplican, y facilitan es trabajo de cierta manera.Dentro del estudio de los métodos numéricos, se encuentran una granvariedad de aplicaciones como lo fue el descrito en el presente trabajoreferido al método de runge kutta, que tiene como objetivo principal elanálisis y solución de los problemas de valor inicial de ecuacionesdiferenciales ordinarias, siendo estos una extensión del método de eulerpara resolver las, pero con un orden de exactitud mas alto que este,logrando así la exactitud del procedimiento sin requerir el cálculo dederivadas superiores Por tal razón se toma como un método de granfacilidad y rapidez lo que lo hace de gran importancia, ya que debidoa estas características su implantación resulta mas cómoda y fácil demanejar, tomando en cuenta a la misma vez la utilización de sualgoritmo resultando una gran ventaja a nivel de su desenvolvimientoen la programación en matlab. El mecanismo esta basado en laaplicación de ecuaciones matemáticas de gran facilidad de empleo,siendo esta otra característica positiva. Este método es de granaplicabilidad en diversas áreas de la industria lo que lo hace muy usadoen distintos niveles. BibliografíaChapra, S y Canale, R (2003). Métodos numéricos para ingenieros.Editorial Macgraw Hill. Cuarta edición. México.Calvo, M (1998). Los metodo de Runge-kutta en la resolucion numericade ecuaciones diferenciales. Disponible en:http://www.unizar.es/acz/02AcademicosNumerarios/Discursos/Calvo.pdf
  14. 14. C. Conde, E. Schiavi y A.I. Muñoz. (2006). Métodos numéricos para Laresolucion de problemas de valor inicial. Disponible en:http://www.escet.urjc.es/~matemati/mm_iq/tema5.pdf

×