Solución de ecuaciones diferenciales

Anuncio
SOLUCIÓN DE ECUACIONES DIFERENCIALES
Autor: Keith Gregson
Traducción: José Alfredo Carrillo Salazar
Muchos sistemas dinámicos pueden representarse en términos de ecuaciones
diferenciales. Por ejemplo, la tasa de cambio de temperatura de un cuerpo (u)
que pierde calor por convección natural en un ambiente a temperatura constante
(T), puede aproximarse con la siguiente ecuación:
du
= −0.55(u − T )1.25
dt
Otro ejemplo es la tasa de cambio del tamaño de una población (N), que puede
expresarse como:
dN
= k1N − k 2N
dt
donde k1 representa la tasa de nacimiento y k2 la tasa de mortalidad debido a la
falta de recursos, etc.
Una ecuación diferencial se dice que es de orden n si contiene derivadas del
orden n y no derivadas de un orden mayor.
dy
= f ( x, y ) con la condición y(x0)= y0
dx
La expresión anterior es una ecuación diferencial en la cual x es la variable
independiente y y es la variable dependiente. Los matemáticos usan la notación
dy
d 2y
y’ para referirse a
, y y’’ para referirse a
, etc. En el caso especial
dx
dx 2
cuando la variable independiente es el tiempo, entonces se usa la siguiente
notación:
•
y
••
dy
d 2y
≡
, y ≡ 2 , etc.
dt
dt
Por el momento, se abordarán únicamente las soluciones a ecuaciones
diferenciales de primer orden. Esta no es una restricción severa debido a que
ecuaciones diferenciales de orden mayor pueden ser expresadas en términos de
un juego de ecuaciones diferenciales de primer orden. Por ejemplo:
y’’ = g(x,y,y’)
puede ser expresada en dos ecuaciones:
z’ = g(x,y,z)
y’ = z
Otra restricción que se hará en este documento es la solución de ecuaciones en
las cuales se conocen las condiciones iniciales; por ejemplo, cuando se sabe
que el valor de y0 corresponde a x0.
Método de Euler
La solución de ecuaciones diferenciales puede ser ilustrada de la siguiente
manera: Si se conoce el valor de y en algún punto, por ejemplo y0 = y(x0),
entonces se puede graficar ese punto. También conocemos su derivada en ese
punto, por lo que podemos predecir el valor de la función en x1, siempre y
cuando x1 no esté muy retirado de x0., bajo el supuesto que la función puede ser
aproximada mediante una línea recta.
y
(x2,y2)
y2
y1
y0
o
(x1,y1)
(x0,y0)
x
x0
x1
x2
Se puede repetir el proceso de x1 a x2 como se muestra en el diagrama y
gradualmente construir una tabla de valores subsecuentes de yi = f(xi). Estos
pasos se pueden resumir en la siguiente ecuación:
 dy 
y n = y n −1 + 
 ( xn − xn −1 )
 dx n −1
