Está en la página 1de 10

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 Investigacin
Unidad profesional Adolfo Lpez Mateos Zacatenco
Edif.5, 2do. Piso, Col. Lindavista, C.P. 07738, Mxico D.F., Mxico
ingaor@hotmail.com, guiurri@hotmail.com, eamerchan@ipn.mx,
daffne_mutter@hotmail.com.

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

INTRODUCCIN

En 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.
DESARROLLO
Mtodo 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
dy
f ( x, y )
(1)
dx
La solucin se basa en la aproximacin de la derivada por un incremento de
elementos finitos en donde;

dy yk 1 yk

dx xk 1 xk

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

y g ( x, c )
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
( xk , yk )
punto particular
sobre la curva se tiene que la pendiente de la recta en este
punto esta dada por:
dy
tan( ) xk , yk g ( xk , yk )
(2)
dx
yk 1

Entonces el punto
aproximado linealmente al punto exacto
calcular de acuerdo a la Figura (1) por:
yk 1 yk g ( xk , yk )* dx
dy
yk 1 yk
dx

xk , y k

* dx

f ( xk 1 )

se puede

(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).


g ( xk , yk )
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:

yk 1mod ificada yk g ( xk , yk ) g ( xk 1 , yk 1 ) *

Donde

yk 1

dx
2

(5)

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
dy
f ( x, y )
dx

y ( x0 ) y0

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

y ( x)

k 1
funcin
posee
derivadas, que sean continuas en un intervalo abierto que
contenga a y x, entonces podemos escribir

y ( x) y (a ) y (a )

xa
( x a )2
( x a )( k 1)
( k 1)

y (a )
... y
(c )
...
1!
2!
( k 1)!

(6)

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

y ( xn 1 ) y ( xn ) dxy( xn ) y( xn )

y x por

(dx) 2
(dx ) ( k 1)
( k 1)
... y (c)
...
2!
( k 1)!

xn 1 xn dx

la

(7)
dx 2
y(c )
2

xn y xn 1

k 1
En donde c es un numero entre
cuando
y el residuo
es
dx h
pequeo, cambiando
; h es el intervalo de paso, se obtiene la formula de
iteracin;
yn1 yn hyn
(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:
k1 f ( xk yk ) * h
h
k
k 2 f ( xk , y k 1 ) * h
2
2
k2
h
k 3 f ( xk , y k ) * h
2
2
k 4 f ( xk h , y k k 3 ) * h
yk 1 yk

(9)

1
k1 2k2 2k3 k4
6

RESULTADOS Y ANLISIS
Problema de valor inicial
El 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).

y e( x

dy
2 xy donde y (1) 1 para el intervalo 1, 2
dx

; Donde la solucin analtica es

1)

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.

Analtica

Euler

Euler
modifica

1.2

1.5527

1.4000

1.5360

Runge
Kutta
4orden
1.5526

1.4

2.6117

2.0720

2.5412

2.6109

1.6

4.7588

3.2323

4.5212

4.7554

1.8

9.3933

5.3010

8.6374

9.3799

20.0855

9.1177

17.6893

20.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.59

11.48

0.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.

X
1.050
1.100
1.150
1.200

Analtica

Euler

Euler
modifica

1.1079
1.2337
1.3806
1.5527

1.1000
1.2155
1.3492
1.5044

1.1078
1.2332
1.3798
1.5514

Runge
Kutta
4orden
1.1079
1.2337
1.3806
1.5527

1.250
1.300
1.350
1.400
1.450
1.500
1.550
1.600
1.650
1.700
1.750
1.800
1.850
1.900
1.950
2.000

1.7551
1.9937
2.2762
2.6117
3.0117
3.4903
4.0654
4.7588
5.5985
6.6194
7.8656
9.3933
11.2740
13.5991
16.4858
20.0855

1.6849
1.8955
2.1419
2.4311
2.7714
3.1733
3.6493
4.2149
4.8893
5.6960
6.6643
7.8306
9.2401
10.9495
13.0299
15.5708

1.7531
1.9909
2.2721
2.6060
3.0038
3.4795
4.0506
4.7388
5.5714
6.5828
7.8162
9.3267
11.1841
13.4777
16.3219
19.8637

1.7551
1.9937
2.2762
2.6117
3.0117
3.4903
4.0653
4.7588
5.5985
6.6193
7.8656
9.3933
11.2739
13.5989
16.4856
20.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.59

11.48

0.24

22.47

1.10

0.001

CONCLUSIONES
Los 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.

REFERENCIAS

Nakamura, 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 GrawHill.
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.

También podría gustarte