Download - Mtodo de runge..trabajo[1]... listo final
Universidad CentroccidentalLisandro Alvarado
Decanato de AgronomíaPrograma de Ingeniería Agroindustrial
Núcleo Obelisco
Integrantes:Ambar I Suarez RAna G Ponente SMaria T. Garcia C
Prof.: Juan MolinaComputación Aplicada
Enero 2011.
Introducción
La computadora, es la herramienta más poderosa hasta ahora conocida,
para la solución de problemas en el campo de las ciencias exactas, en este
caso los métodos numéricos, como punto principal por sus aplicaciones en la
ingeniería.
Los conocimientos científicos se usan rutinariamente por los ingenieros
en el diseño de elementos tales como maquinas, circuitos eléctricos,
estructuras etc.
Estos conocimientos son muy útiles cuando se expresan en forma de un
modelo matemático, el cual se puede definir como una ecuación que expresa
las características fundamentales de un sistema o proceso físico en términos
matemáticos, siendo clasificados estos modelos, desde simples relaciones
algebraicas hasta grandes y complicados sistemas de ecuaciones
diferenciales.
Los métodos numéricos son técnicas, donde es posible resolver los
problemas por medio de operaciones aritméticas, estos métodos implementan
un buen numero de cálculos que son por demás demasiado lentos si se hacen
manualmente, gastando mucha energía en la técnica misma de solución en vez
de aplicarla sobre la definición del problema y su interpretación.
El trabajo monótono que se hacía anteriormente al uso de la
computadora, traduce la importancia del dominio de los métodos numéricos, los
cuales se deben llevar a cabo en combinación con las capacidades y
potencialidades de la programación de computadoras para de esa forma
resolver los problemas de ingeniería mucho mas fácilmente y eficientemente.
Método de Runge-Kutta
El método mas utilizados para desarrollar una solución numérica de
ecuaciones diferenciales de un paso con orden mayor a uno es el método de
Runge-Kutte. Este método fue propuesto por los matemáticos C. Runge y M.
W. Kutta hace más de un siglo, consiste en utilizar reevaluaciones sucesivas
de la función f( t, Y) en puntos adecuados. Este método mejora la aproximación
del método de Euler para resolver de modo aproximado, sin necesidad de
calcular derivadas de orden superior, Existen muchas variaciones, pero todas
se pueden denotar en la forma generalizada de la ecuación:
yi + 1 = yi + φ(xi,yi,h)h
Donde φ(xi,yi,h) se conoce como función incremento, la cual se
interpreta con una pendiente representativa sobre el intervalo.
Donde a es constantes y las k son:
Las k son relaciones de recurrencia, esto es, k1 aparece en la ecuación
para k2, la cual aparece en la ecuación para k3, así sucesivamente, observando
que cada k es una evaluación funcional, esto hace que el método Runge-
Kutta sea más eficaz para la programación debido a la recurrencia. Existen
varios tipos de métodos Runge-Kutta al emplear diferentes números de
términos en la función incremento como la especificada por n.
Para comprender su funcionamiento observaremos el siguiente ejemplo:
Evaluando en la función:
g1= f(tn , yn), g2= f(tn + h, yn +(h/2),
La formula yn + 1 = yn + hg2, ya tiene orden dos, esto quiere decir que los
errores producidos son proporcionales a h3, por tanto utilizando la idea de
Runge-Kutta, con dos evaluaciones de función por paso se puede deducir
formulas de segundo grado. También existen otras formulas realizadas por
estos dos matemáticos, que son especificas para ordenes superiores ( de
tercer y cuarto orden) ejemplo:
Y n + 1 = yn + ( h / 6 ) ( g1 + 2g2 + 2g3 + g4 )
Donde: g1= f(tn, yn),
g2 = f(tn + h / 2, yn + (h / 2) (g1)),
g3 = f(tn + h / 2, yn + (h / 2) (g2)),
g4 = f(tn + h, yn + hg3)
Gracias a su amplia simplicidad y facilidad de programación y los
satisfactorios resultados que proporciona ha sido utilizado en muchos
manipuladores algebraicos, como lo son; Matlab, Maple, entre otro.
Método de Runge-kutta (orden 2)
La versión de segundo orden para la ecuación en su forma generalizada
es:
Donde:
Los valores de a1, a2, p1 y q11 son evaluados al igualar el término de
segundo orden de la ecuación dada con la expansión de la serie de Taylor.
Desarrollando tres ecuaciones para evaluar las cuatro incógnitas:
Como se tienen tres ecuaciones con cuatro incógnitas se tiene que
suponer el valor de una de ellas. Suponiendo que se especificó un valor
para a2, se puede resolver de manera simultánea el sistema de ecuaciones
obtenido:
Como se puede elegir un número infinito de valores para a2, hay un
número infinito de métodos Runge-Kutta de segundo orden, cada versión
podría dar exactamente los mismos resultados si la solución de la EDO fuera
cuadrática, lineal o una constante.
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.
.
Método de Runge-kutta (orden 3)
En el método de Runge-Kutta de tercer orden se toman los siguientes
tres estimados de :
K1= f(x0, y0)h que es la estimación del método de Euler
K2= f(x0 + p.h , y0 + p.k1)h; 0<p<1
Que es parecido al estimado del método Runge excepto que en lugar de
evaluar en el punto p=1/2 la derivada se calcula en un punto p=[x0 + p.h,y0 +
p.k1] que aun no se ha determinado y por ultimo.
K3= f(x0 + q.h, y0 + r.(k2) + (q – r).(k1))h
Donde 0 < q, r <1 y deben calcularse.
Entonces el valor de k que se utiliza para calcular y1 se toma como:
K4= a(k1) + b(k2) + c(k3); donde a, b, c son parámetros iguales a los que ( q y r)
se sirven para dar resultados con mas precisión cuando se desea estimar k.
Este procedimiento nos lleva a aplicar 4 ecuaciones con 6 incógnitas como
lo son:
a + b + c = 1
p. b + q + c = ½
p2 . b + q2 . c = 1/3
p . r . c = 1/6
Despejando:
a= (6 . p . q -(p + q)+2) / (6 . p . q)
b= (2 – 3) . p / (6 . p. (p – q))
c= (2 – 3) . p / (6 . q . (q – p))
d= q . (q – p) / (p ( 2 – 3p).
Puesto que p y q son arbitrarios, tenemos entonces una familia de formulas
biparametricas que pueden usarse para resolver la ecuación diferencial de
primer orden con una precisión de orden 4.
Algoritmo en Matlab
1. %Metodo Runge-Kutta de 2doOrden2. x=1; 3. y=1; 4. z=2; 5. t=0; 6. tmax=3; 7. h=0.3;8. iter=round((tmax-t)/h);9. vectorx=x;10. vectory=y;11. vectorz=z;12. vectort=t;13. for i=1:iter14. %calculo de las constantes de Runge-Kutta15. K1x=(t^2+x-z)*h;16. 17. F1=((t+h/2)^2+(x+K1x/2)-z)*h;18. F2=(-(t+h/2)^3)*h; 19. F3=(-(t+h/2)+y)*h; 20. 21. x=x+F1;22. y=y+F2;23. z=z+F3;24. t=t+h;25. 26. vectorx=[vectorx x];27. vectory=[vectory y];28. vectorz=[vectorz z];29. vectort=[vectort t];30. end31. vectorx32. vectory33. vectorz34. vectort35.36. figure37. subplot (2,2,1);38. plot(vectort,vectorx,'y-o'); 39. title('Metodo Runge-Kutta 2doOrden. x vs t'); 40. xlabel('valores t');41. ylabel('valores x');42.43. subplot (2,2,2);44. plot(vectort,vectory,'b-p');45. title('Metodo Runge-Kutta 2doOrden. y vs t');46. xlabel('valores t');47. ylabel('valores y');48.49. subplot (2,2,3);50. plot(vectort,vectorz,'r-+');51. title('Metodo Runge-Kutta 2doOrden. z vs t'); 52. xlabel('valores t');53. ylabel('valores z');54.55. figure56. plot(vectort,vectorx,'y-o');
57. hold on 58. plot(vectort,vectory,'b-p');59. plot(vectort,vectorz,'r-+');60. xlabel('valores t');61. ylabel('valores x,y,z');62. legend('x','y','z'); 63. title('Metodo Runge-Kutta 2doOrden.soluciones del sistema de
ecuaciones');
Algoritmo en matlab
1. %Metodo Runge-Kutta de 3erOrden2. x=1; 3. y=1; 4. z=2; 5. t=0; 6. tmax=3; 7. h=0.3; 8. iteraciones=round((tmax-t)/h);9. vectorx=x;10. vectory=y;11. vectorz=z;12. vectort=t;13. for i=1:iteraciones14. %calculo de las constantes de Runge-Kutta15. K1x=(t^2+x-z)*h; 16. K1y=(-t^3)*h; 17. K1z=(-t+y)*h; 18. 19. K2x=((t+h/2)^2+(x+K1x/2)-z)*h;20. K2y=(-(t+h/2)^3)*h; 21. K2z=(-(t+h/2)+y)*h; 22. 23. K3x=((t+h)^2+(x+2*K2x-K1x)-z)*h; 24. K3y=(-(t+h)^3)*h;25. K3z=(-(t+h)+y)*h; 26. 27. x=x+(K1x+4*K2x+K3x)/6;28. y=y+(K1y+4*K2y+K3y)/6;29. z=z+(K1z+4*K2z+K3z)/6;30. t=t+h;31. 32. vectorx=[vectorx x];33. vectory=[vectory y];34. vectorz=[vectorz z];35. vectort=[vectort t];36. end37. vectorx38. vectory39. vectorz40. vectort41.42. figure43. subplot (2,2,1);44. plot(vectort,vectorx,'y-o'); 45. title('Metodo Runge-Kutta 3erOrden. x vs t'); 46. xlabel('valores t');47. ylabel('valores x');48.49. subplot (2,2,2);50. plot(vectort,vectory,'b-p');51. title('Metodo Runge-Kutta 3erOrden. y vs t'); 52. xlabel('valores t');53. ylabel('valores y');54.55. subplot (2,2,3);56. plot(vectort,vectorz,'r-x');
57. title('Metodo Runge-Kutta 3erOrden. z vs t');58. xlabel('valores t');59. ylabel('valores z');60.61. figure62. plot(vectort,vectorx,'y-o'); 63. hold on 64. plot(vectort,vectory,'b-p');65. plot(vectort,vectorz,'r-x');66. xlabel('valores t');67. ylabel('valores x,y,z');68. legend('x','y','z'); 69. title('Metodo Runge-Kutta 3erOrden.soluciones del sistema de
ecuaciones');
Conclusiones
En la aplicación y resolución numérica de ecuaciones diferenciales juega
un papel muy importante el método genérico de resolución numérica Runge-
Kutta no es sólo un método sino una importante familia de métodos iterativos
tanto implícitos como explícitos para aproximar las soluciones de ecuaciones
diferenciales ordinarias.
Tener en cuenta que para resolver cada problema de los métodos
numéricos es necesario tener orden porque la gran cantidad de datos, por lo
cual se requiere manejar también los programas. En función al objetivo de los
métodos numéricos de runge-kutta, el cual es el análisis y solución de los
problemas de valor inicial de ecuaciones diferenciales ordinarias, se considera
que estos son una extensión del método de euler para resolverlas, pero con un
orden de exactitud más alto que este.
Hay que tener en cuenta que de alguna u otra manera los métodos
numéricos están sujetos a ciertos errores al hacer los cálculos en muchos
pasos (iteraciones), pero que estos se pueden llegar a despreciar por la actual
eficiencia de las maquinas computadoras, las cuales pueden llegar a tomar los
intervalos de tiempo infinitesimalmente pequeños para la aplicación de las
ecuaciones y obtener los resultados más rápido y de manera más exacta.