Este método se conoce como el método de Euler. Obviamente, este proceso
puede ser repetido tantas veces como sea necesario para poder cubrir el
intervalo requerido. Sin embargo, aún tomando pasos muy pequeños, la
precisión puede no ser muy alta debido a que los valores predichos pueden
estar subestimados o sobrestimados, lo cual dependerá de la curvatura de la
función verdadera. Este proceso ilustra el principio general de que la precisión
de los cálculos computacionales dependerá de dos factores: la precisión del
cálculo individual de los pasos y de la generación de errores (estabilidad)
cuando se procede a calcular muchos pasos. Nótese que en la práctica, no es
recomendable utilizar este método. Es ineficiente y puede ser impreciso.
La solución de ecuaciones diferenciales simultáneas, puede ser obtenida si se
aplica la ecuación anterior a cada una de las variables en turno, en cada paso,
en un tiempo determinado.
Método de Euler modificado
El proceso anteriormente descrito tiene problemas obvios y se puede mejorar si
se obtiene una mejor estimación de la derivada en un intervalo. Eso se puede
obtener si se usa el valor de y predicho en x1 para de esta forma obtener una
nueva estimación de la derivada en x1. El valor de la derivada en el intervalo
x0 – x1 puede ser calculado como el valor promedio de estas dos derivadas. Si
se parte de que el valor de la función y y sus derivadas f(x,y) se conocen en x0, y
se quiere calcular el valor de y en x=x1=x0 + h (donde h es el tamaño del paso),
el proceso se puede describir como a continuación:
yip = y0 + hy’(x0,y0)
yic = y0 + (h/2) (y’(x0,y0) + y’(x1,y1p) )
el que predice
el que corrige
En este proceso, el valor de y1p calculado se usa para corregir el proceso y así
obtener un mejor valor de yic. Es obvio que se puede repetir la segunda etapa de
éste método indefinidamente en un proceso iterativo; esto es, a través de
remplazar el valor predicho de y1p por el último valor corregido de y1c. También,
se puede usar algún método iterativo para resolver la segunda ecuación y así
obtener un valor verdadero de y1c:
y ic = y 0 + h
( y ' ( x0 , y 0 ) + y ' ( x1, y1 ))
2
Se debe notar que en general, yic no será el valor real de y(x1) y un número
excesivo de cálculos para evaluar yic puede ser contraproducente.
Probablemente dos o tres iteraciones son suficientes. Una mejor precisión se
puede obtener a través de disminuir el tamaño del paso a la mitad; de esta
forma, se hace que el sistema calcule con el doble de pasos. La diferencia entre
los valores predichos y calculados puede usarse como un indicador de la
precisión de los cálculos. Si la diferencia es muy grande, entonces se puede
disminuir el tamaño del paso, si es muy pequeña entonces se puede aumentar el
tamaño del paso.
Método de Adams-Moulton
El método de Euler modificado es un método predictor-corrector simple. Hay
varios otros métodos que varían en complejidad y aplicabilidad. Aquí se describe
el algoritmo del método de Adams Moulton, el cual usa los valores de los cuatro
pasos previos para calcular el valor nuevo de y. Sin embargo, tiene la
desventaja de restringir el tamaño de paso, debido a que cambiar el tamaño del
paso requiere de calcular pasos intermedios o mantener muchos más valores.
Además, hay problemas en éste método para calcular los valores iniciales.
El procedimiento es el siguiente:
y0, y-1, y-2, y-3 donde h= yn – yn-1 (para todas las n)
Se calcula el valor nuevo de y1 de la siguiente manera:
1. Se utiliza la ecuación del predictor para generar y1p:
y1p = y 0 +
h
(55y 0' − 59y −' 1 + 37 y −' 2 − 9y −' 3 )
24
2. Se usa y1p para obtener una primera estimación de y1'
y1' = f ( x1, y1p )
3. Se usa la siguiente ecuación correctora para obtener una mejor estimación:
y1c = y −1 +
h
(9y1' + 19y 0' − 5y −' 1 + y −' 2 )
24
4. Examine 0.05(y1p – y1c)
Si ninguno de los dos es muy grande (en caso contrario, hay que disminuir el
tamaño de paso) o muy pequeño (aumentar el tamaño de paso) entonces:
5. Recalcular y1' con y1c:
y1' = f ( x1, y1c )
6. Repetir el proceso desde el paso 1
Métodos de Runge-Kutta
Otra serie de métodos disponibles para la solución de sistemas de ecuaciones
diferenciales, son conocidos como Runge-Kutta. En estos métodos los cálculos
se hacen un paso a la vez. La obtención de los métodos es complicada y en
general, la estimación del error es difícil. Sin embargo, una modificación al
método, conocida como el método Runge-Kutta-Merson, permite estimar el error
en cada paso, y es utilizada ampliamente. El algoritmo es el siguiente:
k1 = hf ( xn , y n )
h
k
k 2 = hf ( xn + , y n + 1 )
3
3
h
k1 k 2
k3 = hf ( xn + , y n + + )
3
6 6
h
k1
k
k 4 = hf ( xn + , y n + + 3 3 )
2
8
8
k
k
k5 = hf ( xn + h, y n + 1 − 3 3 + 2k 4 )
2
2
1
y n +1 = y n + (k1 + 4k 4 + k5 )
6
Una estimación del error puede obtenerse con la siguiente ecuación:
error ≈
1
( 2k1 − 9k3 + 8k 4 − k5 )
30
La solución de ecuaciones simultáneas es una extensión simple. El
procedimiento es como arriba, en donde se calcula primero k1 para cada variable
yi antes de ir a calcular las k2, etc.
Descargar