APROXIMACIÓN DISCRETA PARA ECUACIONES DIFERENCIALES ORDINARIAS USANDO C++

10
SOLUCIÓN DE PROBLEMAS: APROXIMACIÓN DISCRETA PARA ECUACIONES DIFERENCIALES ORDINARIAS USANDO C++ Arturo Ocampo Ramirez , Guillermo Urriolagoitia Sosa, Emmanuel A. Merchán Cruz, Thalía Daffne Hernández Duarte Instituto Politécnico Nacional Escuela Superior de Ingeniería Mecánica y Eléctrica Sección de Estudios de Posgrado e Investigación Unidad profesional “Adolfo López Mateos” Zacatenco Edif.5, 2do. Piso, Col. Lindavista, C.P. 07738, México D.F., México [email protected], [email protected], [email protected], [email protected]. Aplicación, Solución de problemas (SO) - Registro del trabajo: 121 Resumen: La solución de modelos dinámicos que surgen de la interpretación matemática de fenómenos físicos involucra la integración de ecuaciones diferenciales ordinarias. Así existen casos no-lineales en los que no es posible encontrar una solución analítica. En la práctica los sistemas dinámicos se resuelven por medio de computadoras, en el aprendizaje de los métodos numéricos para la solución de ecuaciones diferenciales. El alumno normalmente integra las ecuaciones manualmente consumiendo un tiempo importante que puede ser usado en la interpretación física de la solución. En este artículo se propone introducir a los alumnos de licenciatura en la integración numérica de ecuaciones diferenciales ordinarias aplicando el lenguaje de programación C++. Esto permite ahorrar tiempo en tareas iterativas para enfocarse en la interpretación física de la solución y del fenómeno que se está estudiando, generar nuestro propio algoritmo evitando el uso de programas comerciales. Además, se mostrará una breve revisión de los métodos numéricos (comparando tres métodos numéricos clásicos (Euler, Euler modificado y Runge Kutta de 4° orden)) analizando la convergencia que existen entre estos métodos de integración numérica.

description

La solución de modelos dinámicos que surgen de la interpretación matemática de fenómenos físicos involucra la integración de ecuaciones diferenciales ordinarias. . Así existen casos no-lineales en los que no es posible encontrar una solución analítica. En la práctica los sistemas dinámicos se resuelven por medio de computadoras, en el aprendizaje de los métodos numéricos para la solución de ecuaciones diferenciales.

Transcript of APROXIMACIÓN DISCRETA PARA ECUACIONES DIFERENCIALES ORDINARIAS USANDO C++

SOLUCIN DE PROBLEMAS: APROXIMACIN DISCRETA PARA ECUACIONES DIFERENCIALES ORDINARIAS USANDO C++

Arturo Ocampo Ramirez, Guillermo Urriolagoitia Sosa, Emmanuel A. Merchn Cruz, Thala Daffne Hernndez Duarte Instituto Politcnico Nacional Escuela Superior de Ingeniera Mecnica y Elctrica Seccin de Estudios de Posgrado e InvestigacinUnidad profesional Adolfo Lpez Mateos ZacatencoEdif.5, 2do. Piso, Col. Lindavista, C.P. 07738, Mxico D.F., Mxico [email protected], [email protected], [email protected], [email protected].

Aplicacin, Solucin de problemas (SO) - Registro del trabajo: 121

Resumen:La solucin de modelos dinmicos que surgen de la interpretacin matemtica de fenmenos fsicos involucra la integracin de ecuaciones diferenciales ordinarias. As existen casos no-lineales en los que no es posible encontrar una solucin analtica. En la prctica los sistemas dinmicos se resuelven por medio de computadoras, en el aprendizaje de los mtodos numricos para la solucin de ecuaciones diferenciales. El alumno normalmente integra las ecuaciones manualmente consumiendo un tiempo importante que puede ser usado en la interpretacin fsica de la solucin. En este artculo se propone introducir a los alumnos de licenciatura en la integracin numrica de ecuaciones diferenciales ordinarias aplicando el lenguaje de programacin C++. Esto permite ahorrar tiempo en tareas iterativas para enfocarse en la interpretacin fsica de la solucin y del fenmeno que se est estudiando, generar nuestro propio algoritmo evitando el uso de programas comerciales. Adems, se mostrar una breve revisin de los mtodos numricos (comparando tres mtodos numricos clsicos (Euler, Euler modificado y Runge Kutta de 4 orden)) analizando la convergencia que existen entre estos mtodos de integracin numrica.Palabras clave: Mtodos numricos, aplicacin, programacin, Runge Kutta

INTRODUCCINEn el estudio dinmico de los sistemas, que el hombre ha modelado, aparecen ecuaciones diferenciales que reflejan de forma aproximada la realidad de los fenmenos fsicos. La solucin involucra la integracin de las ecuaciones diferenciales que puedan surgir del modelado del sistema, integrar analticamente los sistemas de ecuaciones diferenciales es lento y tedioso. Las ecuaciones diferenciales de n orden se pueden descomponer en un sistema de n ecuaciones de primer orden para poder ser integradas numricamente. El mtodo de Euler y los mtodos de Runge Kutta establecen algoritmos simples para ser implementados en cualquier lenguaje de programacin (Nakamura, 1992). Es comn que en los cursos de Mtodos Numricos que se ven en licenciatura al aplicar un mtodo numrico estos se sigan resolviendo manualmente y no se programe el algoritmo de solucin perdindose la principal ventaja de los Mtodos Numricos que son el de hacer uso de la computadora para resolver problemas de Ingeniera (Torres, 1993). En este trabajo se implementaran los algoritmos de Euler, Euler modificado y el de Runge Kutta de 4 orden en el lenguaje C++ para hacer una comparacin rpida entre ellos y la solucin analtica. Esto permite observar como converge cada mtodo hacia la solucin exacta y a s comprender mejor el comportamiento aproximado de los Mtodos Numricos.DESARROLLOMtodo de integracin de Euler (Scheid & Di Constanzo, 1989).Es el ms simple de los mtodos que existen para la solucin de ecuaciones diferenciales ordinarias de la forma

(1)

La solucin se basa en la aproximacin de la derivada por un incremento de elementos finitos en donde; y

Fig. 1. Aproximacin de la curva solucin en un intervalo.

La solucin de la Ecuacin 1 es de la forma donde c es una constante determinada por las condiciones iniciales. Puesto que la curva es continua, pequeos segmentos de la curva se pueden suponer como lneas rectas a si en el punto particular sobre la curva se tiene que la pendiente de la recta en este punto esta dada por:

(2)

Entonces el punto aproximado linealmente al punto exacto se puede calcular de acuerdo a la Figura (1) por:

(3)(4)

La cual proporciona una formula iterativa para hallar puntos de la solucin de una forma aproximada a lo largo de la curva de solucin por medio de una recta. Mientras ms pequeos sea dx ms exacta ser la aproximacin Figura 2.

Fig. 2. Aproximacin de la curva solucin por rectas.

Mtodo de integracin de Euler modificado (Chapra & Canale, 2007).

Si en lugar de aproximar la curva solucin por la recta con pendiente se utiliza una recta con pendiente igual al promedio de la pendiente anterior calculada previamente por Euler para el siguiente punto se tiene:

(5)

Donde se calcula por la Ecuacin (4).El proceso se repite hasta que la diferencia de dos valores consecutivos sea menor a un valor de tolerancia fijado previamente o un nmero de iteraciones.Mtodo de integracin de Runge Kutta de 4 orden (Mathews & Fink 2000).

Uno de los mtodos ms difundidos y ms exactos para obtener soluciones aproximadas a problemas de valor inicial de la forma con es el de Runge Kutta de 4orden que se deduce de la serie de Taylor. Si una funcin posee derivadas, que sean continuas en un intervalo abierto que contenga a y x, entonces podemos escribir

(6)

Donde c es un numero entre a y x si remplazamos a por y x por la formula anterior se transforma en

(7)

En donde c es un numero entre cuando y el residuo es pequeo, cambiando ; h es el intervalo de paso, se obtiene la formula de iteracin;

(8)

En otras palabras, el mtodo bsico de Euler es un procedimiento de Runge Kutta de 1orden, es decir un polinomio de Taylor del mismo orden. El procedimiento para encontrar un polinomio de Taylor de 4orden se tiene que hacer uso de cuatro constantes que eviten las derivadas del polinomio de Taylor, de esta forma llegamos a una solucin en menos tiempo, las siguientes formulas iterativas se usan para esto:

(9)

RESULTADOS Y ANLISISProblema de valor inicialEl diagrama de flujos para cada uno de los algoritmos se presenta a continuacin en la figura 3;

Fig. 3. Diagramas de flujo.

Considere el problema de valor inicial de la siguiente ecuacin diferencial (Zill, 2002). ; Donde la solucin analtica es En las Tablas 1, 2 y en la Figura 4 se observa como se comporta la aproximacin de los tres mtodos iterativos a la solucin exacta para un paso de h=0.2.Fig. 4. Aproximacin de la solucin exacta para h=0.2.Tabla 1. Valores de la soluciones aproximadas para h=0.2.XAnalticaEulerEuler modificaRunge Kutta 4orden

1.21.55271.40001.53601.5526

1.42.61172.07202.54122.6109

1.64.75883.23234.52124.7554

1.89.39335.30108.63749.3799

220.08559.117717.689320.0338

Tabla 2. Errores relativos de los tres mtodos con un paso de h=0.2.Euler (%error)Euler modifica (%error)Runge Kutta 4orden (%error)

52.5911.480.24

En las Tablas 3, 4 y en las Figuras 5 y 6 se observa como se comporta la aproximacin de los tres mtodos iterativos a la solucin exacta para un paso de h=0.05. Fig. 5. Aproximacin de la solucin exacta para h=0.05. Fig. 6. Vista a detalle de la aproximacin de la solucin exacta para h=0.05.

Tabla 3. Valores de la soluciones aproximadas h=0.05.XAnalticaEulerEuler modificaRunge Kutta 4orden

1.0501.10791.10001.10781.1079

1.1001.23371.21551.23321.2337

1.1501.38061.34921.37981.3806

1.2001.55271.50441.55141.5527

1.2501.75511.68491.75311.7551

1.3001.99371.89551.99091.9937

1.3502.27622.14192.27212.2762

1.4002.61172.43112.60602.6117

1.4503.01172.77143.00383.0117

1.5003.49033.17333.47953.4903

1.5504.06543.64934.05064.0653

1.6004.75884.21494.73884.7588

1.6505.59854.88935.57145.5985

1.7006.61945.69606.58286.6193

1.7507.86566.66437.81627.8656

1.8009.39337.83069.32679.3933

1.85011.27409.240111.184111.2739

1.90013.599110.949513.477713.5989

1.95016.485813.029916.321916.4856

2.00020.085515.570819.863720.0852

Tabla 4. Errores relativos de los tres mtodos con un paso de h=0.1 y h=0.05.Euler (%error)Euler modifica (%error)Runge Kutta 4orden (%error)

52.5911.480.24

22.471.100.001

CONCLUSIONESLos mtodos iterativos de Runge Kutta se basan en el desarrollo de la serie infinita de Taylor, en donde la serie truncada en la que aparece una primera derivada se denomina de primer orden y a si sucesivamente, el mtodo de Runge Kutta de 4orden es el mas empleado debido a su simplicidad y su rapidez de convergencia, en la Tabla 4 y en las Figuras 4 y 5 se observa claramente como el mtodo de Runge Kutta de 4 orden es bastante exacto con tan solo 5 iteraciones alcanza un error relativo del 0.24% en comparacin de los otros dos mtodos. Esta es la razn principal por la que es el ms utilizado. Al aumentar el nmero de iteraciones, el mtodo de Runge Kutta es tambin el que ms rpido converge a la solucin exacta.

REFERENCIASNakamura, S. (1992). Mtodos Numricos con Software. Mxico, D.F., Mxico: Pearson.Torres, J.M. (1993). Mtodos Numricos con Software en C [coleccin de libros de texto]. Mxico, D.F., Mxico: UAM Azcapotzalco: Departamento de Sistemas.Zill, D. G. (2002). Ecuaciones Diferenciales con aplicacin de modelado. Mxico, D.F., Mxico: Thomson Learning.Scheid, F. & Di Constanzo, R. E. (1989). Mtodos Numricos. New York: Mc Graw-Hill.Chapra, S. C. & Canale R. P. (2007). Mtodos Numricos para Ingenieros. Mxico, D.F., Mxico: Mac Graw-Hill.Mathews, J. H. & Fink K. D. (2000). Mtodos Numricos con Matlab. Mxico, D.F., Mxico: Prentice-Hall.

Inicio

Leer: Xi, Xf, Y(0), h

f(X,Y)Xi, Xf, Y(0), h, X, Y

X=XiY=Y(0)

X