SlideShare una empresa de Scribd logo
1 de 70
Descargar para leer sin conexión
Índice general

1. Métodos numéricos para ecuaciones diferenciales ordinarias
1.1. Método en diferencias finitas

3

. . . . . . . . . . . . . . . . . . . . . .

5

1.2. Método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.2.1.

Análisis del error . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.2.2.

Ejemplos de sistemas . . . . . . . . . . . . . . . . . . . . . .

18

1.3. El método de Heun y el método del punto medio . . . . . . . . . .

24

1.4. Métodos explícitos de Runge-Kutta . . . . . . . . . . . . . . . . . . .

40

2. Métodos numéricos para ecuaciones en derivadas parciales (EDPs) 49
2.1. Clasificación de EDPs de segundo orden . . . . . . . . . . . . . . . .

49

2.2. Métodos numéricos para problemas parabólicos . . . . . . . . . . .

50

2.2.1.

Método explícito . . . . . . . . . . . . . . . . . . . . . . . . .

51

2.2.2.

Método implícito . . . . . . . . . . . . . . . . . . . . . . . . .

55

2.2.3.

Método de Crank-Nicholson . . . . . . . . . . . . . . . . . .

59

2.3. Estabilidad, consistencia y convergencia . . . . . . . . . . . . . . . .

61

A. Analisis numérico matricial

65

A.1. Normas vectoriales . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

65

A.2. Normas matriciales

67

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
2
Capítulo 1

Métodos numéricos para
ecuaciones diferenciales
ordinarias
La inmensa mayoría de las ecuaciones diferenciales no se pueden resolver
de forma analítica explícita, por lo que resulta esencial diseñar algoritmos
numéricos que permitan hallar una aproximación numérica precisa. Los
esfuerzos de investigación en este sentido han proporcionado un vasto
abanico de esquemas numéricos que permiten hallar soluciones aproximadas
para una gran variedad de ecuaciones diferenciales. Además, hoy en día
uno puede elegir entre una amplia despensa de software que proporcionan
resultados precisos y fiables en periodos de tiempo moderadamente cortos.
No obstante, todos esos paquetes y los métodos que subyacen tienen sus
limitaciones, y quienes los utilizan deben ser capaces de reconocer cuando
el software trabaja correctamente y cuando genera resultados espurios.
En este capítulo nos ocuparemos de presentar los métodos numéricos
básicos para resolver problemas de valores iniciales (PVI). Lo cierto es que
los métodos esenciales que vamos a considerar raramente se utilizan en
la práctica, incluso para ecuaciones diferenciales relativamente sencillas,
puesto que existen métodos más sofisticados, especializados y versátiles.
Pero cualquier desarrollo avanzado se construye sobre esquemas básicos y
las ideas que subyacen de éstos.
Los problemas representativos con los que se enfrenta un analista numérico
de ecuaciones diferenciales ordinarias aparecen ya en las ecuaciones de
primer orden más simples. Nuestro objetivo es calcular una aproximación a

3
4

la solución para el problema de Cauchy:
y (t) = f (t, y(t)),

y(t0 ) = y0 ,

(1.1)

donde y(t) es una función real definida en un intervalo I, y f (t, y) es una
función definida en I × R.
Por el bien de la simplicidad, centraremos nuestra atención en el caso
escalar; sin embargo, todas las fórmulas y resultados se pueden adaptar a
sistemas de primer orden solo con reemplazar las funciones escalares y(t) y
f (t, y) por funciones vectoriales. Por otra parte, sabemos que las ecuaciones
diferenciales de orden superior se reducen a sistemas equivalentes de primer
orden.
Por no ser objeto de este tema, no entraremos a estudiar en profundidad
los diferentes resultados teóricos que aseguran, bajo ciertas hipótesis, la
existencia, unicidad o regularidad de las soluciones de los problemas de
Cauchy. No obstante recordamos a continuación uno de los teoremas clásicos
de existencia y unicidad.

Teorema 1.1 (de Cauchy-Lipschitz) Sea f (t, x) una función
continua sobre I × R y lipschitciana respecto a la segunda de sus
variables, esto es,
∃

L>0

/

|f (t, x) − f (t, y)| ≤ L|x − y|,

∀t ∈ I, ∀x, y ∈ R,

entonces el problema de Cauchy (1.1) admite una única solución.

Observación 1.2 La condición de Lipschitz es relativamente suave sobre
la función. Obsérvese que si la derivada parcial de f (t, x) respecto de la
segunda variable es una función continua, la condición de Lipschitz se
traduce en que dicha derivada permanezca acotada.
En numerosos problemas físicos la variable t representa el tiempo y el
intervalo I se suele considerar desde [t0 , t0 + α]. Por ello el instante t0 se
denomina instante inicial y la condición impuesta en ese instante y(t0 ) = y0
se denomina condición inicial.
5

1.1.

Método en diferencias finitas

Uno de los métodos más versátiles para resolver ecuaciones diferenciales
ordinarias es el método de diferencias finitas, que consiste, básicamente,
en aproximar las derivadas de una función en un punto mediante una
combinación de las imágenes de la función en puntos del entorno (los
puntos de la malla). La herramienta que nos proporciona tales fórmulas,
denominadas de “diferencias finitas", es el desarrollo de Taylor de una
función en un punto. En primer lugar hallemos la fórmula de aproximación
de la primera derivada:
1
y(t + h) = y(t) + y (t)h + y (ξ)h2 ,
2

ξ ∈ [t, t + h],

donde hemos utilizado la fórmula del resto de Cauchy. Despejando y (t) de
la ecuación anterior podemos hallar su valor
y (t) =

y(t + h) − y(t) 1
− y (ξ)h,
h
2

de donde obtenemos la aproximación
y (t) ≈

y(t + h) − y(t)
.
h

La fórmula anterior se denomina diferencia progresiva de la primera
derivada. Obsérvese que el error de la aproximación es proporcional a h,
que lo expresaremos diciendo que es una aproximación de primer orden.
Cuando interese poner de manifiesto el orden de aproximación omitiremos
el resto de Cauchy escribiendo simplemente
y (t) =

y(t + h) − y(t)
+ O(h),
h

donde el término O(h) se refiere a que el término proporcional a h está
acotado por un múltiplo constante de h cuando h tiende a cero. Realizando
el desarrollo de Taylor de y(t − h) y procediendo de forma similar se obtiene
una nueva fórmula de aproximación para y (t), pero esta vez en función de
los valores de u en el nodo t y t − h,
y (t) =

y(t) − y(t − h)
+ O(h).
h

En este caso, la fórmula aproximación obtenida se denomina diferencia
regresiva de la primera derivada. Las diferencias progresivas y regresivas
son aproximaciones de primer orden a la primera derivada en t. Pero no son
6

éstas las únicas posibilidades para aproximar la primera derivada. Consideremos
los siguientes desarrollos de Taylor:
( )
1
y(t + h) = y(t) + y (t)h + y (t)h2 + O h3 ,
2
( )
1
y(t − h) = y(t) − y (t)h + y (t)h2 + O h3 ,
2
donde el resto de Taylor es proporcional a h3 . Si restamos las formulas
anteriores obtenemos
( )
y(t + h) − y(t − h) = 2y (t)h + O h3 ,
de donde se obtiene fácilmente
y (t) =

y(t + h) − y(t − h)
+ O(h2 ).
2h

Luego he aquí otra fórmula de aproximación a la primera derivada en t,
pero en este caso de segundo orden, denominada diferencia central de
la primera derivada.
Tratemos de hallar ahora una aproximación a la segunda derivada en un
punto t. Tengamos en cuenta los siguientes desarrollos de Taylor:
( )
1
1
y(t + h) = y(t) + y (t)h + y (t)h2 + y (3) (t)h3 + O h4 ,
2
6
( )
1
1
y(t − h) = u(t) − y (t)h + y (t)h2 − y (3) (t)h3 + O h4 .
2
6

(1.2)

Si en lugar de restar, los sumamos deducimos la identidad
( )
y(t + h) + y(t − h) = 2y(t) + y (t)h2 + O h4 ,
de donde podemos despejar sin dificultad y (t),
y (t) =

y(t + h) − 2y(t) + y(t − h)
+ O(h2 ).
2
h

Despreciando el término O(h2 ) hemos obtenido una aproximación de orden
2 para la segunda derivada de la función y en el punto t. Tal aproximación
se denomina diferencia central de la segunda derivada. Para obtener
aproximaciones de derivadas de orden superior tendríamos que proceder
de forma análoga, y necesitaríamos evaluar la función en más puntos
del entorno. Observemos que para aproximar la primera derivada hemos
necesitado evaluar la función en dos puntos; para aproximar la segunda
derivada hemos evaluado la función en tres puntos. En general, aproximar
la derivada n-ésima necesitaríamos evaluar la función en al menos n + 1
puntos distintos.
7

1.2.

Método de Euler

Nuestra meta consiste en calcular una aproximación a la única solución
para el problema de valor inicial (1.1). En primer lugar, introducimos una
malla de puntos (puntos nodales) comenzando en el instante inicial t0 y
acabando en el tiempo final tN = t0 + α de la forma
t0 < t1 < t2 < · · · < tk < · · · < tN
donde la distancia entre un nodo y otro hk = tk+1 − tk esté suficientemente
cerca. Por comodidad, utilizaremos una separación uniforme entre los puntos
del mallado, esto es, hk = h fijo para todo k. Este requisito simplifica el
análisis sin afectar significativamente al estudio general para pasos no
uniformes. En este caso, el punto k-ésimo de la malla está dado por
tk = t0 +kh. El propósito es construir un algoritmo recursivo que proporcione
aproximaciones uk ≈ y(tk ) de la solución real en los puntos nodales k =
0, 1, 2, . . . elegidos. Los valores de y(t) en los puntos internodales se pueden
calcular mediante cualquier procedimiento de interpolación, por ejemplo, los
splines cúbicos. El polinomio de Taylor de primer orden permite aproximar
el valor de la función y(t) alrededor de cualquier nodo tk :
y(t) ≈ y(tk ) + (t − tk )y (tk ) = y(tk ) + (t − tk )f (tk , y(tk )),
donde hemos reemplazado la derivada y (t) por el término que aparece en
la ecuación (1.1) objeto de estudio. En particular, si tomamos t = tk+1 ,
podemos aproximar el valor del siguiente punto nodal de la malla
y(tk+1 ) ≈ y(tk ) + (tk+1 − tk )f (tk , y(tk )).

(1.3)

En la práctica solamente sabemos la aproximación uk al valor y(tk ), luego
estamos obligados a reemplazar uk por y(tk ) en la fórmula (1.3), por lo tanto
obtenemos el esquema iterativo:
uk+1 = uk + hf (tk , uk ).

(1.4)

Esta simple idea es el punto de partida del método de Euler. Este método
es el esquema numérico unipaso más simple para integrar una ecuación
diferencial ordinaria. Con el fin de comprender mejor el método de Euler
en la práctica, es conveniente testearlo con algún problema sencillo que
sepamos resolver, lo que permite estudiar el error de nuestra aproximación
con la solución real.
8
Método de Euler
2
sol aprox
sol exacta
1.8

1.6

1.4

1.2

1

0.8

0.6

0

0.2

0.4

0.6

0.8

1

1.2

Figura 1.1: y + u = 2 cos t,

1.2.1.

1.4

1.6

1.8

2

u(0) = 2

Análisis del error

Antes de continuar, examinaremos algunos aspectos relacionados con el
error en un esquema numérico. Un método numérico unipaso general se
puede escribir como
uk+1 = uk + hg(h, tk , uk ),

(1.5)

donde g es una función conocida que, mediante iteraciones, proporciona
la solución aproximada uk ≈ y(tk ) en el instante tk , siendo el tamaño del
paso h = tk+1 − tk (que por propósitos didácticos lo consideramos fijo). En
cualquier esquema de integración numérica hay distintos de errores que
clasificaremos en tres tipos:

Error local: Es aquel cometido en el paso actual del algoritmo. Incluso
cuando somos capaces de hallar el valor exacto de la solución uk =
y(tk ) en el instante tk , la aproximación numérica en el instante tk+1 es
ciertamente no exacta, y se introduce un error en el valor calculado
uk+1 ≈ y(tk+1 ). Esencialmente, hay dos subtipos de errores locales: el
error de truncamiento (o error de consistencia) y el error de
redondeo. El error de redondeo es consecuencia de la falta de precisión
de la aritmética computacional y, en ocasiones, puede ocasionar graves
alteraciones en la aproximación. El error de truncamiento se debe a
la aproximación que realizamos en el instante tk+1 a partir de su valor,
9

aún cuando sea exacto, en el instante tk . Debido a su relevancia, el
error de truncamiento será analizado cuidadosamente más adelante.
Error inicial: Se manifiesta cuando la condición inicial u0 ≈ y(t0 ) no se
puede calcular con exactitud debido, fundamentalmente, a las limitaciones
en la aritmética computacional. Por ejemplo, si y(t0 ) = π, necesariamente
tenemos que tomar una aproximación de π y, en consecuencia, introducimos
algún error inicial que dependerá del número de decimales exactos que
tomemos en π.
Error global: Es la diferencia entre el valor aproximado uk y el valor exacto
y(tk ) en el nodo tk . Los errores locales tienden a acumularlo, puesto que,
en general, no partimos del valor exacto en el instante tk−1 . De hecho,
ni siquiera podemos garantizar el valor exacto en la condición inicial
u0 ≈ y(t0 ) el el caso de que haya error inicial.
Resumiendo, conforme iteramos nuestro esquema numérico el error se
propaga en cada paso. Por simplicidad, pongámosnos en una situación
favorable y supongamos que la condición inicial es exacta u0 = y(t0 ), y que
los errores de redondeo no juegan un papel significativo (aunque uno debe
siempre tenerlos en cuenta en la computación). En ese caso el error local
juega un papel fundamental hasta tal punto que, bajo ciertas hipótesis, si
tenemos dominado el error local, podemos dominar también la propagación
del error global. Así pues, analizaremos el error local en detalle. Para medir
el error local que va de tk a tk+1 basta con comparar la solución exacta
y(tk+1 ) con su aproximación numérica bajo la hipótesis de que uk = y(tk ).
Naturalmente, en la práctica, este caso nunca se da, por lo que el error
local es una cantidad artificial que, por sí sola, no ilustra correctamente el
funcionamiento del método.

Definición 1.3 Se denomina error local de discretización de un
método numérico de la forma (1.5) al valor:
Ek+1 = (yk+1 − yk ) − hg(h, tk , yk ),

k = 0, 1, 2, . . .

1
El valor τk+1 = h Ek+1 se denomina error de truncación o error de
consistencia
10

Obsérvese que el error de discretización en el instante tk+1 nos proporciona
la diferencia entre el valor exacto de la solución en dicho punto yk+1 = y(tk+1 )
y el valor que se obtendría al aproximar este valor mediante el esquema
numérico (1.5) si se partiese de la solución exacta en el instante tk .
Es fácil deducir la ecuación
yk+1 − yk
1
− g(h, tk , yk ) = Ek+1 = τk+1 ,
h
h
así pues, el error de truncación (consistencia) es la cantidad por la cual
el método de discretización aplicado sobre el valor exacto en los puntos
nodales no satisface la ecuación diferencial (1.1).

Definición 1.4 Se dice que un esquema numérico de la forma (1.5)
es consistente con la ecuación diferencial ordinaria (1.1) si se
verifica que
N
∑
|Ek | = 0.
l´
ım
h→0

k=1

Además, diremos que el método es consistente de orden p si para
cualquier valor de h positivo e inferior a un cierto paso máximo h∗ ,
se cumple que
N
∑
|Ek | ≤ C · hp ,
k=1

donde C es una constante.

Observación 1.5 Observemos que si |Ek | ≤ M · hp+1 para todo k, entonces
el método es consistente de orden p. En efecto,
N
∑
k=1

|Ek | ≤ N M hp+1 =

α
M hp+1 = αM hp .
h

En la práctica, y siempre y cuando tengamos un orden de derivación
conveniente, podemos calcular el orden de consistencia de un esquema
numérico desarrollando en Taylor (respecto de h) la solución exacta, esto
es,
h2
h3
y(tk+1 ) = y(tk ) + hy (tk ) + y (tk ) + y (tk ) + · · ·
2
6
(1.6)
2
h3 (2)
h (1)
= yk + hf (tk , yk ) + f (tk , yk ) + f (tk , yk ) + · · ·
2
6
11

donde hemos denotado
d (k−1)
[f
(t, y)],
dt
Por ejemplo, los primeros términos son
f (k) (t, y) =

f (0) (t, y) = f (t, y).

d
∂f
∂f
[f (t, y)] =
(t, y) + f (t, y) (t, y),
dt
∂t
∂y
2
d
∂ f
∂f
∂f
f (2) (t, y) = [f (1) (t, y)] = 2 (t, y) +
(t, y) (t, y)
dt
∂t
∂t
∂y
)
((
)2
∂ 2f
∂ 2f
∂f
+ f (t, y)
(t, y) + 2
(t, y) + f (t, y)2 2 (t, y),
∂y
∂t ∂y
∂y

f (1) (t, y) =

f

(3)

(
)2
∂ 3f
∂f
∂ 2f
∂f
∂ 2f
∂f
∂f
(t, y) = 3 (t, y) + 3 (t, y)
(t, y) +
(t, y) 2 (t, y) +
(t, y)
(t, y)
∂t
∂t
∂t ∂y
∂y
∂t
∂t
∂y
((
)3
(
))
∂f
∂ 2f
∂f
∂f
∂ 2f
∂ 3f
f (t, y)
(t, y) + 5
(t, y) (t, y) + 3
(t, y) 2 (t, y) + 2 (t, y)
∂y
∂t ∂y
∂y
∂t
∂y
∂t ∂y
)
(
3
∂ 2f
∂ 3f
∂f
3∂ f
2
(t, y) + f (t, y)
(t, y)
f (t, y) 4 (t, y) 2 (t, y) + 3
∂y
∂y
∂t ∂y 2
∂y 3

Por otra parte, desarrollamos en Taylor la función g(h, t, y) respecto de
la variable h alrededor del punto 0
g(h, t, y) = g(0, t, y) + h

∂g
h2 ∂ 2 g
(0, t, y) +
(0, t, y) + · · ·
∂h
2 ∂h2

(1.7)

Finalmente, utilizando (1.6) y (1.7) obtenemos:
Ek+1 = (yk+1 − yk ) − hg(h, tk , yk )

(
)
h2
∂g
(1)
= h (f (tk , yk ) − g(0, tk , yk )) +
f (tk , yk ) − 2 (0, tk , yk )
2
∂h
(
)
(
)
3
2
4
h
∂ g
h
∂ 3g
(2)
(3)
f (tk , yk ) − 3 2 (0, tk , yk ) +
f (tk , yk ) − 4 3 (0, tk , yk ) + . . .
6
∂h
24
∂h
(1.8)
Así pues, bajo condiciones de regularidad convenientes sobre las derivadas,
el orden de consistencia del esquema numérico será de orden p siempre y
cuando
∂ pg
∂ (m) g
(0, tk , yk ), m < p, f p (tk , yk ) = (p + 1) p (0, tk , yk ),
∂h(m)
∂h
ya que, en ese caso, el error de discretización tiene orden p + 1.
f (m) (tk , yk ) = (m + 1)

Ejemplo 1.1 En el método de Euler uk+1 = uk + hf (tk , uk ) se verifica que g(h, tk , yk ) =
∂g
f (tk , yk ), de donde g(0, tk , yk ) = f (tk , yk ) y ∂h (0, tk , yk ) = 0. Entonces el método de Euler
es de orden de consistencia 1 (a menos que f (1) (t, y) = 0).
12

Definición 1.6 Dado un método numérico de la forma (1.5), se
denomina error del método la diferencia ek = yk − uk (k=0,1,. . . ,N).
Se dice que el método es convergente cuando
(
)
l´
ım sup {|ek |} = 0.
h→0

0≤k≤N

Diremos que el método es convergente de orden p si se verifica:
sup {|ek |} ≤ K · hp .
0≤k≤N

En principio, el error de consistencia y el error del método son conceptos
independientes. De hecho la propiedad de consistencia, por lo general, suele
ser más fácil de constatar que la convergencia. Mostraremos que, bajo
hipótesis adecuadas, la consistencia de orden p implica la convergencia de
orden p. Consideremos un método genérico unipaso uk+1 = uk + hg(h, tk , uk )
que trata de aproximar la solución de la ecuación (1.1). Si conocemos el
valor exacto yk en el instante tk , entonces el valor exacto en el intante tk+1
es
yk+1 = yk + hg(h, tk , yk ) + Ek+1 ,
siendo Ek+1 el error de discretización. Restando esta última expresión al
esquema numérico que aproxima a la ecuación obtenemos:
yk+1 − uk+1 = yk − uk +h (g(h, tk , yk ) − g(h, tk , uk )) + Ek+1 .
ek+1

ek

Ahora tomamos valor absoluto
|ek+1 | ≤ |ek | + h · |g(h, tk , yk ) − g(h, tk , uk )| + |Ek+1 |.
Asumamos que g(h, t, y) es continua en t y h, y lipschitziana en la variable
y con constante de Lipschitz L, que generalmente se relaciona con la
constante de Lipschitz para f . Entonces
|ek+1 | ≤ |ek | + hL|yk − uk | + |Ek+1 | = (1 + Lh)|ek | + |Ek+1 |.

(1.9)

Necesitamos el siguiente lema técnico para continuar acotando el error.
13

Lema 1.7
Sea L > 0 una constante y sean {ak }N y {bk }N
k=0
k=1
sucesiones no-negativas satisfaciendo
ak+1 ≤ (1 + Lh)ak + bk+1 ,

k = 0, 1, . . . , N − 1,

h > 0.

Entonces se verifica la desigualdad:
L(tk+1 −t0 )

ak+1 ≤ e

a0 +

k
∑

eL(tk+1 −ti+1 ) bi+1 ,

i=0

donde tk = t0 + kh, k = 0, 1, . . . , N .

Aplicamos el Lema 1.7 a nuestro caso particular; A = L, ak = |ek | y
bk = |Ek |, entonces:
|ek+1 | ≤ eL(tk+1 −t0 ) · |e0 | +

k
∑

(
≤ eL(tk+1 −t0 )

|e0 | +

≤L(tk+1 −t0 )

eL(tk+1 −ti+1 ) |Ei+1 |

i=0
N
∑

)
|Ek | .

k=1

Si asumimos que el error inicial e0 = 0 y que el método es consistente de
orden p, concluimos que
|ek+1 | ≤ eL(tk+1 −t0 ) Chp = K · hp .
Así pues, bajo hipótesis convenientes, hemos probado que si el esquema
numérico tiene orden p como medida de error local, entonces el error global
está acotado por un múltiplo de hp . En otras palabras, si suponemos que
no hay errores de redondeo ni error inicial, el valor calculado uk y la solución
real y(tk ) en el instante tk se puede acotar por:
|y(tk ) − uk | ≤ K · hp ,
donde la constante K > 0 puede depender del tiempo tk y la solución
particular y(t). En resumen, cuanto más alto es el orden, más preciso será
nuestro esquema numérico, y el paso se puede elegir más grande para
conseguir la precisión deseada a la solución real. Sin embargo, a mayor
14

orden, se requieren mayores esfuerzos computacionales en cada paso. Luego
se debe tratar de equilibrar el orden del método con la elección del paso de
forma que el balance total sea óptimo.
Como consecuencia, el siguiente resultado nos proporciona una cota
para el error en el método de Euler en el caso de que no hayan errores
de redondeo, esto es, si suponemos que podemos realizar los cálculos con
precisión infinita.

Teorema 1.8 Sea F una función continua lipschitziana respecto
de la segunda variable, esto es, f (t, x)−f (t, y) ≤ L|x−y| , con t ∈ [t0 , t0 +
α], x, y ∈ R y donde L es una constante real positiva. Supongamos
además que la solución y es de clase C 2 en [t0 , t0 + α] y que existe una
constante M > 0 tal que |y (t)| < M . Entonces
|y(tk ) − uk | ≤

)
hM ( L(tk −t0 )
e
−1 .
2L

No obstante, sabedores de que la influencia del error de redondeo puede
llegar a ser notable bajo ciertas circunstancias, sería interesante saber como
afectan los errores de redondeo al error global. En la práctica el análisis
de la repercusión del error de redondeo es bastante complicado, pero en el
caso del método de Euler y simulando la misma técnica que se utiliza en
la demostración del Teorema 1.8 se demuestra la siguinte acotación.
15

Teorema 1.9 Sea f una función continua lipschitziana respecto
de la segunda variable, esto es, f (t, x)−f (t, y) ≤ L|x−y| , con t ∈ [t0 , t0 +
α], x, y ∈ R y donde L es una constante real positiva. Supongamos
además que existe una constante M > 0 tal que |y (t)| < M , y que en
cada paso el error de redondeo al evaluar el método de Euler es εk .
Entonces
(
)
)
hM
ε ( L(tk −t0 )
|y(tk ) − uk | ≤
+
e
− 1 + ε0 eL(tk −t0 ) ,
2L
hL
donde ε es una cota superior de εk y ε0 es el error de redondeo del
dato inicial.

La lectura esencial de este resultado es que el error no está acotado
ε
cuando h tiende a cero debido al factor hL . Por tanto los resultados obtenidos
son poco fiables para pasos cuya longitud es menor que un cierto umbral.
El umbral viene dado por el valor de h que minimiza la expresión
hM
ε
+
,
2L
hL
que tomando la primera derivada e igualando a cero obtenemos el valor
√
2ε
óptimo h ≈ M . En cualquier caso debe tenerse en cuenta que los errores
de redondeo afectan solamente cuando los pasos son muy pequeños.

Sistemas de ecuaciones
Consideremos ahora el sistema de ecuaciones bidimensional
dx
= f (t, x, y) ,
dt
dy
.
= g (t, x, y) ,
dt
x (t0 ) = x0 , y (t0 ) = y0

(1.10)

Tanto la definición de solución como los resultados de existencia y
unicidad de soluciones son similares al caso de una ecuación, por lo que
pasaremos directamente al estudio de los métodos numéricos.
16

Usando, al igual que antes
dx
x (t + h) − x (t)
(t) ≈
,
dt
h
y (t + h) − y (t)
dy
(t) ≈
dt
h
obtenemos el método de Euler:
uk+1 = uk + hf (tk , uk , vk ) ,
vk+1 = vk + hg (tk , uk , vk ) ,
k = 0, 1, 2, ..., N − 1,
donde uk ≈ x (tk ) , vk ≈ y (tk ) .
En el caso general de un sistema de n ecuaciones
dy1
= f1 (t, y1 , y2 , ..., yn ) ,
dt
.
.
.
.
dyn
= fn (t, y1 , y2 , ..., yn ) ,
dt
y1 (t0 ) = y0 , y2 (t0 ) = y2 , ..., yn (t0 ) = yn ,
el esquema resultante sería el siguiente:
u1,k+1 = u1,k + hf1 (tk , u1,k , ..., un,k ) ,
.
.
.
un,k+1 = un,k + hfn (tk , u1,k , ..., un,k ) ,
k = 0, 1, 2, ..., N − 1.

Ejemplo 1.2 Resolvamos el sistema
x = x + 2y,
y = 3x + 2y
x (0) = 6, y (0) = 4,
en el intervalo [0, 0,04] con h = 0,02.
Solución.u1 = 6 + 0,02 ∗ (6 + 2 ∗ 4) = 6. 28,
v1 = 4 + 0,02 ∗ (3 ∗ 6 + 2 ∗ 4) = 4. 52,

(1.11)
17

u2 = 6,28 + 0,02 ∗ (6,28 + 2 ∗ 4,52) = 6. 586 4,
v2 = 4,52 + 0,02 ∗ (3 ∗ 6,28 + 2 ∗ 4,52) = 5. 077 6.
Como la solución exacta de este problema es x (t) = 2e−t + 4e4t , y (t) =
−2e−t + 6e4t obtenemos que
x (0,04) = 2e−0,04 + 4e4∗0,04 = 6. 615 622 362 ,
y (0,04) = −2e−0,04 + 6e4∗0,04 = 5. 119 486 348.
Por tanto, el error cometido es:
√
Error = (6. 586 4 − 6. 615 622 )2 + (5. 077 6 − 5. 119 486)2 = 5. 107 × 10−2 .

En lo que respecta a las ecuaciones de orden dos
x = f (t, x, x )
estas se convierten en un sistema bidimensional mediante el cambio de
variable y = x :
y = f (t, x, y) ,
x = y.

A partir de aquí empleamos los métodos vistos para sistemas. En general,
podemos tranformar una ecuación de orden n
(
)
y (n) = f t, y, y , ..., y (n−1)
en un sistema mediante los cambios de variable y1 = y, y2 = y , y3 = y , ..., yn =
y (n−1) :
y1 = y2 ,
y2 = y3 ,
.
.
.
yn = f (t, y1 , y2 , ..., yn ) .
18

Ejemplo 1.3 Dado el problema
x + 4x + 5x = 0, x (0) = 3, x (0) = −5
lo transformamos en
x = y,
y = −4y + 5x,
x (0) = 3, y (0) = −5.
1.2.2.

Ejemplos de sistemas

El péndulo

Consideramos una bola de masa m atada de una varilla rígida de longitud
l y masa despreciable que pende del techo. Las varilla puede oscilar con
libertad sobre el plano vertical, pero sometida a la fuerza de la gravedad (ver
la figura 1.2). Consideraremos primero por simplicidad que la resistencia
del aire se puede despreciar.
La variable x es el ángulo entre la varilla y el eje vertical. La ecuación
diferencial se puede obtener a partir del principio de la cantidad de movimiento
angular: la razón de cambio de la cantidad de movimiento angular es igual
al momento de la fuerza. Como
dx
Cantidad de movimiento angular=ml2 ,
dt
Momento de la fuerza=lF = −lmg sin (x) ,
tenemos la ecuación
d2 x
= −lmg sin (x) ,
dt2
g
d2 x
= − sin (x) .
2
dt
l
Si lo transformamos en un sistema poniendo y = x tendremos
ml2

dx
= y,
dt
g
dy
= − sin (x) .
dt
l
Los puntos fijos son
y = 0, sin (x) = 0
(0, 0) , (±π, 0) , (±2π, 0) , ..., (±nπ, 0) , ...
19

El punto (0, 0) es estable (se producen pequeñas oscilaciones alrededor del
punto), mientras que (π, 0) es inestable. Todos los demás son réplicas de
estos dos: (±2nπ, 0) son estables y (± (2n + 1) π, 0) son inestables.
El diagrama de fases de este sistema, calculado usando el método de
Euler (con g = 10, l = 50), se puede ver en la figura 1.3. Vemos que
alrededor de los puntos fijos (±2nπ, 0) existen soluciones periódicas. Éstas
corresponden al movimiento oscilatorio del péndulo, que aparecen cuando
la velociad inicial no es demasiado grande. En cambio, si la velocidad inicial
es grande, entonces el péndulo da vueltas completas, y el valor de la variable
x ya no está acotado.
Si tenemos en cuenta el rozamiento, entonces la ecuación es la siguiente:
d2 x
g
dx
= − sin (x) − c .
dt2
l
dt
Transformada en sistema quedaría
dx
= y,
dt
dy
g
= − sin (x) − cy.
dt
l
Ahora las soluciones se comportan de manera bastante diferente. Al
haber disipación de la energía (casi) todas las soluciones convergen en
espiral a uno de los puntos fijos (±2nπ, 0). Dependiendo de la velocidad
inicial (es decir, de la fuerza a la que hemos impulsado el péndulo) puede
dar varias vueltas antes de estabilizarse y comenzar a oscilar en torno a la
posición de equilibrio.
Usando los parámetros g = 10, l = 50, c = 1 hemos calculado varias
soluciones por el método de Euler.
En la figura 1.4 podemos ver la solución correspondiente a las condiciones
iniciales x0 = −2, y0 = 2. En este caso vemos que el péndulo oscila perdiendo
energía alrededor del punto (0, 0).
En la figura 1.5 tenemos la solución con condiciones iniciales x0 = 0,
y0 = 15. Al ser la velocidad inicial grande el péndulo da dos vueltas enteras
y después comienza a oscilar perdiendo energía alrededor del punto de
equilibrio (4π, 0) .
Finalmente, en la figura 1.6 las condiciones iniciales son x0 = 0, y0 = 40.
La velocidad inicial es tan grande que el péndulo da seis vueltas completas
20

antes de perder suficiente energía y estabilizarse oscilando alrededor del
punto de equilibrio (12π, 0) .

El sistema de Lorenz

El sistema de Lorenz es un modelo, bastante simplificado, del tiempo
atmosférico, que fue desarrollado por el meteorólogo Edwar N. Lorenz.
El sistema es el siguiente:












dx
= σ (y − x) ,
dt
dy
= ρx − y − xz,
dt
dz
= −βz + xy,
dt

donde σ, ρ, β son parámetros.
Se puede calcular sin dificultad que este sistema tiene tres puntos fijos
dados por:
) ( √
)
(√
√
√
β (ρ − 1), β (ρ − 1), ρ − 1 , − β (ρ − 1), − β (ρ − 1), ρ − 1 .
(0, 0, 0) ,
Este sistema tan simplificado no nos sirve para una predicción real de
la temperatura atmosférica. Sin embargo, se ha hecho famoso por otra
razón: dio pie a un nuevo campo de las matemáticas llamada caos. Para
determinados parámetros del sistema, las soluciones de no parecen seguir
ningún patrón fijo, formando curvas que giran alrededor de los puntos fijos
del sistema. Éstas permanecen en una zona acotada alrededor de los puntos
fijos, pero no permanecen mucho tiempo cerca de ninguno de ellos. Por
tanto, existe una región del espacio que atrae todas las soluciones, pero la
dinámica dentro de esta región no sigue una pauta fija, ni ningún patrón
reconocible. A ésta se le ha llamado Atractor Extraño.
La característica fundamental de los sistemas caóticos es la sensibilidad
a las condiciones iniciales. Dicho sin mucha precisión, esto significa que,
dada cualquier condición inicial, siempre existirá otra condición inicial, tan
cerca de ella como queramos, cuya solución diverge de la primera.
Ejemplos de tales sistemas incluyen la atmósfera terrestre, las placas
tectónicas, los fluidos en régimen turbulento y los crecimientos de población.
Usando el método de Euler vamos a obtener algunas soluciones de este
sistema para estudiar su comportamiento.
21

Vamos a ver primero algunas soluciones correspondientes a los siguientes
parámetros:
8
σ = 10, ρ = 10, β = .
3
Para estos parámetros no hay caos. Las soluciones numéricas muestran
que las soluciones convergen a uno de los puntos fijos a medida que el
tiempo avanza. En este caso los puntos fijos son
(√ √
) ( √
)
√
(0, 0, 0) ,
24, 24, 9 , − 24, − 24, 9 .
Por, ejemplo, si las condiciones iniciales son x0 = 1, y0 = 0, z0 = 2
obtenemos las soluciones que se ven en las gráficas ?? y ??. Vemos que la
(√ √
)
solución converge al punto fijo
24, 24, 9 .
Si probamos con una condición inicial más alejada, por ejemplo x0 =
1, y0 = 0, z0 = 50 la solución converge al mismo punto, como se ve en la
gráfica 1.7.
Si elegimos las condiciones iniciales x0 = −10, y0 = −1, z0 = 3 la solución
√
( √
)
converge al punto fijo − 24, − 24, 9 , como se ve en la figura 1.8.
El comportamiento que hemos visto en este ejemplo se mantiene mientras
el parámetro ρ se eencuentra entre los siguientes valores
1 < ρ < 24,74...
Si ρ < 1, entonces todas las soluciones convergen al punto fijo (0, 0, 0). En
cambio, si ρ > 24,74..., entonces aparecen las trayectorias caóticas.
Veamos las soluciones correspondientes a los siguientes parámetros:
8
σ = 10, ρ = 28, β = .
3
Las proyecciones de la solución correspondiente a las condiciones iniciales
x0 = 1, y0 = 0, z0 = 1 se puede ver en las gráficas 1.9, 1.10, 1.11.
En tres dimensiones la gráfica se puede ver en la figura 1.12.
Las soluciones presentan el mismo comportamiento aunque las condiciones
iniciales sean muy diferentes. Por ejemplo, si x0 = 1, y0 = −8, z0 = 90 la
solución en el plano XZ se ve en la figura 1.13. Se ve que la solución final
forma una figura parecida, que se encuentra en la misma zona.
22

Finalmente veremos algún ejemplo de la dependencia sensible a las
condiciones iniciales.
Vamos a coger la condición inicial x0 = 1, y0 = 0,0001, z0 = 1, que se
diferencia muy poco de la condición x0 = 1, y0 = 0, z0 = 1. En la figuras 1.14,
1.15 podemos observar que las soluciones en ambos casos son distintas,
aunque se comportan de forma parecida en lo que respecta a la forma del
dibujo. Esto se ve mucho más claro si comparamos una de las variables
en distintos momentos del tiempo. En la figura 1.16 podemos ver cómo
al principio las dos soluciones son muy parecidas, pero a partir de un
determinado momento las soluciones divergen y se comportan de forma
muy distinta. Podemos comparar los valores de las dos soluciones en la
siguiente tabla:
t
0,1
1
5
10
12
12,05
12,2
14
20
30
35

x0 (t)
1,1475
−3,7134
−8,2256
7,8278
3,2356
2,9522
4,9132
5,3422
2,9567
4,1114
−1,3976

x1 (t)
1,1475
−3,7135
−8,2239
7,8793
3,8000
3,7479
6,5235
−8,4479
−11,0626
3,0029
4,5331

Diferencia: x0 (t) − x1 (t)
0
0,0001
−0,0017
−0,0514
−0,5644
−0,7957
−1,6103
13,7901
14,0193
1,1085
−5,9307
23

Figuras

Figura 1.2: Péndulo
24
2

1.5

1

dx/dt

0.5

0

−0.5

−1

−1.5

−2

−2

0

2

4

6

8

x

Figura 1.3: Diagrama de fases del péndulo

1.3.

El método de Heun y el método del punto medio

El método de Euler funciona, pero tiene varios inconvenientes: es un
método de baja precisión que necesita de pasos temporales muy pequeños
para alcanzar resultados aceptables, además converge lentamente hacia la
solución. Conocidas las limitaciones del método de Euler vamos a presentar
una batería de esquemas numéricos, comenzando por el método de Heun,
que mejorarán gradualmente su eficiencia. Una de las claves para diseñar
algoritmos más sofisticados es replantear el principio teórico sobre el que

10
25
5

4

3

dx/dt

2

1

0

−1

−2

−3
−2

−1.5

−1

−0.5

0

0.5

1

x

Figura 1.4: Péndulo con rozamiento, x0 = −2, y0 = 2

se sustenta el método de Euler (que consistía en la aproximación de las
derivadas por diferencias finitas) por otro (equivalente) que intercambie la
derivación por integración. La prueba de la existencia y unicidad para una
ecuación diferencial de primer orden se basa en su reformulación como una
ecuación integral, concretamente obtenemos el siguiente resultado.

1.5
26
16

14

12

10

dx/dt

8

6

4

2

0

−2

−4

0

2

4

6

8

10

12

x

Figura 1.5: Péndulo con rozamiento, x0 = 0, y0 = 15

Proposición 1.10

La solución y(t) del problema de valor inicial
y (t) = f (t, y(t)),

y(t0 ) = y0

coincide con la solución de la ecuación integral
∫ t
y(t) = y(t0 ) +
f (s, y(s))ds.
t0

(1.12)

14
27
40

35

30

25

dx/dt

20

15

10

5

0

−5

0

5

10

15

20
x

25

30

35

Figura 1.6: Péndulo con rozamiento, x0 = 0, y0 = 40

La prueba de este resultado es una aplicación inmediata del Teorema
Fundamental del Cálculo, que se obtiene integrando ambos términos de la
ecuación diferencial:
∫ t
∫ t
y(t) − y(t0 ) =
y (s)ds =
f (s, y(s))ds.
t0

t0

Este resultado sugiere reconsiderar métodos numéricos que se centren
en la resolución de la ecuación integral. Hay numerosas razones por las que
se prefiere considerar la ecuación integral (1.12) en lugar de la ecuación
diferencial. En general, la derivación tiene un comportamiento peor que
la integración; en muchas ocasiones, la derivada de funciones con buenas
propiedades pueden tener un mal carácter, en cambio, las integrales de

40
28
50

45

40

35

z

30

25

20

15

10

5

0
−1

0

1

2

3

4
x

5

6

7

8

9

Figura 1.7: Sistema de Lorenz, Proyección XZ, x0 = 1, y0 = 0, z0 = 50, σ = 10, ρ =
10, β = 8
3

funciones que poseen un mal comportamiento se suavizan. Por otra parte,
observemos que la ecuación integral no requiere de ninguna condición inicial
adicional.
Partiremos de la ecuación integral (1.12) en cada subintervalo [tk , tk+1 ]
∫

tk+1

f (s, y(s))ds,

y(tk+1 ) = y(tk ) +
tk

de tal forma que podemos calcular el valor de la solución en el punto tk+1 a
partir del valor en tk , más la integral a lor largo del subintervalo. Obsérvese
que, en particular, si aproximamos la integral en cada subintervalo por la
regla del punto inicial
∫

tk+1

tk

f (s, u(s))ds ≈ (tk+1 − tk )f (tk , y(tk )) = hf (tk , y(tk )),
29
13

12

11

10

z

9

8

7

6

5

4

3
−10

−9

−8

−7

−6
x

−5

−4

−3

Figura 1.8: Proyección XZ, x0 = −10, y0 = −1, z0 = 3, σ = 10, ρ = 10, β =

−2

8
3

obtenemos de nuevo la aproximación numérica del método de Euler
y(tk+1 ) ≈ y(tk ) + hf (tk , y(tk )),
lo que arroja una reinterpretación equivalente. Este punto de vista pone
en evidencia la tosquedad del método de Euler, puesto que se utiliza una
aproximación de la integral que geométricamente representa el área del
rectángulo de anchura h y altura f (tk , y(tk )), lejos ésta de ser una estimación
precisa de la integral. Es sabido por el lector que existen métodos mucho
más sofisticados de integración numérica que aplicados a este enfoque sin
duda proporcionarán algoritmos por lo menos más precisos, estaría por ver
si además serían más eficientes computacionalmente. Por el momento
comenzaremos por la aproximación numérica que proporciona el método
del trapecio, que aproxima la integral mediante el área del trapecio que
se obtiene al unir los puntos f (tk , y(tk )) y f (tk+1 , y(tk+1 )),
∫ tk+1
1
f (s, y(s))ds ≈ h (f (tk , y(tk )) + f (tk+1 , y(tk+1 ))) .
2
tk
30
30

20

y

10

0

−10

−20

−30
−20

−15

−10

−5

0

5

10

15

20

25

x

Figura 1.9: Sistema de Lorenz, Proyección XY, x0 = 1, y0 = 0, z0 = 1, σ = 10, ρ =
28, β = 8
3

La aproximación del valor actualizado que obtenemos en este caso es:
1
y(tk+1 ) ≈ y(tk ) + h (f (tk , y(tk )) + f (tk+1 , y(tk+1 ))) ,
(1.13)
2
lo que da lugar a un esquema implícito, puesto que el valor actualizado
y(tk+1 ) aparece en los dos términos de la ecuación. El principal problema
que encontramos con este algoritmo es que si la función f es complicada
puede quedar una ecuación implícita compleja no lineal donde no sea
posible despejar explícitamente el valor y(tk+1 ). En ese caso debemos recurrir
a metodos numéricos de resolución de ecuaciones no lineales como el
método de Newton, etc. Otra alternativa (que se conoce como métodos
predictor-corrector) consiste en sustituir, en el lado derecho de la ecuación (1.13),
el valor y(tk+1 ) por una aproximación obtenida por otro método explícito,
por ejemplo el de Euler,
y(tk+1 ) ≈ pk+1 = y(tk ) + hf (tk , y(tk )),
31
60

50

z

40

30

20

10

0
−30

−20

−10

0
y

10

20

Figura 1.10: Sistema de Lorenz, Proyección YZ, x0 = 1, y0 = 0, z0 = 1,
28, β = 8
3

30

σ = 10, ρ =

y obtenemos finalmente la aproximación
1
y(tk+1 ) ≈ uk+1 = yk + h[f (tk , yk ) + f (tk + h, pk+1 )]
2
1
= yk + h[f (tk , yk ) + f (tk + h, yk + hf (tk , yk ))]
2
El esquema numérico resultante es
1
uk+1 = uk + h[f (tk , uk ) + f (tk + h, uk + hf (tk , uk ))],
2
que lo podemos desglosar es dos etapas:
pk+1 = uk + hf (tk , uk ),
h
uk+1 = uk + (f (tk , uk ) + f (tk+1 , pk+1 )) .
2
Este esquema se conoce como el método de Heun o método de Euler
mejorado. Mediante este planteamiento hemos ganado que el método sea
32
60

50

z

40

30

20

10

0
−20

−15

−10

−5

0

5

10

15

20

25

x

Figura 1.11: Proyección XZ, x0 = 1, y0 = 0, z0 = 1, σ = 10, ρ = 28, β =

8
3

explícito, pero ¿realmente mejoramos el orden de consistencia respecto al
método de Euler?
Ejercicio 1.1

Probar que el método de Heun es de segundo orden.

Notemos que si analizamos el error global nos aparecerá, al igual que en
ε
el método de Euler, el sumando adicional h , donde ε es el error máximo de
redondeo en cada paso, por lo que para mantener el orden de convergencia
1
necesitamos que ε ≤ ch3 . El valor de h óptimo será de la forma h = Cte ∗ ε 3 .
Mediante la técnica utilizada para obtener el método de Heun es posible
elaborar innumerables esquemas numéricos de acuerdo a dos formas de
actuación:
Cambiando el método numérico de aproximación de la integral.
Empleando métodos explícitos diferentes para la estimación intermedia
de pk+1 .
33

60

50

40

30

20

10

40
20

0
−20

0
−15

−10

−20
−5

0

5

10

15

20

25

−40

Figura 1.12: Sistema de Lorenz, x0 = 1, y0 = 0, z0 = 1, σ = 10, ρ = 28, β =

8
3

Por ejemplo, consideremos ahora la regla del punto medio, que aproxima
la integral mediante el área del rectángulo cuya altura es la imagen en el
punto medio tk + h del intervalo [tk , tk+1 ]
2
∫

tk+1
tk

h
h
f (s, y(s))ds ≈ hf (tk + , y(tk + )).
2
2

De nuevo, estimamos el valor de y(tk + h ) mediante el método de Euler
2
h
1
y(tk + ) ≈ pk+ 1 = y(tk ) + hf (tk , y(tk )).
2
2
2
El esquema numérico resultante adopta la expresión
h
1
uk+1 = uk + hf (tk + , uk + hf (tk , uk )),
2
2
que se conoce como método del punto medio y es un esquema de
segundo orden (compruébese).
34
90

80

70

60

z

50

40

30

20

10

0
−20

−15

−10

−5

0
x

5

10

15

20

Figura 1.13: Sistema de Lorenz, Proyección XZ, x0 = 1, y0 = 0, z0 = 1, σ = 10, ρ =
28, β = 8
3

Ejemplo 1.4 Resolvamos
t−y
2
y (0) = 1
y =

en el intervalo [0, 2] con h = 1 y h = 1 .
2
Solución.- La solución exacta de este problema es y (t) = t − 2 + 3e− 2 .
Vamos a compararla con la aproximación por el método de Heun.
t

Solución aproximada
1) h = 1 :
35
60
50

z

40
30
20
10
0
−30

−20

−10

0
y

10

20

30

−20

−10

0
y

10

20

30

60
50

z

40
30
20
10
0
−30

Figura 1.14: Sistema de Lorenz, Proyección YZ, σ = 10, ρ = 28, β = 8 ,
3
x0 = 1, y0 = 0, z0 = 1 versus x1 = 1, y1 = 0,0001, z1 = 1

p1 = 1 +
u1 = 1 +

1
2

1
= 2,

0−1
2

(

0−1
2

p2 = 0,875 +

+

1− 1
2
2

)
=

7
8

= 0,875,

1−0,875
2

= 0,937 5,
( 1−0,875 2−0,937 5 )
u2 = 0,875 + 1
+
= 1. 171 875.
2
2
2
y (2) = 3e−1 = 1. 103 638,
Error = |1. 103 638 − 1. 171 875| = 0,068 237.
2)h = 0,5 :
p1 = 1 + 0,5 ∗

0−1
2

= 0,75,
36
60
50

z

40
30
20
10
0
−20

−15

−10

−5

0

5

10

15

20

25

x

60
50

z

40
30
20
10
0
−25

−20

−15

−10

−5

0
x

5

10

15

Figura 1.15: Sistema de Lorenz, Proyección XZ, σ = 10, ρ = 28, β = 8 ,
3
x0 = 1, y0 = 0, z0 = 1 versus x1 = 1, y1 = 0,0001, z1 = 1

u1 = 1 +

0,5
2

∗

( 0−1
2

+

p2 = 0,843 75 + 0,5 ∗
u2 = 0,843 75 +

0,5
2

∗

0,5−0,75
2

)

= 0,843 75,

0,5−0,843 75
2

( 0,5−0,843 75
2

p3 = 0,831 054 687 5 + 0,5 ∗
u3 = 0,831 054 687 5 +

0,5
2

∗

p4 = 0,930 511 474 6 + 0,5 ∗
u4 = 0,930 511 474 6 +

0,5
2

∗

= 0,757 812 5,
)
+ 1−0,757 812 5 = 0,831 054 687 5,
2

1−0,831 054 687 5
2

( 1−0,831 054 687 5
2

= 0,873 291 015 6,
)
+ 1,5−0,873 291 015 6 = 0,930 511 474 6,
2

1,5−0,930 511 474 6
2

( 1,5−0,930 511 474 6
2

= 1. 072 883 606,
)
+ 2−1. 072 883 606 = 1. 117 587 09.
2

Error=|1. 117 587 − 1. 103 638 | = 0,013 949.

20

25
37
25

20

15

10

x

5

0

−5

−10

−15

−20

−25

0

5

10

15

20

25

t

Figura 1.16: Sistema de Lorenz, σ = 10, ρ = 28, β = 8 ,
3
x0 = 1, y0 = 0, z0 = 1 versus x1 = 1, y1 = 0,0001, z1 = 1

Comparación de los errores:
0,068 237
Error (h = 1)
=
= 4. 9.
Error (h = 0,5)
0,013 949

Consideremos ahora el sistema de ecuaciones bidimensional
x (t) = f (t, x, y) ,
.
y (t) = g (t, x, y) ,
x (t0 ) = x0 , y (t0 ) = y0 .

30

35
38

El método de Heun para a este sistema quedaría de la siguiente forma:
qk+1 = xk + hf (tk , xk , yk ) ,
pk+1 = yk + hg (tk , xk , yk ) ,
h
xk+1 = xk + (f (tk , xk , yk ) + f (tk+1 , qk+1 , pk+1 )) ,
2
h
yk+1 = yk + (g (tk , xk , yk ) + g (tk+1 , qk+1 , pk+1 )) ,
2
k = 0, 1, 2, ..., N − 1,
donde xk

x (tk ) , yk

y (tk ) .

En el caso general de un sistema de n ecuaciones
y1 (t) = f1 (t, y1 , y2 , ..., yn ) ,
.
.
.
yn (t) = fn (t, y1 , y2 , ..., yn ) ,
y1 (t0 ) = y0 , y2 (t0 ) = y2 , ..., yn (t0 ) = yn ,

.

el esquema resultante sería el siguiente:
p1,k+1 = y1,k + hf1 (tk , y1,k , ..., yn,k ) ,
.
.
.
pn,k+1 = yn,k + hfn (tk , y1,k , ..., yn,k ) ,
h
y1,k+1 = y1,k + (f1 (tk , y1,k , ..., yn,k ) + f1 (tk+1 , p1,k+1 , ..., pn,k+1 )) ,
2
.
.
.
h
(fn (tk , y1,k , ..., yn,k ) + fn (tk+1 , p1,k+1 , ..., pn,k+1 )) ,
2
k = 0, 1, 2, ..., N − 1.

yn,k+1 = yn,k +

Ejemplo 1.5 Resolvamos el sistema
x = x + 2y,
y = 3x + 2y
x (0) = 6, y (0) = 4,
en el intervalo [0, 0,04] con h = 0,02.
Solución.q1 = 6 + 0,02 ∗ (6 + 2 ∗ 4) = 6. 28,
p1 = 4 + 0,02 ∗ (3 ∗ 6 + 2 ∗ 4) = 4. 52,
39

0,02
∗ (6 + 2 ∗ 4 + 6,28 + 2 ∗ 4,52) = 6. 293 2,
2
0,02
∗ (3 ∗ 6 + 2 ∗ 4 + 3 ∗ 6,28 + 2 ∗ 4,52) = 4. 538 8,
y1 = 4 +
2

x1 = 6 +

q2 = 6. 293 2 + 0,02 ∗ (6. 293 2 + 2 ∗ 4. 538 8) = 6. 600 616,
p2 = 4. 538 8 + 0,02 ∗ (3 ∗ 6. 293 2 + 2 ∗ 4. 538 8) = 5. 097 944,
0,02
∗ (6,293 2 + 2 ∗ 4,538 8 + 6,600 616 + 2 ∗ 5. 097 944) = 6. 614 873 04,
2
0,02
y2 = 4. 538 8 +
∗ (3 ∗ 6. 293 2 + 2 ∗ 4. 538 8 + 3 ∗ 6. 600 616 + 2 ∗ 5. 097 944) = 5. 118 349 36.
2

x2 = 6. 293 2 +

Como la solución exacta de este problema es x (t) = 2e−t + 4e4t , y (t) =
−2e−t + 6e4t obtenemos que
x (0,04) = 2e−0,04 + 4e4∗0,04 = 6. 615 622 362 ,
y (0,04) = −2e−0,04 + 6e4∗0,04 = 5. 119 486 348.
El error sería:
√
Error = (6. 614 873 04 − 6. 615 622 )2 + (5. 118 349 36 − 5. 119 486)2 = 1. 361 × 10−3 .

Ejercicio 1.2
Heun:

Resolver la siguiente ecuación diferencial por el método de
y = t2 − y, y(0) = 1,

Realizar los siguientes pasos:
1. Tomar h = 0,2 y realizar dos pasos. Luego tomar h = 0,1 y realizar
cuatro pasos.
2. Comparar la solución exacta y(t) = −e−t +t2 −2t+2 con las dos aproximaciones
en t = 0,4.
3. ¿Se comporta el error global de las aproximaciones como se espera
cuando h se divide entre dos?
(Sol: a) h = 0,2, y (0,4)
0,69488; h = 0,1, y (0,4)
0,2)=0.0052; Error(h = 0,1)=0.00126; c) Sí)

0,69094; b) Error(h =
40

Ejercicio 1.3 El modelo matemático de cierto circuito (condensador e
inductancia) es
Q + Q = sen (t) ,
Q (0) = 0, Q (0) = 0,
donde Q (t) representa la carga en el momento t.
1. Usar el método de Heun con h = 0,1 para determinar el valor de Q (0,2).
2. Calcular el error cometido sabiendo que la solución exacta es:
1
Q (t) = sin (t) − t cos (t) .
2
(Sol: Q (0,2)

1.4.

0,000998335, Q (0,2) = 0,001328, Error = 0,000 329 665 )

Métodos explícitos de Runge-Kutta

El método de Heun y el método del punto medio son casos particulares
de una familia general de métodos conocidos con el nombre de Runge-Kutta,
en honor a sus creadores Carle Runge y Martin Kutta a finales del siglo
XIX. La idea es generalizar los métodos que hemos presentado de acuerdo
al siguiente esquema numérico general:
uk+1 = uk + h

m
∑

ai f (tk,i , uk,i ),

(1.14)

i=1

donde cada tk,i denota un punto en el k-ésimo subintervalo [tk , tk+1 ] y uk,i ≈
y(tk,i ) se interpreta como una aproximación en el punto tk,i que se suele
calcular por una fórmula similar más simple del mismo tipo. Los parámetros
ai así como los parámetros que intervienen para calcular cada aproximación
intermedia uk,i se elige de modo que el método alcance el orden de consistencia
deseado.
Desarrollemos los principios teóricos que fundamentan el método.
Supongamos que tenemos la partición t0 < t1 < · · · < tN = t0 + α, y
deseamos calcular el valor actualizado de y en el punto tk+1 basándonos
en la ecuación integral
∫ tk+1
f (s, y(s))ds.
(1.15)
y(tk+1 ) = y(tk ) +
tk
41

Consideremos una sucesión de puntos nodales en el subintervalo [tk , tk+1 ]
tk ≤ tk,1 ≤ tk,2 ≤ · · · ≤ tk,r ≤ tk+1 ,
donde cada tk,i = tk + ci h con 0 ≤ ci ≤ 1, que actuarán como soporte para
las fórmulas de integración que utilicemos a lo largo del procedimiento.
Estimaremos la integral mediante una fórmula de integración sobre la
partición anterior. De acuerdo con la ecuación integral (1.15), obtenemos
una aproximación de la forma
r
∑
yk+1 ≈ yk + h
ai f (tk,i , yk,i ),
i=1

donde ωi = hai son los pesos de la fórmula de cuadratura, y yk,i son los
valores de y en el punto tk,i . Para estimar el paso intermedio yk,i tendremos
en cuenta, de nuevo, alguna otra fórmula de integración sobre los puntos
nodales que quedan a la izquierda,
∫ tk,i
i−1
∑
yk,i = yk +
f (s, y(s))ds ≈ uk,i = yk + h
bij f (tk,j , yk,j ).
tk

j=1

donde hbi,j son los nuevos pesos ortorgados a los puntos tk,j con 2 ≤ j ≤ i−1.
Una vez elegidas las constantes ai , bij y ci , obtenemos el esquema explícito
recursivo:

uk,1 = uk ,




u = u + hb f (t , u ),
 k,2

k
21
k,1
k,1



u = u + hb f (t , u ) + hb f (t , u ),
k,3
k
31
k,1
k,1
32
k,2
k,2
(1.16)
.
.
.
 .
 .
.



∑

uk,r = uk + h r−1 brj f (tk,j , uk,j ),

j=1


∑r

u
tk,i = tk + ci h, 0 ≤ ci ≤ 1.
k+1 = uk + h
i=1 ai f (tk,i , uk,i ),
Cuando queremos implementarlo en la computadora, conviene reescribir el
esquema (1.16) del siguiente modo:

k1 = f (tk,1 , uk,1 ) = f (tk + c1 h, uk ),




k = f (t , u ) = f (t + c h, u + hb k ),
 2

k,2
k,2
k
2
k
21 1



k = f (t , u ) = f (t + c h, u + h(b k + b k )),
3
k,3
k,3
k
3
k
31 1
32 2
(1.17)
.
.
.
 .
 .
.



∑

kr = f (tk,r , uk,r ) = f (tk + cr h, uk + h r−1 brj kj ),

j=1



u
k+1 = uk + h (a1 k1 + a2 k2 + · · · + ar kr ) .
42

Utilizaremos la siguiente representación matricial para las constantes


c1 0
0 ··· 0


c2 b21 0 · · · 0 
. . .

. .
.. ... . 
.
.
. .


cr br1 br2 · · · 0 
a1 a2 · · · ar

Definición 1.11
método.

El número r se denomina número de etapas del

Observación 1.12
Habitualmente la constante c1 suele ser 0, y en ese caso k1 = f (tk , uk ).
La función g(h, tk , uk ) del término general (1.5) para el esquema de
Runge-Kutta es:
g(h, tk , uk ) = a1 k1 + a2 k2 + · · · + ar kr .
Debido a la facilidad, flexibilidad y diversidad en cuanto en el diseño de
los esquemas numéricos de Runge-Kutta según los parámetros fijados, estos
tienen un vasto alcance en una gran variedad de ecuaciones diferenciales
ordinarias, y son los más populares y extendidos en el software computacional.
El objetivo cuando se diseña un método de Runge-Kutta es elegir las
constantes ai , bij y ci adecuadas con el mínimo número de etapas posibles
para conseguir el orden de consistencia deseado. Si queremos conseguir
orden de consistencia 2 se necesitan al menos dos etapas, mientras que
si deseamos orden 4 necesitamos elaborar un método de cuatro etapas.
Se puede probar que no existen métodos de Runge-Kutta para los que el
número de etapas sea igual al orden del método cuando el método tiene
orden de consistencia mayor que 4. Así, para un método de orden 5 se
necesitan al menos r = 6 estapas; y para orden 7 al menos 10 etapas.
Como curiosidad, el método de orden 10 con menos etapas es para r = 17.
A continuación estudiamos los más conocidos según el número de etapas
y el orden de consistencia.
43

Métodos de una etapa
(
La matriz general del método de una etapa es

c1

)
0
. El esquema
a1

numérico general es
k1 = f (tk + c1 h, uk ),
uk+1 = uk + ha1 k1 = uk + ha1 f (tk + c1 h, uk ),
de donde g(h, tk , yk ) = a1 k1 = a1 f (tk + c1 h, yk ). Calculamos la derivada de
g(h, tk , yk ) respecto de h:
∂g
∂f
(h, tk , yk ) = c1 (tk , yk ).
∂h
∂t
∂g
Entonces f (0) (tk , yk ) = g(0, tk , yk ) cuando a1 = 1. Además f (1) (tk , yk ) = 2 ∂h (0, tk , yk )
cuando c1 = 1/2. En definitiva, cuando a1 = 1 y c1 = 0 obtenemos el método
de Euler. Además, el esquema tiene orden de consistencia 2 si ∂f = 0 (la
∂y
función f solo depende del tiempo) y c1 = 1/2.

Métodos de dos etapas
La matriz general del método es


c1 0 0


c2 b21 0  .
a1 a2
El esquema numérico general es
k1 = f (tk + c1 h, uk ),
k2 = f (tk + c2 h, uk + hb21 k1 )
= hf (tk + c2 h, uk + hb21 f (tk + c1 h, uk ),
uk+1 = uk + h(a1 k1 + a2 k2 ) = uk + a1 hf (tk + c1 h, uk )
+ a2 hf (tk + c2 h, uk + hb21 f (tk + hc1 , uk )).
Por tanto,
g(h, tk , yk ) = a1 k1 + a2 k2 = a1 f (tk + c1 h, yk ) + a2 f (tk + c2 h, yk + hb2,1 f (tk + hc1 , yk )),
Para obtener métodos de orden de consistencia 2 debemos igualar los
coeficientes de los desarrollos de Taylor, obteniendo las identidades
a1 + a2 = 1,

1
a1 c 1 + a2 c 2 = ,
2

1
a2 b21 = .
2
44

Este sistema tiene 5 incógnitas y tan solo 3 ecuaciones, por lo que admite
infinitas soluciones. Las soluciones particulares más conocidas son:


0 0
0


Método de Heun: 1 1
0  de donde resulta
1/2 1/2
k1 = f (tk , uk ),
1
uk+1 = uk + h( k1 +
2

k2 = f (tk + h, uk + hk1 ),
1
h
k2 ) = uk + (f (tk , uk ) + f (tk + h, uk + hf (tk , uk ))) .
2
2


0
0 0


Método del punto medio: 1/2 1/2 0, que sustituyendo en el esquema
0 1
general se obtiene
h
h
k2 = f (tk + , uk + k1 ),
2
2
h
h
= uk + hk2 = uk + hf (tk + , uk + f (tk , uk )).
2
2

k1 = f (tk , uk ),
uk+1

Se puede probar que no existen constantes tales que el orden del método
sea mayor que 2.

Métodos de más etapas
Podemos proseguir elaborando métodos y escogiendo constantes adecuadas
para obtener la consistencia de mayor orden para un mismo número de
etapas. En la práctica, los métodos de orden demasiado alto son bastantes
costosos computacionalmente debido a que hay que evaluar la función
demasiadas veces. Los métodos de Runge-Kutta de orden cuarto son unos
de los integradores de paso fijo más utilizados en Ingeniería para obtener
resultados precisos en problemas sin demasiada complejidad. Sin duda, el
método más popular cuando todavía se computaban los métodos numéricos
a mano viene dado en forma matricial por la matriz


0
0
0
0
0
1/2 1/2 0
0
0 




M = 1/2 0 1/2 0
0 .


 1
0
0
1
0 
1/6 2/6 2/6 1/6
45

El método desarrollado queda,
k1 = f (tk , uk ),
h
h
k2 = f (tk + , uk + k1 ),
2
2
h
h
k3 = f (tk + , uk + k2 ),
2
2
k4 = f (tk + h, uk + hk3 )
h
uk+1 = uk + (k1 + 2k2 + 2k3 + k4 ).
6
Ejemplo 1.6 Estimar el valor de la solución de la ecuación diferencial
y = t + y,

y(0) = 1

en el punto t = 0,2 mediante el método de Heun de orden 2 y el método de Runge-Kutta
de orden 4 utilizando un paso igual a h = 0,2.

Finalmente, si tenemos un sistema de ecuaciones diferenciales de la
forma
x = f (t, x, y),

y = g(t, x, y),

x(0) = x0 ,

y(0) = y0 ,

no resulta complicado adaptar el método de Runge-Kutta:

k1 = f (tk + c1 h, uk , vk ),




l = g(t + c h, u , v ),
1

k
1
k k



k = f (t + c h, u + hb k , v + hb l ),
 2
k
2
k
21 1 k
21 1




l2 = g(tk + c2 h, uk + hb21 k1 , vk + hb21 l1 ),




k = f (t + c h, u + h(b k + b k ), v + h(b l + b l )),
 3
k
3
k
31 1
32 2
k
31 1
32 2


l = g(tk + c3 h, uk + h(b31 k1 + b32 k2 ), vk + h(b31 l1 + b32 l2 )),
3 .

.
 .
.
 .
.




k = f (t + c h, u + h ∑r−1 b k , v + h ∑r−1 b l ),
 r
k
r
k

i=1 ri i
i=1 ri i k



lr = g(tk + cr h, uk + h ∑r−1 bri ki , vk + h ∑r−1 bri li ),


i=1
i=1


u
 k+1 = uk + h(a1 k1 + a2 k2 + · · · + ak kk ),




v
= v + h(a l + a l + · · · + a l ).
k+1

k

1 1

2 2

(1.18)

k k

La generalización a un sistema de m ecuaciones diferenciales es tediosa,
pero inmediata.
46

Ejercicio 1.4

Calcular la solución en t = 0,5 de la ecuación diferencial
y = −2(tan t)y,

y(0) = 1

mediante el método de Runge-Kutta de cuarto orden usando h = 0,5 y
h = 0,25. Comparar los resultados obtenidos entre sí y con la solución exacta
y(t) = cos2 t.
Ejercicio 1.5 Encontrar una solución de un método de tres etapas que
dé lugar a un método explícito de orden 3, con c1 = 0, c2 = c3 y a2 = a3 .
Ejercicio 1.6 Realizar en MatLab una rutina tal que dada una función
f (t, y), un paso h, una condición inicial y0 y un método de Runge-Kutta en
la forma matricial que lo caracteriza, ejecute el algoritmo de Runge-Kutta
N pasos.
Ejercicio 1.7 (Circuito de Chua)
(
)
dx
1
= α y − x + bx + (a − b) (|x + 1| − |x − 1|) ,
dt
2
dy
= x − y + z,
dt
dz
= −βy.
dt
Estudiar numéricamente (mediante el método de Runge-Kutta con h =
0,001) distintas soluciones, variando los parámetros y las condiciones iniciales.
Ver cuándo se produce un comportamiento caótico.
Por ejemplo, el caos aparece con los siguientes parámetros:
100
8
5
,a = ,b = ,
α = 9, β =
7
7
7
x0 = 0, y0 = 0, z0 = 0,6.
En cambio, si
100
8
5
,a = ,b = ,
7
7
7
= 0, y0 = 0, z0 = 0,6,

α = 3, β =
x0

entonces las soluciones convergen a un punto fijo en espiral.
Si
100
8
5
,a = ,b = ,
7
7
7
= 0, y0 = 0, z0 = 0,6,

α = 11, β =
x0

entonces las soluciones son espirales que se van alejando del origen cada
vez más (el módulo tiende a infinito).
47

Ejercicio 1.8 (Ecuación de Duffing)
x + cx − x + x3 = A cos (ωt) .
En forma de sistema nos queda:
{
x = y,
3
y = x − x − cy + A cos (ωt) .
Estudiar numéricamente (mediante el método de Runge-Kutta con h =
0,001) distintas soluciones, variando los parámetros y las condiciones iniciales.
Ver cuándo se produce un comportamiento caótico.
Por ejemplo, ver los siguientes casos:
1. c = A = 0. Las órbitas son trayectorias periódicas.
2. c = 0,2, A = 0. Las órbitas convergen en espiral a los puntos fijos.
3. c = 0,2, A > 0, ω = 1.
Probar con distintos valores de A : 0,2, 2, 20, 100, 300. Ver cómo el caos
aparece. Primero hay trayectorias periódicas simples, luego se hacen
más complicadas y después aparecen trayectorias caóticas.
Ejercicio 1.9 (Oscilador de Ueda)
x + cx + x3 = Asen (t) .
En forma de sistema nos queda:
{
x = y,
3
y = −x − cy + Asen (t) .
Estudiar numéricamente (mediante el método de Runge-Kutta con h =
0,001) distintas soluciones, variando los parámetros y las condiciones iniciales.
Ver cuándo se produce un comportamiento caótico.
Por ejemplo, ver los siguientes casos:
1. c = A = 0. Las órbitas son trayectorias periódicas.
2. c = 1, A = 0. Las órbitas convergen en espiral al punto fijo (0, 0).
48

3. c = 0,05, A > 0.
Probar con distintos valores de A : 0,05, 0,4, 7,5, 20. Ver cómo el caos
aparece. Primero hay trayectorias periódicas simples, luego se hacen
más complicadas y después aparecen trayectorias caóticas.
Ejercicio 1.10 (Atractor de Rossler)

 x = − (y + z) ,

y = x + 0,2y,

 z = 0,2 + xz − cz.
Estudiar numéricamente (mediante el método de Runge-Kutta con h =
0,001) distintas soluciones, variando los parámetros y las condiciones iniciales.
Ver cuándo se produce un comportamiento caótico.
Por ejemplo, ver los siguientes casos:
1. c = 2,5. Las órbitas convergen a una trayectoria periódica.
2. c = 5, c = 5,7, c = 8, c = 100. Hay trayectorias caóticas.
Capítulo 2

Métodos numéricos para
ecuaciones en derivadas
parciales (EDPs)
En este capítulo se desarrollan los métodos numéricos de resolución de
la ecuaciones en derivadas parciales. En particular, se estudian los métodos
explícito, implícito y de Crank-Nicholson, analizando el orden de precisión
en cada uno de ellos según el tamaño de los pasos espacial y temporal, así
como las condiciones de estabilidad que se requieren en cada caso.

2.1.

Clasificación de EDPs de segundo orden

Los modelos más importantes de ecuaciones en derivadas parciales de
segundo orden que aparecen en las aplicaciones a la Física y a la Ingeniería
se clasifican en tres tipos: elípticas, parábolicas e hiperbólicas. Dada una
EDPs de segundo orden
avxx + bvxy + cvyy + dvx + evy + f v = g,

(2.1)

diremos que (2.1) es:

Elíptica: si b2 −4ac < 0. El ejemplo clásico de ecuación elíptica es el problema
de Poisson
∇2 v(x, y) = g(x, y),

(x, y) ∈ Ω,

v|∂Ω = h,

donde ∇2 = ∂xx + ∂yy representa el operador laplaciano.
49
50

Parabólica: si b2 − 4ac = 0. El ejemplo clásico de ecuación parabólica es la
ecuación del calor
vt (x, t) = Dvxx (x, t),

D > 0,

Hiperbólica: si b2 − 4ac > 0. El ejemplo clásico de ecuación hiperbólica es
la ecuación de ondas
vtt (x, t) = c2 vxx (x, t).

2.2.

Métodos numéricos para problemas parabólicos

El ejemplo clásico de una ecuación parabólica sencilla y con mayor campo
de aplicación en una dimensión es la ecuación del calor o ecuación de
difusión. El problema es encontrar la función v(x, t) (que puede representar
una temperatura, concentración de una sustancia, etc.) que satisface el
problema

∂t v(x, t) = D∂xx v(x, t),






v(x, 0) = f (x),
v(0, t) = α(t),

0 < x < L,

0 ≤ x ≤ L,

v(L, t) = β(t),

t > 0,

(Condiciones iniciales)
t≥0

(2.2)

(Condiciones de frontera),

donde D es la constante de difusión y f (0) = α(0) y f (L) = β(0). La
ecuación del calor aparece en los modelos matemáticos relacionados con
problemas de difusión y Mecánica de Fluidos, y muchas de las propiedades
y comentarios que estudiaremos para ella se pueden trasladar a otras
ecuaciones parabólicas.
Esta ecuación modeliza la conducción del calor en una barra cilíndrica de
longitud L cuya sección transvesal es uniforme, pequeña y de un material
homogéneo. La función v (x, t) mide la temperatura de la barra en cada
momento del tiempo t > 0 y en cada punto del espacio x ∈ [0, L]. D > 0
es una constante que depende de las características físicas de la barra.
La solución de esta EDPs se expresa en forma de serie para ciertos tipos
de condiciones iniciales f (x). Nuestro objetivo en este tema es desarrollar
métodos numéricos que permitan obtener la solución del problema de forma
aproximada.
51

2.2.1.

Método explícito

Aplicaremos las fórmulas de las diferencias finitas sobre los puntos de
una malla uniforme rectangular (xj , tn ) con
xj = jh,

j = 0, 1, 2, . . . , J + 1,

tn = nk,

n = 0, 1, 2, . . .

donde h = ∆x es el tamaño del salto en la variable x y k = ∆t es el tamaño
n
del paso temporal. Utilizaremos la notación vj = v(xj , tn ) y un ≈ v(xj , tn )
j
para el valor exacto y la aproximación numérica en el punto nodal (xj , tn ),
respectivamente.
Puesto que la ecuación del calor es una ecuación de evolución, una
primera aproximación es plantearla como un esquema explícito de forma
progresiva en el tiempo, de modo que podamos calcular, para todo j, los
valores un+1 a partir de los valores en el instante de tiempo anterior un .
j
j
Calculemos las fórmulas en diferencias que utilizaremos para aproximar
2
∂t v(x, t) y ∂xx (x, t).
n+1
vj = v(xj , tn + k) = v(xj , tn ) + k∂t v(xj , tn ) +
n
= vj + k(vt )n +
j

k2 2
∂ v(xj , ξn )
2 tt

k2
vtt (xj , ξn ),
2

donde ξn ∈ (tn , tn+1 ). Por tanto:
∂t v(xj , tn ) = (vt )n =
j

n+1
n
vj − vj
k
+ vtt (xj , ξn ).
k
2

(2.3)

Por otra parte tenemos
h2
h3
h4
1
(vxx )n + (vxxx )n + vxxxx (ξj , tn ),
j
j
2
6
24
h2
h3
h4
n
2
= vj − h(vx )n + (vxx )n − (vxxx )n + vxxxx (ξj , tn ).
j
j
j
2
6
24

n
n
vj+1 = vj + h(vx )n +
j
n
vj−1

Sumando las dos identidades precedentes y despejando (vxx )n obtenemos la
j
fórmula en diferencias centrada
(vxx )n
j

n
n
n
vj−1 − 2vj + vj+1 h2
=
+ vxxxx (ξj , tn ).
h2
12

(2.4)

En virtud de las ecuaciones (2.3) y (2.4) llegamos a la identidad
(vt − D vxx )n =
j
donde
n
Rj

n+1
n
n
n
n
vj − vj
vj−1 − 2vj + vj+1
n
−D
+ Rj ,
k
h2

h2
k2
= vtt (xj , ξn ) − vxxxx (ξj , tn ) = O(k) + O(h2 ).
2
12

(2.5)
52

Teniendo en cuenta que v satisface la ecuacion (2.2) y despreciando los
términos O(h2 ) y O(k), la fórmula anterior sugiere el esquema en diferencias
finitas:
(
)
un+1 − un
D un − 2un + un
j
j
j−1
j
j+1
=
.
k
h2
Observación 2.1 Si v(x, t) es una solución de la ecuación en derivadas
parciales (2.2) y, por consiguiente, el lado izquierdo de la ecuación (2.5) se
anula, entonces v(x, t) satisface la ecuación en diferencias en primer orden
respecto de k y en segundo orden respecto de h. Por tanto, la ecuación (2.5)
muestra la medida de aproximación de la ecuación en diferencias finitas a
la ecuación en derivadas parciales (2.2). Pero debemos avisar que esto, en
general, no es una medida de aproximación de la solución de la ecuación en
diferencias finitas a la solución de la ecuación en derivadas parciales, sino
que para ello se necesitan condiciones adicionales que presentaremos más
adelante cuando realicemos el análisis del error.
Podemos despejar un+1 explícitamente en términos de los valores en el
j
paso temporal anterior
un+1 = un +
j
j

Dk n
(u − 2un + un ) = run + (1 − 2r)un + run ,
j
j+1
j−1
j
j+1
h2 j−1

donde r = Dk , j = 1, . . . , J y n = 0, 1, 2, . . .. Finalmente, imponiendo las
h2
condiciones iniciales y las condiciones de frontera queda la ecuación en
diferencias finitas:

un+1 = run + (1 − 2r)un + run , j = 1, 2, . . . , J, n = 0, 1, 2, . . . ,
 j
j−1
j
j+1

0
(2.6)
u = f (xj ), j = 0, 1, . . . , J + 1,
 j
 n

u0 = α(tn ) = αn , un = β(tn ) = β n , ∀n = 0, 1, 2, . . . .
J+1
Matricialmente podemos escribir el sistema recurrente anterior como

  n
 n+1  
1 − 2r
r
0
···
0
0
rα
un
u1
1

un+1   r
1 − 2r
r
···
0
0   un   0 


 2  
 2  
 n+1  
.
.  n  
 u   0 
.
. 

 u3   0
r
1 − 2r r
.
.
3
 . =
 .  +  . ,
.
.  .   . 
 .   .
..
..
..
.
.
.
.
.
 .   .
.
.
.  .   . 

 n+1  
 n  
uJ−1   0
0
···
r 1 − 2r
r  uJ−1   0 
rβ n
un
un+1
0
0
···
···
r
1 − 2r
J
J
que en forma compacta lo expresaremos por
u(n+1) = A · u(n) + b(n) ,
53

donde u(n) , b(n) ∈ RJ×1 y A ∈ RJ×J . Obsérvese que la matriz A de coeficientes
del sistema recursivo es tridiagonal.

Ejemplo 2.1 Hallar la solución de la ecuación del calor en el intervalo [0, T ] = [0, 10]
para una barra de longitud L = 10 dado que la temperatura inicial es cero, D = 1 y que
v (0, t) = 100, v (10, t) = 50. Usar h = 2, k = 0,1.
Solución.1) t = 0,1 :
u1 = 0 +
1

0,1
4

(0 − 2 ∗ 0 + 100) = 2. 5,

u1 = 0 +
2

0,1
4

(0 − 2 ∗ 0 + 0) = 0,

u1 = 0 +
3

0,1
4

(0 − 2 ∗ 0 + 0) = 0,

u1 = 0 +
4

0,1
4

(50 − 2 ∗ 0 + 0) = 1. 25.

2) t = 0,2 :
u2 = 2,5 +
1

0,1
4

(0 − 2 ∗ 2,5 + 100) = 4. 875,

u2 = 0 +
2

0,1
4

(0 − 2 ∗ 0 + 2,5) = 0,062 5,

u2 = 0 +
3

0,1
4

(1,25 − 2 ∗ 0 + 0) = 0,031 25,

u2 = 1,25 +
4

0,1
4

(50 − 2 ∗ 1,25 + 0) = 2. 437 5.

En el paso 99 obtenemos u99 = (100, 68,5809, 45,8036, 36,3011, 39,3871, 50,0000).
De aquí:
100) t = 10 :
u100 = 68,5809 +
1

0,1
4

(45,8036 − 2 ∗ 68,5809 + 100) = 68. 796 9,

u100 = 45,8036 +
2

0,1
4

(36,3011 − 2 ∗ 45,8036 + 68,5809) = 46. 135 4,

u100 = 36,3011 +
3

0,1
4

(39,3871 − 2 ∗ 36,3011 + 45,8036) = 36. 615 8,

u100 = 39,3871 +
4

0,1
4

(36,3011 − 2 ∗ 39,3871 + 50) = 39. 575 2.

La solución, a medida que el tiempo tiende a infinito converge a la recta
que une los puntos de la frontera (0, 100) y (10, 50). En la siguiente tabla
y gráficos podemos ver las soluciones numéricas correspondientes a varios
momentos del tiempo:
54

100
80
60
40
20
2

4

6

8

10

Figura 2.1: Ecuación del calor

x/t
0
2
4
6
8
10

0,1
100
2,5
0
0
1,25
50

5
100
53,4341
24,7168
17,4521
27,9807
50

10
100
68. 796 9
46. 135 4
36. 615 8
39. 575 2
50

50
100
89,5523
79,2755
69,2755
59,5523
50

100
100
89,9963
79,9940
69,9940
59,9963
50

150
100
89,99997
79,99995
69,99995
59,99997
50

100
80
60
40
20
2

4

6

Figura 2.2: Ecuación del calor

8

10
55

En la siguiente tabla tenemos los resultados (para el momento T = 10)
de aplicar el método con distintos pasos:
x
0
2
4
6
8
10

h = 0,5, k = 0,1
100
68,9029
46,1479
36,4898
39,456
50
x
0
2
4
6
8
10

h = 1, k = 0,5
100
69,9181
47,6968
37,9302
40,2958
50

h = 2, k = 2
100
71,875
48,4375
40,6250
40,6250
50

h = 2, k = 0,1
100
68. 796 9
46. 135 4
36. 615 8
39. 575 2
50

h = 1, k = 1
100
100150
99150
71100
52850
50

Vemos que en el caso de la última columna los resultados están muy
lejos de los correctos. En la siguiente tabla podemos ver que un pequeño
desfase en el cumplimiento de la condición tiene grandes consecuencias en
los resultados:

x
0
2
4
6
8
10

2.2.2.

h = 0,5, k = 0,13
T = 10,01
100
13,5211
−39,761
−45,191
−9,085
50

h = 0,5, k = 0,125
100
69,070
46,405
36,7316
39,598
50

Método implícito

Los algoritmos implícitos se emplean para evitar los problemas de estabilidad
que hemos visto en el caso anterior. Estos permiten utilizar pasos espaciales
56

pequeños (para obtener mejor precisión) sin necesidad de usar un paso
temporal excesivamente pequeño.
Las aproximaciones que usaremos para las derivadas serán similares a
las de antes. La diferencia estriba en que la aproximación la realizaremos
en el punto (xj , tn+1 ). Para la derivada temporal utilizaremos la diferencia
regresiva:
k2
n+1
n
vj = v(xj , tn+1 − k) = vj − k(vt )n+1 + (vtt )(xj , ξn ),
j
2
donde ξn ∈ (tn , tn+1 ). Entonces,
n+1
n
vj − vj
k
=
+ vtt (xj , ξn ).
k
2
Para la aproximación de la derivada segunda espacial se utilizará de nuevo
la diferencia central, pero evaluada en el punto (xj , tn+1 ), esto es,

(vt )n+1
j

(vxx )n+1
j

n+1
n+1
n+1
vj−1 − 2vj + vj+1
h2
+ vxxxx (ξj , tn+1 ).
=
h2
12

Así pues, obtenemos
n+1
n+1
n+1
n+1
n
vj − vj
vj−1 − 2vj + vj+1
n+1
(vt − D vxx )j =
−D
+ O(k) + O(h2 ).
(2.7)
k
h2
Si tenemos en cuenta que v satisface la ecuacion (2.2) y despeciamos los
términos O(h2 ) y O(k), la fórmula anterior sugiere el esquema en diferencias
finitas
(
)
D un+1 − 2un+1 + un+1
un+1 − un
j
j−1
j
j+1
j
=
.
k
h2
Mediante cálculos similares al esquema explícito, llegamos a la siguiente
ecuación en diferencias implícita:

−run+1 + (1 + 2r)un+1 − run+1 = un , j = 1, 2, . . . , J, n = 0, 1, 2, . . . ,

j
j−1
j
j+1

0
u = f (xj ), j = 0, 1, . . . , J + 1,
 j
 n

u0 = α(tn ) = αn , un = β(tn ) = β n , ∀n = 0, 1, 2, . . . .
J+1

(2.8)

Al escribir esta ecuación en forma matricial obtenemos

1 + 2r
−r
0

1 + 2r
−r
 −r

 0
−r
1 + 2r

 .
.
..
 .
.
.
.
 .

0
···
 0
0
0
···

···
···
−r
..
.
−r
···


  n   n+1 
0
r(α )
u
un+1
1
  n+1   1  
n
0   u 2   u2   0 

.   n+1   n  
.   u 3   u3   0 

. 
 .  =  .  +  . 
. 

 
 
..
.
.
.
.
.
.  .   .   . 

  n+1   n  
1 + 2r
−r  uJ−1  uJ−1   0 
r(β n+1 )
un
un+1
−r
1 + 2r
J
J
0
0
.
.
.
57

que la escribiremos por Q · u(n+1) = u(n) + b(n+1) .
Vemos pues que en cada paso n este método requiere un número mayor
de operaciones que en el algoritmo explícito, ya que tenemos que resolver un
sistema de ecuaciones. Sin embargo, es importante observar que la matriz
Q es tridiagonal, lo que permite resolver el sistema de forma muy eficiente.
Este tipo de sistemas requiere una cantidad de operaciones de orden O (J),
muy inferior al caso general, donde se necesita efectuar operaciones de
orden O (J 3 ) . Por tanto, el incremento en el número de operaciones por paso
va a ser pequeño. Además, como veremos más adelante, este incremento
en la cantidad de operaciones se ve ampliamente compensado por el hecho
de que no vamos a necesitar imponer un paso temporal pequeño, por lo
que el cómputo global de operaciones va a resultar mejor que en el método
explícito.
Un aspecto importante es saber si el sistema de ecuaciones obtenido
tiene una única solución. Eso lo sabremos al estudiar los valores propios de
la matriz Q, que son todos positivos. Por tanto, Q es invertible, el sistema
tiene una única solución y el método se puede implementar correctamente.

Ejemplo 2.2 Hallar la solución de la ecuación del calor en el intervalo [0, T ] = [0, 10]
para una barra de longitud L = 10 dado que la temperatura inicial es cero, D = 1 y que
v (0, t) = 100, v (10, t) = 50. Usar h = 2, k = 0,1.
Solución.
Tenemos que r =
r ∗ uj = 1,25.
5

0,1
4

= 0,025, 1 + 2r = 1,05, uj = 100, uj = 50, r ∗ uj = 2,5,
0
5
0

1) t = 0,1 :

1,05 −0,025
0
0
 −0,025 1,05 −0,025
0



0
−0,025 1,05 −0,025
0
0
−0,025 1,05

 1  
2. 382 32
u1
 u1   5. 742 97 × 10−2 

 2  
.
 2 =
−2 
 u3   2. 972 89 × 10 
1. 191 18
u1
4







u1
1
u1
2
u2
3
u1
4





 
 
=
 

2,5
0
0
1,25




,


Observamos que, a diferencia del método explícito, todos los valores de u han cambiado
y son distintos de cero ya en la primera iterada.
58

2) t = 0,2 :

1,05 −0,025
0
0
 −0,025 1,05 −0,025
0



0
−0,025 1,05 −0,025
0
0
−0,025 1,05
 1  

4. 653 82
u1

 u1  
0,167 59

 2  
.
 2 =
−2 
 u3   8. 770 87 × 10 
u1
2. 327 02
4







u1
1
u1
2
u2
3
u1
4





 
 
=
 

4. 882 32
0,057 429 7
0,029 728 9
2. 441 18




,


En el paso 99 obtenemos u99 = (100, 68,3262, 45,47296, 36,0324, 39,23398, 50,0000). De
aquí:
100) t = 10











1,05 −0,025
0
0
−0,025 1,05 −0,025
0
0
−0,025 1,05 −0,025
0
0
−0,025 1,05
 

u1
68. 544 1
1
u1   45. 804 9 


2 
=
.
2 
  36. 345 8 
u3
u1
39. 421 5
4







u1
1
u1
2
u2
3
u1
4





 
 
=
 

70. 826 2
45. 472 96
36. 032 4
40. 483 98




,


Al igual que en el anterior algoritmo, resumimos en la siguiente tabla las soluciones
numéricas correspondientes a varios momentos del tiempo:
x/t
0
2
4
6
8
10

0,1
100
2. 382 32
5. 742 97 × 10−2
2. 972 89 × 10−2
1. 191 18
50

5
100
52,9651
24,5002
17,3798
27,8062
50

10
100
68. 544 1
45. 804 9
36. 345 8
39. 421 5
50

50
100
89,5314
79,2417
69,2417
59,5313
50

100
100
89,99595
79,99345
69,99345
59,99595
50

150
100
89,99997
79,99994
69,99994
59,99997
50

Los resultados son similares a los obtenidos con el método explícito.
59

La gran ventaja de este método en relación al explícito reside en que es estable para
valores cualesquiera de k y h. Además, el algoritmo es convergente con la misma rapidez
que el algoritmo explícito, es decir, de orden O(k + h2 ). Por tanto, podemos reducir el
tamaño del paso h, y así obtener mejor precisión, sin necesidad de utilizar valores excesivamente pequeños de k. De esta forma conseguimos una buena precisión sin aumentar de
forma inaceptable el número de operaciones.
Veamos ahora qué resultados se obtienen con los pasos h = 1, k = 1 y h = 0,5,
k = 0,13 :

x
0
2
4
6
8
10

h = 0,5, k = 0,13
T = 10,01
100
68,6343
45,7749
36,1806
39,2908
50

h = 1, k = 1
100
67,4761
44,2870
34,9968
38,6295
50

A diferencia del método explícito, con estos parámetros obtenemos
resultados aceptables.
Aunque este método presenta claras ventajas con respecto al anterior
sigue sin ser un método completamente satisfactorio. La razón reside en
que, al ser el orden de convergencia O(k + h2 ), predomina el error temporal
sobre el espacial (al tener k menor orden), por lo que de poco nos sirve
disminuir el paso h con el objetivo de obtener mejor precisión. Fijémonos
en que para conseguir precisión h2 debemos escoger k ∼ h2 , con lo que nos
aparece el mismo problema que en el algoritmo explícito. Veamos pues un
método que no adolece de ninguno de estos problemas.

2.2.3.

Método de Crank-Nicholson

En el método anterior hemos apreciado que el error en el discretizado era
de primer orden en k y de segundo orden en h. En este epígrafe trataremos
de encontrar un método que mejore el anterior a segundo orden respecto de
k. Una idea para alcanzar este objetivo podría ser aproximar por la fórmula
de diferencia central de dos puntos la derivada temporal
(vt )n
j

n+1
n−1
vj − vj
+ O(k 2 ).
=
2k
60

La idea expuesta parece buena, pero desafortunadamente conduce a un
método numérico que es siempre inestable, por lo que no ha de utilizarse
nunca. Parece que la diferencia progresiva es la más adecuada, pero ésta se
puede ver también como una diferencia centrada en el punto intermedio,
esto es,
n+ 1
2

(vt )j

n+1
n
vj − vj
k2
k
+ O( ).
= vt (xj , tn + ) =
2
k
4

Ahora el problema reside en aproximar la derivada segunda espacial en
este punto intermedio tn + k . Estimaremos este valor utilizando una mezcla
2
ponderada de la derivada segunda en los nodos (xj , tn ) y (xj , tn+1 ),

n+ 1
2

(vxx )j

k
= vxx (xj , tn + ) ≈ (1 − θ)vxx (xj , tn ) + θvxx (xj , tn+1 ),
2
n+1
n+1
n+1
n
n
n
vj−1 − 2vj + vj+1
vj−1 − 2vj + vj+1
≈ (1 − θ)
+θ
,
h2
h2

donde θ ∈ [0, 1].
En definitiva la ecuación en derivadas parciales (2.2) se discretiza en el
punto (xj , tn + k/2) mediante el esquema numérico
un+1 − 2un+1 + un+1
un+1 − un
un − 2un + un
j
j−1
j−1
j
j+1
j
j+1
= D(1 − θ)
+ Dθ
.
k
h2
h2
Se puede probar que cuando θ = 1/2, el error en la discretización (error de
truncación) es de orden 2 en la variable temporal y de orden 2 en la variable
espacial, esto es, O(k 2 + h2 ).
En ese caso el método se denomina método de Crank-Nicolson y
adquiere al forma
2(un+1 − un ) = D
j
j

k
[(un − 2un + un ) + (un+1 − 2un+1 + un+1 )],
j+1
j
j−1
j−1
j
j+1
2
h

reordenando términos e imponiendo las condiciones iniciales y de frontera
obtenemos el esquema numérico

−run+1 + 2(1 + r)un+1 − run+1 = run + 2(1 − r)un + run , j = 1, . . . , J,
j+1
j
j−1
j−1
j
j+1
0
un+1 = αn+1 , un+1 = β n+1 , n ≥ 0,
u = fj , j = 0, 1, . . . , J, J + 1.
0

J+1

j

(2.9)
Matricialmente, el esquema anterior se escribe
61




2(1 + r)
−r
0
···
0
0
un+1
1


2(1 + r)
−r
···
0
0  un+1 
 −r

 2 
.
.
 0
 un+1 
.
.
−r
2(1 + r) −r
.
.

 3 

 . 
.
.
.
...
...
...

 . 
.
.
.
.
.
.

 . 

  n+1 
0
···
−r 2(1 + r)
−r  uJ−1 
 0
un+1
0
0
···
···
−r
2(1 + r)
J



  n
2(1 − r)
r
0
···
0
0
r(α + αn+1 )
un
1



2(1 − r)
r
···
0
0   un  
 r
0


 2  

 n  
.
.
 0
 u  
.
.

0
r
2(1 − r) r
.
.

 3  
,
=
 .  + 
.
.
.
.

..
..
..
.

 .  
.
.
.
.
.
.
.
.

.
.
.



 

 un  

0
0
···
r 2(1 − r)
r
 0

J−1
r(β n + β n+1 )
un
0
0
···
···
r
2(1 − r)
J
que de forma compacta se reescribe como
Q · u(n+1) = Q1 · u(n) + c(n) .

2.3.

Estabilidad, consistencia y convergencia

Sea u(n) = (un , un , . . . , un )T los valores nodales en el instante tn que se
1
2
J
obtienen al hacer correr un cierto esquema numérico
u(n+1) = Au(n) + b(n)

(2.10)

para obtener una aproximación numérica de una EDPs. Consideremos
n
n
v = (v1 , . . . , vJ )T los valores nodales en el tiempo tn de la solución exacta
y denotemos por e(n) = u(n) − v (n) el error cometido en la aproximación
numérica. Diremos que el método numérico es estable cuando Am esté
uniformemente acotada para todo k y m verificando mk ≤ T . En otras
palabras, cuando la diferencia entre los valores aproximados y los reales
permanezcan acotados en todo nivel del tiempo.
(n)

El que un esquema numérico sea consistente con un problema de
contorno significa, que para pasos en la discretización suficientemente
pequeños, la solución exacta del problema verifica el esquema numérico con
un error tan pequeño como se desee. Finalmente, para que un esquema sea
62

convergente se debe verificar que para una discretización suficientemente
fina, el error en en cada nodo pueda hacerse tan pequeño como se quiera
j
en cualquier paso del tiempo.

Definición 2.2
Un esquema en diferencias finitas de la
forma (2.10) que aproxima a una ecuación diferencial en derivadas
parciales es un esquema convergente en el tiempo t si
v (n) − u(n) → 0,
cuando h, k → 0, siempre y cuando (n + 1)k → t. Diremos que la
convergencia es de orden (p, q) si
v (n) − u(n) = O(hp ) + O(k q ).

Definición 2.3
Un esquema en diferencias finitas de la
forma (2.10) es consistente a una ecuación diferencial en derivadas
parciales si la solución v(x, t) satisface
v (n+1) = Av (n) + b(n) + kτ (n) ,

donde

τ (n) → 0,

cuando h, k → 0. Además, se dice que es consistente de orden (p, q)
si
τ (n) = O(hp ) + O(k q ).
La cantidad τ (n) se denomina error de truncamiento o error de
consistencia.

Observación 2.4
Tanto en la definición convergencia como en la de
consistencia, la norma · que utilizamos cambia conforme el paso h es
más pequeño, puesto que el espacio de vectores nodales crece en dimensión.
63

Definición 2.5
Diremos que un esquema numérico de la
forma (2.10) es estable si Am ≤ C, para todo k y n con mk ≤ T .

Consideremos un esquema en diferencias finitas dado matricialmente
por (2.10)
u(n+1) = Au(n) + b(n) .
Supongamos que v = v(x, t) es una solución exacta de ecuación (2.2) que
satisface la ecuación anterior salvo por un término (error residual) que
denotaremos por E (n) ,
v (n+1) = Av (n) + b(n) + E (n) .
Restando las dos ecuaciones anteriores obtenemos
v (n+1) − u(n+1) = A(v (n) − u(n) ) + E (n) .
Definimos el error global e(n) = v (n) − u(n) , entonces:
e(n+1) = Ae(n) + E (n)
= A(Ae(n−1) + E (n−1) ) + E (n)
= A2 e(n−1) + AE (n−1) + E (n)
= ...

...

= A(n+1) e(0) +

n
∑

Am E (n−m) .

m=0

Asumiremos dos condiciones: que no hay error inicial (e(0) = 0), y que
la norma de las potencias m-ésimas de la matriz A están uniformemente
acotada, esto es, Am ≤ C (estabilidad):

e

(n+1)

=
≤C

n
∑
m=0
n
∑

m

A E

(n−m)

≤

n
∑

Am

E (n−m)

m=0

E (m) .

m=0

Supongamos que nuestro esquema en diferencias finitas es consistente de
orden (p, q) con la EDPs. Entonces E (m) = kτ (m) , y para cada m = 0, 1, . . . , n
64

podemos encontrar una constante Km verificando τ (m) ≤ Km (hp + k q ).
Consideremos K(t) = m´x0≤m≤n Km . Por la propia construcción, se verifica
a
(m)
que τ
≤ K(t) para todo 0 ≤ m ≤ n, de donde concluimos:
e

(n+1)

≤ Ck

n
∑

τ (m) ≤ Ck(n + 1)K(t)(hp + k q ).

m=0

Pero cuando k → 0 entonces k(n + 1) → t, y así conseguimos convergencia de
orde (p, q). En definitiva, hemos probado parcialmente el célebre teorema
de Lax, que enunciamos de manera simplificada.

Teorema 2.6 (Lax) Un esquema numérico en diferencias finitas
del tipo (2.10) consistente a una EDPs es convergente si, y solo si,
es estable.
Apéndice A

Analisis numérico matricial
A.1.

Normas vectoriales

Para introducir nociones de consistencia y convergencia es necesario
utilizar normas vectoriales con la finalidad de medir el error de la aproximación.

Definición A.1
aplicación

Una norma en un espacio vectorial real V es una
·

:V →R

verificando:
(1)

u ≥ 0 para todo u ∈ V , y
(Positividad).

u

= 0 si, y solo si, u = 0.

(2)

λu = |λ| u , para todo λ ∈ R y u ∈ V . (Homogeneidad).

(3)

u+v ≤ u + v , para todo u, v ∈ V . (Desigualdad Triangular).

Para nuestros propósitos, consideraremos el espacio vectorial V = Rm×1
y definiremos las normas más utilizadas para tema que nos ocupa. Una
elección común es la norma del supremo (o norma del infinito), denotada
por · ∞ :
u

∞

= sup |ui |.
1≤i≤m

65
66

Es fácil comprobar que se verfican todas las propiedades requeridas. En la
práctica es muy valioso obtener una cota de la norma del supremo, puesto
que en ese caso tenemos acotadas todas las componentes del error por
ella. Para algunos problemas, sin embargo, puede ser más apropiado y fácil
de calcular cotas para otras normas. Son frecuentes las siguientes:
u

1

=

m
∑

|ui |,

(1-norma)

i=1

u

2

=

m
∑

|ui |2 ,

(2-norma o norma euclídea)

i=1

Ellos son casos particulares de una familia general de p-normas, definidas
por
( m
)1/p
∑
u p=
|ui |p
.
i=1

La norma del supremo se obtiene cuando hacemos tender p → ∞ de la
p-norma.
Cuando se trata de comparar dos vectores, uno que representa los valores
nodales exactos de una función, y otro que representa valores aproximados,
(donde los nodos están separados uniformemente por una longitud h > 0),
es mucho más apropiado utilizar la norma 2,h definida por
u

2,h

=

h

m
∑

|ui |2 .

i=1

Un hecho importante que relaciona todas estas normas es que son equivalentes.

Definición A.2 Dos normas · y · ∗ se dice que son equivalentes
si existen constantes a, b > 0 tales que
a u ≤ u

∗

≤b u ,

para todo u ∈ Rm×1

De manera informal, la equivalencia viene a decir que si una sucesión de
vectores converge a 0 respecto de una norma cualquiera de ellas, entonces la
67

sucesión tambien converge a 0 respecto de todas las demás, y si una cierta
cantidad está acotada bajo una norma, automáticamente está acotada bajo
todas las demás normas equivalentes (quizás cambie la cota). De hecho,
en dimensión finita, todas las normas son equivalentes.

A.2.

Normas matriciales

Proposición A.3 Sea · : Rm×1 → R una norma vectorial cualquiera
y definamos con el mismo nombre la aplicación
·

: Rm×m −→ R
A

A := sup
u∈Rm×1

Au
u

(A.1)

Entonces · es una norma definida en el conjunto de las matrices
cuadradas Rm×m . Además se verifican las siguientes propiedades:
(a)

Au ≤ A

u para todo A ∈ Rm×m y u ∈ Rm×1 .

(b)

AB ≤ A

B para todo A, B ∈ Rm×m .

Definición A.4 Cualquier norma · : Rm×m → R inducida por una
norma vectorial mediante (A.1) se denomina norma matricial.

Definimos el radio espectral de una matriz A como
ρ(A) = m´x {|λj |} ,
a
1≤j≤m

donde λj son los valores propios de A.
68

Proposición A.5 Si ρ(A) denota el radio espectral de una matriz A,
entonces para cualquier norma matricial · se verifica la desigualdad
ρ(A) ≤ A .

Prueba.
El radio espectral se define como el m´x {|λ1 |, . . . , |λm |}, donde λi
a
m×1
son los valores propios de A. Sea u ∈ R
es vector propio asociado a un
valor propio λi , entonces

|λi | u = λi u = Au ≤ A

u .

Dividiendo por u en la desigualdad anterior obtenemos que |λi | ≤
para todo i ∈ {1, . . . , m} y, por tanto,

A

ρ(A) = m´x {|λi |} ≤ A
a

.

Proposición A.6 Para las normas vectoriales
obtenemos las siguientes normas matriciales:
∑
(a) A 1 = m´x1≤j≤m m |aij |.
a
i=1
∑m
(b) A ∞ = m´x1≤i≤m j=1 |aij |.
a
√
(c) A 2 = ρ(AT A).

·

1,

·

∞

y

·

2
69

Teorema A.7

Consideremos el sistema lineal recursivo
u(n+1) = A · u(n) .

(A.2)

Son equivalentes:
(I) La sucesión de vectores u(n) está uniformemente acotada en
norma para cualquier condición inicial u(0) ,
u(n) ≤ C1 (= cte),

para todo n ∈ N,

u(0) ∈ Rm×1 .

(II) Las potencias de A están uniformemente acotadas,
Am ≤ C2 (= cte),

para todo m ∈ N.

En las condiciones equivalentes del teorema anterior, diremos que el
sistema recursivo (o la matriz A) es estable.

Teorema A.8 Si el radio espectral verifica ρ(A) ≤ 1, y A no tiene
valores propios defectivos (esto es, su multiplicidad algebraica es
diferente a la multiplicidad geométrica) de módulo 1, entonces la
matriz A es estable.
70

Teorema A.9
forma

Una matriz tridiagonal de dimensión m × m de la


b

a

0

T = .
.
.

0
0


0

0
.
.
a b
c
.
. . . . . . . . ,
.
.
.
. .
.
.

0 ··· a
b c
0 ··· ··· a b
c
b

0
c

···
···

0
0
.
.
.

tiene valores propios
√
λj = b + 2c

πj
a
cos(
),
c
m+1

j = 1, 2, . . . , m.

Más contenido relacionado

Similar a Métodos numéricos para ecuaciones diferenciales ordinarias y parciales

“método de euler y runge kutta”
“método de euler y runge kutta”“método de euler y runge kutta”
“método de euler y runge kutta”Astorgo
 
Metodo de ecuaciones diferenciales
Metodo de ecuaciones diferencialesMetodo de ecuaciones diferenciales
Metodo de ecuaciones diferencialesJoonser
 
Derivación numérica (Series de Taylor)
Derivación numérica (Series de Taylor)Derivación numérica (Series de Taylor)
Derivación numérica (Series de Taylor)Armany1
 
Ecuaciones diferenciales ordinarias
Ecuaciones diferenciales ordinariasEcuaciones diferenciales ordinarias
Ecuaciones diferenciales ordinariasKike Prieto
 
Ecuaciones diferenciales parciales
Ecuaciones diferenciales parciales Ecuaciones diferenciales parciales
Ecuaciones diferenciales parciales Kike Prieto
 
Mtodo de runge..trabajo[1]... listo final
Mtodo de runge..trabajo[1]... listo finalMtodo de runge..trabajo[1]... listo final
Mtodo de runge..trabajo[1]... listo finalAmbarS
 
Mtodo de runge..trabajo[1]... listo final
Mtodo de runge..trabajo[1]... listo finalMtodo de runge..trabajo[1]... listo final
Mtodo de runge..trabajo[1]... listo finalAmbarS
 
Solucion numerica de ecuaciones diferenciales ordinarias 2
Solucion numerica de ecuaciones diferenciales ordinarias 2Solucion numerica de ecuaciones diferenciales ordinarias 2
Solucion numerica de ecuaciones diferenciales ordinarias 2cesar91
 
Ejercicios resueltos de ecuaciones diferenciales
Ejercicios resueltos de ecuaciones diferencialesEjercicios resueltos de ecuaciones diferenciales
Ejercicios resueltos de ecuaciones diferencialeserickson valera garcia
 
Ecuaciones diferencial ejercicios resueltos
Ecuaciones diferencial ejercicios resueltosEcuaciones diferencial ejercicios resueltos
Ecuaciones diferencial ejercicios resueltosHenry Acero Telleria
 
Ejercicios resueltos de ecuaciones diferenciales
Ejercicios resueltos de ecuaciones diferencialesEjercicios resueltos de ecuaciones diferenciales
Ejercicios resueltos de ecuaciones diferencialesjavierfeza
 

Similar a Métodos numéricos para ecuaciones diferenciales ordinarias y parciales (20)

Metodos numericos
Metodos numericosMetodos numericos
Metodos numericos
 
Ecuaciones diferenciales ordinarias
Ecuaciones diferenciales ordinariasEcuaciones diferenciales ordinarias
Ecuaciones diferenciales ordinarias
 
Trabajo Range-Kutta
Trabajo Range-KuttaTrabajo Range-Kutta
Trabajo Range-Kutta
 
10 sep edo_2009_1
10 sep edo_2009_110 sep edo_2009_1
10 sep edo_2009_1
 
“método de euler y runge kutta”
“método de euler y runge kutta”“método de euler y runge kutta”
“método de euler y runge kutta”
 
Metodo de ecuaciones diferenciales
Metodo de ecuaciones diferencialesMetodo de ecuaciones diferenciales
Metodo de ecuaciones diferenciales
 
Derivación numérica (Series de Taylor)
Derivación numérica (Series de Taylor)Derivación numérica (Series de Taylor)
Derivación numérica (Series de Taylor)
 
2011 runge kutta
2011 runge kutta2011 runge kutta
2011 runge kutta
 
Ecuaciones diferenciales ordinarias
Ecuaciones diferenciales ordinariasEcuaciones diferenciales ordinarias
Ecuaciones diferenciales ordinarias
 
Ecuaciones diferenciales parciales
Ecuaciones diferenciales parciales Ecuaciones diferenciales parciales
Ecuaciones diferenciales parciales
 
Mtodo de runge..trabajo[1]... listo final
Mtodo de runge..trabajo[1]... listo finalMtodo de runge..trabajo[1]... listo final
Mtodo de runge..trabajo[1]... listo final
 
Mtodo de runge..trabajo[1]... listo final
Mtodo de runge..trabajo[1]... listo finalMtodo de runge..trabajo[1]... listo final
Mtodo de runge..trabajo[1]... listo final
 
Derivadas
DerivadasDerivadas
Derivadas
 
Solución Numérica EDO
Solución Numérica EDOSolución Numérica EDO
Solución Numérica EDO
 
Solucion numerica de ecuaciones diferenciales ordinarias 2
Solucion numerica de ecuaciones diferenciales ordinarias 2Solucion numerica de ecuaciones diferenciales ordinarias 2
Solucion numerica de ecuaciones diferenciales ordinarias 2
 
Ejercicios resueltos de ecuaciones diferenciales
Ejercicios resueltos de ecuaciones diferencialesEjercicios resueltos de ecuaciones diferenciales
Ejercicios resueltos de ecuaciones diferenciales
 
Ejercicios resueltos de ecuaciones
Ejercicios resueltos de ecuacionesEjercicios resueltos de ecuaciones
Ejercicios resueltos de ecuaciones
 
Ejercicios resueltos de ecuaciones
Ejercicios resueltos de ecuacionesEjercicios resueltos de ecuaciones
Ejercicios resueltos de ecuaciones
 
Ecuaciones diferencial ejercicios resueltos
Ecuaciones diferencial ejercicios resueltosEcuaciones diferencial ejercicios resueltos
Ecuaciones diferencial ejercicios resueltos
 
Ejercicios resueltos de ecuaciones diferenciales
Ejercicios resueltos de ecuaciones diferencialesEjercicios resueltos de ecuaciones diferenciales
Ejercicios resueltos de ecuaciones diferenciales
 

Métodos numéricos para ecuaciones diferenciales ordinarias y parciales

  • 1. Índice general 1. Métodos numéricos para ecuaciones diferenciales ordinarias 1.1. Método en diferencias finitas 3 . . . . . . . . . . . . . . . . . . . . . . 5 1.2. Método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.1. Análisis del error . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2.2. Ejemplos de sistemas . . . . . . . . . . . . . . . . . . . . . . 18 1.3. El método de Heun y el método del punto medio . . . . . . . . . . 24 1.4. Métodos explícitos de Runge-Kutta . . . . . . . . . . . . . . . . . . . 40 2. Métodos numéricos para ecuaciones en derivadas parciales (EDPs) 49 2.1. Clasificación de EDPs de segundo orden . . . . . . . . . . . . . . . . 49 2.2. Métodos numéricos para problemas parabólicos . . . . . . . . . . . 50 2.2.1. Método explícito . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.2.2. Método implícito . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.2.3. Método de Crank-Nicholson . . . . . . . . . . . . . . . . . . 59 2.3. Estabilidad, consistencia y convergencia . . . . . . . . . . . . . . . . 61 A. Analisis numérico matricial 65 A.1. Normas vectoriales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 A.2. Normas matriciales 67 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  • 2. 2
  • 3. Capítulo 1 Métodos numéricos para ecuaciones diferenciales ordinarias La inmensa mayoría de las ecuaciones diferenciales no se pueden resolver de forma analítica explícita, por lo que resulta esencial diseñar algoritmos numéricos que permitan hallar una aproximación numérica precisa. Los esfuerzos de investigación en este sentido han proporcionado un vasto abanico de esquemas numéricos que permiten hallar soluciones aproximadas para una gran variedad de ecuaciones diferenciales. Además, hoy en día uno puede elegir entre una amplia despensa de software que proporcionan resultados precisos y fiables en periodos de tiempo moderadamente cortos. No obstante, todos esos paquetes y los métodos que subyacen tienen sus limitaciones, y quienes los utilizan deben ser capaces de reconocer cuando el software trabaja correctamente y cuando genera resultados espurios. En este capítulo nos ocuparemos de presentar los métodos numéricos básicos para resolver problemas de valores iniciales (PVI). Lo cierto es que los métodos esenciales que vamos a considerar raramente se utilizan en la práctica, incluso para ecuaciones diferenciales relativamente sencillas, puesto que existen métodos más sofisticados, especializados y versátiles. Pero cualquier desarrollo avanzado se construye sobre esquemas básicos y las ideas que subyacen de éstos. Los problemas representativos con los que se enfrenta un analista numérico de ecuaciones diferenciales ordinarias aparecen ya en las ecuaciones de primer orden más simples. Nuestro objetivo es calcular una aproximación a 3
  • 4. 4 la solución para el problema de Cauchy: y (t) = f (t, y(t)), y(t0 ) = y0 , (1.1) donde y(t) es una función real definida en un intervalo I, y f (t, y) es una función definida en I × R. Por el bien de la simplicidad, centraremos nuestra atención en el caso escalar; sin embargo, todas las fórmulas y resultados se pueden adaptar a sistemas de primer orden solo con reemplazar las funciones escalares y(t) y f (t, y) por funciones vectoriales. Por otra parte, sabemos que las ecuaciones diferenciales de orden superior se reducen a sistemas equivalentes de primer orden. Por no ser objeto de este tema, no entraremos a estudiar en profundidad los diferentes resultados teóricos que aseguran, bajo ciertas hipótesis, la existencia, unicidad o regularidad de las soluciones de los problemas de Cauchy. No obstante recordamos a continuación uno de los teoremas clásicos de existencia y unicidad. Teorema 1.1 (de Cauchy-Lipschitz) Sea f (t, x) una función continua sobre I × R y lipschitciana respecto a la segunda de sus variables, esto es, ∃ L>0 / |f (t, x) − f (t, y)| ≤ L|x − y|, ∀t ∈ I, ∀x, y ∈ R, entonces el problema de Cauchy (1.1) admite una única solución. Observación 1.2 La condición de Lipschitz es relativamente suave sobre la función. Obsérvese que si la derivada parcial de f (t, x) respecto de la segunda variable es una función continua, la condición de Lipschitz se traduce en que dicha derivada permanezca acotada. En numerosos problemas físicos la variable t representa el tiempo y el intervalo I se suele considerar desde [t0 , t0 + α]. Por ello el instante t0 se denomina instante inicial y la condición impuesta en ese instante y(t0 ) = y0 se denomina condición inicial.
  • 5. 5 1.1. Método en diferencias finitas Uno de los métodos más versátiles para resolver ecuaciones diferenciales ordinarias es el método de diferencias finitas, que consiste, básicamente, en aproximar las derivadas de una función en un punto mediante una combinación de las imágenes de la función en puntos del entorno (los puntos de la malla). La herramienta que nos proporciona tales fórmulas, denominadas de “diferencias finitas", es el desarrollo de Taylor de una función en un punto. En primer lugar hallemos la fórmula de aproximación de la primera derivada: 1 y(t + h) = y(t) + y (t)h + y (ξ)h2 , 2 ξ ∈ [t, t + h], donde hemos utilizado la fórmula del resto de Cauchy. Despejando y (t) de la ecuación anterior podemos hallar su valor y (t) = y(t + h) − y(t) 1 − y (ξ)h, h 2 de donde obtenemos la aproximación y (t) ≈ y(t + h) − y(t) . h La fórmula anterior se denomina diferencia progresiva de la primera derivada. Obsérvese que el error de la aproximación es proporcional a h, que lo expresaremos diciendo que es una aproximación de primer orden. Cuando interese poner de manifiesto el orden de aproximación omitiremos el resto de Cauchy escribiendo simplemente y (t) = y(t + h) − y(t) + O(h), h donde el término O(h) se refiere a que el término proporcional a h está acotado por un múltiplo constante de h cuando h tiende a cero. Realizando el desarrollo de Taylor de y(t − h) y procediendo de forma similar se obtiene una nueva fórmula de aproximación para y (t), pero esta vez en función de los valores de u en el nodo t y t − h, y (t) = y(t) − y(t − h) + O(h). h En este caso, la fórmula aproximación obtenida se denomina diferencia regresiva de la primera derivada. Las diferencias progresivas y regresivas son aproximaciones de primer orden a la primera derivada en t. Pero no son
  • 6. 6 éstas las únicas posibilidades para aproximar la primera derivada. Consideremos los siguientes desarrollos de Taylor: ( ) 1 y(t + h) = y(t) + y (t)h + y (t)h2 + O h3 , 2 ( ) 1 y(t − h) = y(t) − y (t)h + y (t)h2 + O h3 , 2 donde el resto de Taylor es proporcional a h3 . Si restamos las formulas anteriores obtenemos ( ) y(t + h) − y(t − h) = 2y (t)h + O h3 , de donde se obtiene fácilmente y (t) = y(t + h) − y(t − h) + O(h2 ). 2h Luego he aquí otra fórmula de aproximación a la primera derivada en t, pero en este caso de segundo orden, denominada diferencia central de la primera derivada. Tratemos de hallar ahora una aproximación a la segunda derivada en un punto t. Tengamos en cuenta los siguientes desarrollos de Taylor: ( ) 1 1 y(t + h) = y(t) + y (t)h + y (t)h2 + y (3) (t)h3 + O h4 , 2 6 ( ) 1 1 y(t − h) = u(t) − y (t)h + y (t)h2 − y (3) (t)h3 + O h4 . 2 6 (1.2) Si en lugar de restar, los sumamos deducimos la identidad ( ) y(t + h) + y(t − h) = 2y(t) + y (t)h2 + O h4 , de donde podemos despejar sin dificultad y (t), y (t) = y(t + h) − 2y(t) + y(t − h) + O(h2 ). 2 h Despreciando el término O(h2 ) hemos obtenido una aproximación de orden 2 para la segunda derivada de la función y en el punto t. Tal aproximación se denomina diferencia central de la segunda derivada. Para obtener aproximaciones de derivadas de orden superior tendríamos que proceder de forma análoga, y necesitaríamos evaluar la función en más puntos del entorno. Observemos que para aproximar la primera derivada hemos necesitado evaluar la función en dos puntos; para aproximar la segunda derivada hemos evaluado la función en tres puntos. En general, aproximar la derivada n-ésima necesitaríamos evaluar la función en al menos n + 1 puntos distintos.
  • 7. 7 1.2. Método de Euler Nuestra meta consiste en calcular una aproximación a la única solución para el problema de valor inicial (1.1). En primer lugar, introducimos una malla de puntos (puntos nodales) comenzando en el instante inicial t0 y acabando en el tiempo final tN = t0 + α de la forma t0 < t1 < t2 < · · · < tk < · · · < tN donde la distancia entre un nodo y otro hk = tk+1 − tk esté suficientemente cerca. Por comodidad, utilizaremos una separación uniforme entre los puntos del mallado, esto es, hk = h fijo para todo k. Este requisito simplifica el análisis sin afectar significativamente al estudio general para pasos no uniformes. En este caso, el punto k-ésimo de la malla está dado por tk = t0 +kh. El propósito es construir un algoritmo recursivo que proporcione aproximaciones uk ≈ y(tk ) de la solución real en los puntos nodales k = 0, 1, 2, . . . elegidos. Los valores de y(t) en los puntos internodales se pueden calcular mediante cualquier procedimiento de interpolación, por ejemplo, los splines cúbicos. El polinomio de Taylor de primer orden permite aproximar el valor de la función y(t) alrededor de cualquier nodo tk : y(t) ≈ y(tk ) + (t − tk )y (tk ) = y(tk ) + (t − tk )f (tk , y(tk )), donde hemos reemplazado la derivada y (t) por el término que aparece en la ecuación (1.1) objeto de estudio. En particular, si tomamos t = tk+1 , podemos aproximar el valor del siguiente punto nodal de la malla y(tk+1 ) ≈ y(tk ) + (tk+1 − tk )f (tk , y(tk )). (1.3) En la práctica solamente sabemos la aproximación uk al valor y(tk ), luego estamos obligados a reemplazar uk por y(tk ) en la fórmula (1.3), por lo tanto obtenemos el esquema iterativo: uk+1 = uk + hf (tk , uk ). (1.4) Esta simple idea es el punto de partida del método de Euler. Este método es el esquema numérico unipaso más simple para integrar una ecuación diferencial ordinaria. Con el fin de comprender mejor el método de Euler en la práctica, es conveniente testearlo con algún problema sencillo que sepamos resolver, lo que permite estudiar el error de nuestra aproximación con la solución real.
  • 8. 8 Método de Euler 2 sol aprox sol exacta 1.8 1.6 1.4 1.2 1 0.8 0.6 0 0.2 0.4 0.6 0.8 1 1.2 Figura 1.1: y + u = 2 cos t, 1.2.1. 1.4 1.6 1.8 2 u(0) = 2 Análisis del error Antes de continuar, examinaremos algunos aspectos relacionados con el error en un esquema numérico. Un método numérico unipaso general se puede escribir como uk+1 = uk + hg(h, tk , uk ), (1.5) donde g es una función conocida que, mediante iteraciones, proporciona la solución aproximada uk ≈ y(tk ) en el instante tk , siendo el tamaño del paso h = tk+1 − tk (que por propósitos didácticos lo consideramos fijo). En cualquier esquema de integración numérica hay distintos de errores que clasificaremos en tres tipos: Error local: Es aquel cometido en el paso actual del algoritmo. Incluso cuando somos capaces de hallar el valor exacto de la solución uk = y(tk ) en el instante tk , la aproximación numérica en el instante tk+1 es ciertamente no exacta, y se introduce un error en el valor calculado uk+1 ≈ y(tk+1 ). Esencialmente, hay dos subtipos de errores locales: el error de truncamiento (o error de consistencia) y el error de redondeo. El error de redondeo es consecuencia de la falta de precisión de la aritmética computacional y, en ocasiones, puede ocasionar graves alteraciones en la aproximación. El error de truncamiento se debe a la aproximación que realizamos en el instante tk+1 a partir de su valor,
  • 9. 9 aún cuando sea exacto, en el instante tk . Debido a su relevancia, el error de truncamiento será analizado cuidadosamente más adelante. Error inicial: Se manifiesta cuando la condición inicial u0 ≈ y(t0 ) no se puede calcular con exactitud debido, fundamentalmente, a las limitaciones en la aritmética computacional. Por ejemplo, si y(t0 ) = π, necesariamente tenemos que tomar una aproximación de π y, en consecuencia, introducimos algún error inicial que dependerá del número de decimales exactos que tomemos en π. Error global: Es la diferencia entre el valor aproximado uk y el valor exacto y(tk ) en el nodo tk . Los errores locales tienden a acumularlo, puesto que, en general, no partimos del valor exacto en el instante tk−1 . De hecho, ni siquiera podemos garantizar el valor exacto en la condición inicial u0 ≈ y(t0 ) el el caso de que haya error inicial. Resumiendo, conforme iteramos nuestro esquema numérico el error se propaga en cada paso. Por simplicidad, pongámosnos en una situación favorable y supongamos que la condición inicial es exacta u0 = y(t0 ), y que los errores de redondeo no juegan un papel significativo (aunque uno debe siempre tenerlos en cuenta en la computación). En ese caso el error local juega un papel fundamental hasta tal punto que, bajo ciertas hipótesis, si tenemos dominado el error local, podemos dominar también la propagación del error global. Así pues, analizaremos el error local en detalle. Para medir el error local que va de tk a tk+1 basta con comparar la solución exacta y(tk+1 ) con su aproximación numérica bajo la hipótesis de que uk = y(tk ). Naturalmente, en la práctica, este caso nunca se da, por lo que el error local es una cantidad artificial que, por sí sola, no ilustra correctamente el funcionamiento del método. Definición 1.3 Se denomina error local de discretización de un método numérico de la forma (1.5) al valor: Ek+1 = (yk+1 − yk ) − hg(h, tk , yk ), k = 0, 1, 2, . . . 1 El valor τk+1 = h Ek+1 se denomina error de truncación o error de consistencia
  • 10. 10 Obsérvese que el error de discretización en el instante tk+1 nos proporciona la diferencia entre el valor exacto de la solución en dicho punto yk+1 = y(tk+1 ) y el valor que se obtendría al aproximar este valor mediante el esquema numérico (1.5) si se partiese de la solución exacta en el instante tk . Es fácil deducir la ecuación yk+1 − yk 1 − g(h, tk , yk ) = Ek+1 = τk+1 , h h así pues, el error de truncación (consistencia) es la cantidad por la cual el método de discretización aplicado sobre el valor exacto en los puntos nodales no satisface la ecuación diferencial (1.1). Definición 1.4 Se dice que un esquema numérico de la forma (1.5) es consistente con la ecuación diferencial ordinaria (1.1) si se verifica que N ∑ |Ek | = 0. l´ ım h→0 k=1 Además, diremos que el método es consistente de orden p si para cualquier valor de h positivo e inferior a un cierto paso máximo h∗ , se cumple que N ∑ |Ek | ≤ C · hp , k=1 donde C es una constante. Observación 1.5 Observemos que si |Ek | ≤ M · hp+1 para todo k, entonces el método es consistente de orden p. En efecto, N ∑ k=1 |Ek | ≤ N M hp+1 = α M hp+1 = αM hp . h En la práctica, y siempre y cuando tengamos un orden de derivación conveniente, podemos calcular el orden de consistencia de un esquema numérico desarrollando en Taylor (respecto de h) la solución exacta, esto es, h2 h3 y(tk+1 ) = y(tk ) + hy (tk ) + y (tk ) + y (tk ) + · · · 2 6 (1.6) 2 h3 (2) h (1) = yk + hf (tk , yk ) + f (tk , yk ) + f (tk , yk ) + · · · 2 6
  • 11. 11 donde hemos denotado d (k−1) [f (t, y)], dt Por ejemplo, los primeros términos son f (k) (t, y) = f (0) (t, y) = f (t, y). d ∂f ∂f [f (t, y)] = (t, y) + f (t, y) (t, y), dt ∂t ∂y 2 d ∂ f ∂f ∂f f (2) (t, y) = [f (1) (t, y)] = 2 (t, y) + (t, y) (t, y) dt ∂t ∂t ∂y ) (( )2 ∂ 2f ∂ 2f ∂f + f (t, y) (t, y) + 2 (t, y) + f (t, y)2 2 (t, y), ∂y ∂t ∂y ∂y f (1) (t, y) = f (3) ( )2 ∂ 3f ∂f ∂ 2f ∂f ∂ 2f ∂f ∂f (t, y) = 3 (t, y) + 3 (t, y) (t, y) + (t, y) 2 (t, y) + (t, y) (t, y) ∂t ∂t ∂t ∂y ∂y ∂t ∂t ∂y (( )3 ( )) ∂f ∂ 2f ∂f ∂f ∂ 2f ∂ 3f f (t, y) (t, y) + 5 (t, y) (t, y) + 3 (t, y) 2 (t, y) + 2 (t, y) ∂y ∂t ∂y ∂y ∂t ∂y ∂t ∂y ) ( 3 ∂ 2f ∂ 3f ∂f 3∂ f 2 (t, y) + f (t, y) (t, y) f (t, y) 4 (t, y) 2 (t, y) + 3 ∂y ∂y ∂t ∂y 2 ∂y 3 Por otra parte, desarrollamos en Taylor la función g(h, t, y) respecto de la variable h alrededor del punto 0 g(h, t, y) = g(0, t, y) + h ∂g h2 ∂ 2 g (0, t, y) + (0, t, y) + · · · ∂h 2 ∂h2 (1.7) Finalmente, utilizando (1.6) y (1.7) obtenemos: Ek+1 = (yk+1 − yk ) − hg(h, tk , yk ) ( ) h2 ∂g (1) = h (f (tk , yk ) − g(0, tk , yk )) + f (tk , yk ) − 2 (0, tk , yk ) 2 ∂h ( ) ( ) 3 2 4 h ∂ g h ∂ 3g (2) (3) f (tk , yk ) − 3 2 (0, tk , yk ) + f (tk , yk ) − 4 3 (0, tk , yk ) + . . . 6 ∂h 24 ∂h (1.8) Así pues, bajo condiciones de regularidad convenientes sobre las derivadas, el orden de consistencia del esquema numérico será de orden p siempre y cuando ∂ pg ∂ (m) g (0, tk , yk ), m < p, f p (tk , yk ) = (p + 1) p (0, tk , yk ), ∂h(m) ∂h ya que, en ese caso, el error de discretización tiene orden p + 1. f (m) (tk , yk ) = (m + 1) Ejemplo 1.1 En el método de Euler uk+1 = uk + hf (tk , uk ) se verifica que g(h, tk , yk ) = ∂g f (tk , yk ), de donde g(0, tk , yk ) = f (tk , yk ) y ∂h (0, tk , yk ) = 0. Entonces el método de Euler es de orden de consistencia 1 (a menos que f (1) (t, y) = 0).
  • 12. 12 Definición 1.6 Dado un método numérico de la forma (1.5), se denomina error del método la diferencia ek = yk − uk (k=0,1,. . . ,N). Se dice que el método es convergente cuando ( ) l´ ım sup {|ek |} = 0. h→0 0≤k≤N Diremos que el método es convergente de orden p si se verifica: sup {|ek |} ≤ K · hp . 0≤k≤N En principio, el error de consistencia y el error del método son conceptos independientes. De hecho la propiedad de consistencia, por lo general, suele ser más fácil de constatar que la convergencia. Mostraremos que, bajo hipótesis adecuadas, la consistencia de orden p implica la convergencia de orden p. Consideremos un método genérico unipaso uk+1 = uk + hg(h, tk , uk ) que trata de aproximar la solución de la ecuación (1.1). Si conocemos el valor exacto yk en el instante tk , entonces el valor exacto en el intante tk+1 es yk+1 = yk + hg(h, tk , yk ) + Ek+1 , siendo Ek+1 el error de discretización. Restando esta última expresión al esquema numérico que aproxima a la ecuación obtenemos: yk+1 − uk+1 = yk − uk +h (g(h, tk , yk ) − g(h, tk , uk )) + Ek+1 . ek+1 ek Ahora tomamos valor absoluto |ek+1 | ≤ |ek | + h · |g(h, tk , yk ) − g(h, tk , uk )| + |Ek+1 |. Asumamos que g(h, t, y) es continua en t y h, y lipschitziana en la variable y con constante de Lipschitz L, que generalmente se relaciona con la constante de Lipschitz para f . Entonces |ek+1 | ≤ |ek | + hL|yk − uk | + |Ek+1 | = (1 + Lh)|ek | + |Ek+1 |. (1.9) Necesitamos el siguiente lema técnico para continuar acotando el error.
  • 13. 13 Lema 1.7 Sea L > 0 una constante y sean {ak }N y {bk }N k=0 k=1 sucesiones no-negativas satisfaciendo ak+1 ≤ (1 + Lh)ak + bk+1 , k = 0, 1, . . . , N − 1, h > 0. Entonces se verifica la desigualdad: L(tk+1 −t0 ) ak+1 ≤ e a0 + k ∑ eL(tk+1 −ti+1 ) bi+1 , i=0 donde tk = t0 + kh, k = 0, 1, . . . , N . Aplicamos el Lema 1.7 a nuestro caso particular; A = L, ak = |ek | y bk = |Ek |, entonces: |ek+1 | ≤ eL(tk+1 −t0 ) · |e0 | + k ∑ ( ≤ eL(tk+1 −t0 ) |e0 | + ≤L(tk+1 −t0 ) eL(tk+1 −ti+1 ) |Ei+1 | i=0 N ∑ ) |Ek | . k=1 Si asumimos que el error inicial e0 = 0 y que el método es consistente de orden p, concluimos que |ek+1 | ≤ eL(tk+1 −t0 ) Chp = K · hp . Así pues, bajo hipótesis convenientes, hemos probado que si el esquema numérico tiene orden p como medida de error local, entonces el error global está acotado por un múltiplo de hp . En otras palabras, si suponemos que no hay errores de redondeo ni error inicial, el valor calculado uk y la solución real y(tk ) en el instante tk se puede acotar por: |y(tk ) − uk | ≤ K · hp , donde la constante K > 0 puede depender del tiempo tk y la solución particular y(t). En resumen, cuanto más alto es el orden, más preciso será nuestro esquema numérico, y el paso se puede elegir más grande para conseguir la precisión deseada a la solución real. Sin embargo, a mayor
  • 14. 14 orden, se requieren mayores esfuerzos computacionales en cada paso. Luego se debe tratar de equilibrar el orden del método con la elección del paso de forma que el balance total sea óptimo. Como consecuencia, el siguiente resultado nos proporciona una cota para el error en el método de Euler en el caso de que no hayan errores de redondeo, esto es, si suponemos que podemos realizar los cálculos con precisión infinita. Teorema 1.8 Sea F una función continua lipschitziana respecto de la segunda variable, esto es, f (t, x)−f (t, y) ≤ L|x−y| , con t ∈ [t0 , t0 + α], x, y ∈ R y donde L es una constante real positiva. Supongamos además que la solución y es de clase C 2 en [t0 , t0 + α] y que existe una constante M > 0 tal que |y (t)| < M . Entonces |y(tk ) − uk | ≤ ) hM ( L(tk −t0 ) e −1 . 2L No obstante, sabedores de que la influencia del error de redondeo puede llegar a ser notable bajo ciertas circunstancias, sería interesante saber como afectan los errores de redondeo al error global. En la práctica el análisis de la repercusión del error de redondeo es bastante complicado, pero en el caso del método de Euler y simulando la misma técnica que se utiliza en la demostración del Teorema 1.8 se demuestra la siguinte acotación.
  • 15. 15 Teorema 1.9 Sea f una función continua lipschitziana respecto de la segunda variable, esto es, f (t, x)−f (t, y) ≤ L|x−y| , con t ∈ [t0 , t0 + α], x, y ∈ R y donde L es una constante real positiva. Supongamos además que existe una constante M > 0 tal que |y (t)| < M , y que en cada paso el error de redondeo al evaluar el método de Euler es εk . Entonces ( ) ) hM ε ( L(tk −t0 ) |y(tk ) − uk | ≤ + e − 1 + ε0 eL(tk −t0 ) , 2L hL donde ε es una cota superior de εk y ε0 es el error de redondeo del dato inicial. La lectura esencial de este resultado es que el error no está acotado ε cuando h tiende a cero debido al factor hL . Por tanto los resultados obtenidos son poco fiables para pasos cuya longitud es menor que un cierto umbral. El umbral viene dado por el valor de h que minimiza la expresión hM ε + , 2L hL que tomando la primera derivada e igualando a cero obtenemos el valor √ 2ε óptimo h ≈ M . En cualquier caso debe tenerse en cuenta que los errores de redondeo afectan solamente cuando los pasos son muy pequeños. Sistemas de ecuaciones Consideremos ahora el sistema de ecuaciones bidimensional dx = f (t, x, y) , dt dy . = g (t, x, y) , dt x (t0 ) = x0 , y (t0 ) = y0 (1.10) Tanto la definición de solución como los resultados de existencia y unicidad de soluciones son similares al caso de una ecuación, por lo que pasaremos directamente al estudio de los métodos numéricos.
  • 16. 16 Usando, al igual que antes dx x (t + h) − x (t) (t) ≈ , dt h y (t + h) − y (t) dy (t) ≈ dt h obtenemos el método de Euler: uk+1 = uk + hf (tk , uk , vk ) , vk+1 = vk + hg (tk , uk , vk ) , k = 0, 1, 2, ..., N − 1, donde uk ≈ x (tk ) , vk ≈ y (tk ) . En el caso general de un sistema de n ecuaciones dy1 = f1 (t, y1 , y2 , ..., yn ) , dt . . . . dyn = fn (t, y1 , y2 , ..., yn ) , dt y1 (t0 ) = y0 , y2 (t0 ) = y2 , ..., yn (t0 ) = yn , el esquema resultante sería el siguiente: u1,k+1 = u1,k + hf1 (tk , u1,k , ..., un,k ) , . . . un,k+1 = un,k + hfn (tk , u1,k , ..., un,k ) , k = 0, 1, 2, ..., N − 1. Ejemplo 1.2 Resolvamos el sistema x = x + 2y, y = 3x + 2y x (0) = 6, y (0) = 4, en el intervalo [0, 0,04] con h = 0,02. Solución.u1 = 6 + 0,02 ∗ (6 + 2 ∗ 4) = 6. 28, v1 = 4 + 0,02 ∗ (3 ∗ 6 + 2 ∗ 4) = 4. 52, (1.11)
  • 17. 17 u2 = 6,28 + 0,02 ∗ (6,28 + 2 ∗ 4,52) = 6. 586 4, v2 = 4,52 + 0,02 ∗ (3 ∗ 6,28 + 2 ∗ 4,52) = 5. 077 6. Como la solución exacta de este problema es x (t) = 2e−t + 4e4t , y (t) = −2e−t + 6e4t obtenemos que x (0,04) = 2e−0,04 + 4e4∗0,04 = 6. 615 622 362 , y (0,04) = −2e−0,04 + 6e4∗0,04 = 5. 119 486 348. Por tanto, el error cometido es: √ Error = (6. 586 4 − 6. 615 622 )2 + (5. 077 6 − 5. 119 486)2 = 5. 107 × 10−2 . En lo que respecta a las ecuaciones de orden dos x = f (t, x, x ) estas se convierten en un sistema bidimensional mediante el cambio de variable y = x : y = f (t, x, y) , x = y. A partir de aquí empleamos los métodos vistos para sistemas. En general, podemos tranformar una ecuación de orden n ( ) y (n) = f t, y, y , ..., y (n−1) en un sistema mediante los cambios de variable y1 = y, y2 = y , y3 = y , ..., yn = y (n−1) : y1 = y2 , y2 = y3 , . . . yn = f (t, y1 , y2 , ..., yn ) .
  • 18. 18 Ejemplo 1.3 Dado el problema x + 4x + 5x = 0, x (0) = 3, x (0) = −5 lo transformamos en x = y, y = −4y + 5x, x (0) = 3, y (0) = −5. 1.2.2. Ejemplos de sistemas El péndulo Consideramos una bola de masa m atada de una varilla rígida de longitud l y masa despreciable que pende del techo. Las varilla puede oscilar con libertad sobre el plano vertical, pero sometida a la fuerza de la gravedad (ver la figura 1.2). Consideraremos primero por simplicidad que la resistencia del aire se puede despreciar. La variable x es el ángulo entre la varilla y el eje vertical. La ecuación diferencial se puede obtener a partir del principio de la cantidad de movimiento angular: la razón de cambio de la cantidad de movimiento angular es igual al momento de la fuerza. Como dx Cantidad de movimiento angular=ml2 , dt Momento de la fuerza=lF = −lmg sin (x) , tenemos la ecuación d2 x = −lmg sin (x) , dt2 g d2 x = − sin (x) . 2 dt l Si lo transformamos en un sistema poniendo y = x tendremos ml2 dx = y, dt g dy = − sin (x) . dt l Los puntos fijos son y = 0, sin (x) = 0 (0, 0) , (±π, 0) , (±2π, 0) , ..., (±nπ, 0) , ...
  • 19. 19 El punto (0, 0) es estable (se producen pequeñas oscilaciones alrededor del punto), mientras que (π, 0) es inestable. Todos los demás son réplicas de estos dos: (±2nπ, 0) son estables y (± (2n + 1) π, 0) son inestables. El diagrama de fases de este sistema, calculado usando el método de Euler (con g = 10, l = 50), se puede ver en la figura 1.3. Vemos que alrededor de los puntos fijos (±2nπ, 0) existen soluciones periódicas. Éstas corresponden al movimiento oscilatorio del péndulo, que aparecen cuando la velociad inicial no es demasiado grande. En cambio, si la velocidad inicial es grande, entonces el péndulo da vueltas completas, y el valor de la variable x ya no está acotado. Si tenemos en cuenta el rozamiento, entonces la ecuación es la siguiente: d2 x g dx = − sin (x) − c . dt2 l dt Transformada en sistema quedaría dx = y, dt dy g = − sin (x) − cy. dt l Ahora las soluciones se comportan de manera bastante diferente. Al haber disipación de la energía (casi) todas las soluciones convergen en espiral a uno de los puntos fijos (±2nπ, 0). Dependiendo de la velocidad inicial (es decir, de la fuerza a la que hemos impulsado el péndulo) puede dar varias vueltas antes de estabilizarse y comenzar a oscilar en torno a la posición de equilibrio. Usando los parámetros g = 10, l = 50, c = 1 hemos calculado varias soluciones por el método de Euler. En la figura 1.4 podemos ver la solución correspondiente a las condiciones iniciales x0 = −2, y0 = 2. En este caso vemos que el péndulo oscila perdiendo energía alrededor del punto (0, 0). En la figura 1.5 tenemos la solución con condiciones iniciales x0 = 0, y0 = 15. Al ser la velocidad inicial grande el péndulo da dos vueltas enteras y después comienza a oscilar perdiendo energía alrededor del punto de equilibrio (4π, 0) . Finalmente, en la figura 1.6 las condiciones iniciales son x0 = 0, y0 = 40. La velocidad inicial es tan grande que el péndulo da seis vueltas completas
  • 20. 20 antes de perder suficiente energía y estabilizarse oscilando alrededor del punto de equilibrio (12π, 0) . El sistema de Lorenz El sistema de Lorenz es un modelo, bastante simplificado, del tiempo atmosférico, que fue desarrollado por el meteorólogo Edwar N. Lorenz. El sistema es el siguiente:            dx = σ (y − x) , dt dy = ρx − y − xz, dt dz = −βz + xy, dt donde σ, ρ, β son parámetros. Se puede calcular sin dificultad que este sistema tiene tres puntos fijos dados por: ) ( √ ) (√ √ √ β (ρ − 1), β (ρ − 1), ρ − 1 , − β (ρ − 1), − β (ρ − 1), ρ − 1 . (0, 0, 0) , Este sistema tan simplificado no nos sirve para una predicción real de la temperatura atmosférica. Sin embargo, se ha hecho famoso por otra razón: dio pie a un nuevo campo de las matemáticas llamada caos. Para determinados parámetros del sistema, las soluciones de no parecen seguir ningún patrón fijo, formando curvas que giran alrededor de los puntos fijos del sistema. Éstas permanecen en una zona acotada alrededor de los puntos fijos, pero no permanecen mucho tiempo cerca de ninguno de ellos. Por tanto, existe una región del espacio que atrae todas las soluciones, pero la dinámica dentro de esta región no sigue una pauta fija, ni ningún patrón reconocible. A ésta se le ha llamado Atractor Extraño. La característica fundamental de los sistemas caóticos es la sensibilidad a las condiciones iniciales. Dicho sin mucha precisión, esto significa que, dada cualquier condición inicial, siempre existirá otra condición inicial, tan cerca de ella como queramos, cuya solución diverge de la primera. Ejemplos de tales sistemas incluyen la atmósfera terrestre, las placas tectónicas, los fluidos en régimen turbulento y los crecimientos de población. Usando el método de Euler vamos a obtener algunas soluciones de este sistema para estudiar su comportamiento.
  • 21. 21 Vamos a ver primero algunas soluciones correspondientes a los siguientes parámetros: 8 σ = 10, ρ = 10, β = . 3 Para estos parámetros no hay caos. Las soluciones numéricas muestran que las soluciones convergen a uno de los puntos fijos a medida que el tiempo avanza. En este caso los puntos fijos son (√ √ ) ( √ ) √ (0, 0, 0) , 24, 24, 9 , − 24, − 24, 9 . Por, ejemplo, si las condiciones iniciales son x0 = 1, y0 = 0, z0 = 2 obtenemos las soluciones que se ven en las gráficas ?? y ??. Vemos que la (√ √ ) solución converge al punto fijo 24, 24, 9 . Si probamos con una condición inicial más alejada, por ejemplo x0 = 1, y0 = 0, z0 = 50 la solución converge al mismo punto, como se ve en la gráfica 1.7. Si elegimos las condiciones iniciales x0 = −10, y0 = −1, z0 = 3 la solución √ ( √ ) converge al punto fijo − 24, − 24, 9 , como se ve en la figura 1.8. El comportamiento que hemos visto en este ejemplo se mantiene mientras el parámetro ρ se eencuentra entre los siguientes valores 1 < ρ < 24,74... Si ρ < 1, entonces todas las soluciones convergen al punto fijo (0, 0, 0). En cambio, si ρ > 24,74..., entonces aparecen las trayectorias caóticas. Veamos las soluciones correspondientes a los siguientes parámetros: 8 σ = 10, ρ = 28, β = . 3 Las proyecciones de la solución correspondiente a las condiciones iniciales x0 = 1, y0 = 0, z0 = 1 se puede ver en las gráficas 1.9, 1.10, 1.11. En tres dimensiones la gráfica se puede ver en la figura 1.12. Las soluciones presentan el mismo comportamiento aunque las condiciones iniciales sean muy diferentes. Por ejemplo, si x0 = 1, y0 = −8, z0 = 90 la solución en el plano XZ se ve en la figura 1.13. Se ve que la solución final forma una figura parecida, que se encuentra en la misma zona.
  • 22. 22 Finalmente veremos algún ejemplo de la dependencia sensible a las condiciones iniciales. Vamos a coger la condición inicial x0 = 1, y0 = 0,0001, z0 = 1, que se diferencia muy poco de la condición x0 = 1, y0 = 0, z0 = 1. En la figuras 1.14, 1.15 podemos observar que las soluciones en ambos casos son distintas, aunque se comportan de forma parecida en lo que respecta a la forma del dibujo. Esto se ve mucho más claro si comparamos una de las variables en distintos momentos del tiempo. En la figura 1.16 podemos ver cómo al principio las dos soluciones son muy parecidas, pero a partir de un determinado momento las soluciones divergen y se comportan de forma muy distinta. Podemos comparar los valores de las dos soluciones en la siguiente tabla: t 0,1 1 5 10 12 12,05 12,2 14 20 30 35 x0 (t) 1,1475 −3,7134 −8,2256 7,8278 3,2356 2,9522 4,9132 5,3422 2,9567 4,1114 −1,3976 x1 (t) 1,1475 −3,7135 −8,2239 7,8793 3,8000 3,7479 6,5235 −8,4479 −11,0626 3,0029 4,5331 Diferencia: x0 (t) − x1 (t) 0 0,0001 −0,0017 −0,0514 −0,5644 −0,7957 −1,6103 13,7901 14,0193 1,1085 −5,9307
  • 24. 24 2 1.5 1 dx/dt 0.5 0 −0.5 −1 −1.5 −2 −2 0 2 4 6 8 x Figura 1.3: Diagrama de fases del péndulo 1.3. El método de Heun y el método del punto medio El método de Euler funciona, pero tiene varios inconvenientes: es un método de baja precisión que necesita de pasos temporales muy pequeños para alcanzar resultados aceptables, además converge lentamente hacia la solución. Conocidas las limitaciones del método de Euler vamos a presentar una batería de esquemas numéricos, comenzando por el método de Heun, que mejorarán gradualmente su eficiencia. Una de las claves para diseñar algoritmos más sofisticados es replantear el principio teórico sobre el que 10
  • 25. 25 5 4 3 dx/dt 2 1 0 −1 −2 −3 −2 −1.5 −1 −0.5 0 0.5 1 x Figura 1.4: Péndulo con rozamiento, x0 = −2, y0 = 2 se sustenta el método de Euler (que consistía en la aproximación de las derivadas por diferencias finitas) por otro (equivalente) que intercambie la derivación por integración. La prueba de la existencia y unicidad para una ecuación diferencial de primer orden se basa en su reformulación como una ecuación integral, concretamente obtenemos el siguiente resultado. 1.5
  • 26. 26 16 14 12 10 dx/dt 8 6 4 2 0 −2 −4 0 2 4 6 8 10 12 x Figura 1.5: Péndulo con rozamiento, x0 = 0, y0 = 15 Proposición 1.10 La solución y(t) del problema de valor inicial y (t) = f (t, y(t)), y(t0 ) = y0 coincide con la solución de la ecuación integral ∫ t y(t) = y(t0 ) + f (s, y(s))ds. t0 (1.12) 14
  • 27. 27 40 35 30 25 dx/dt 20 15 10 5 0 −5 0 5 10 15 20 x 25 30 35 Figura 1.6: Péndulo con rozamiento, x0 = 0, y0 = 40 La prueba de este resultado es una aplicación inmediata del Teorema Fundamental del Cálculo, que se obtiene integrando ambos términos de la ecuación diferencial: ∫ t ∫ t y(t) − y(t0 ) = y (s)ds = f (s, y(s))ds. t0 t0 Este resultado sugiere reconsiderar métodos numéricos que se centren en la resolución de la ecuación integral. Hay numerosas razones por las que se prefiere considerar la ecuación integral (1.12) en lugar de la ecuación diferencial. En general, la derivación tiene un comportamiento peor que la integración; en muchas ocasiones, la derivada de funciones con buenas propiedades pueden tener un mal carácter, en cambio, las integrales de 40
  • 28. 28 50 45 40 35 z 30 25 20 15 10 5 0 −1 0 1 2 3 4 x 5 6 7 8 9 Figura 1.7: Sistema de Lorenz, Proyección XZ, x0 = 1, y0 = 0, z0 = 50, σ = 10, ρ = 10, β = 8 3 funciones que poseen un mal comportamiento se suavizan. Por otra parte, observemos que la ecuación integral no requiere de ninguna condición inicial adicional. Partiremos de la ecuación integral (1.12) en cada subintervalo [tk , tk+1 ] ∫ tk+1 f (s, y(s))ds, y(tk+1 ) = y(tk ) + tk de tal forma que podemos calcular el valor de la solución en el punto tk+1 a partir del valor en tk , más la integral a lor largo del subintervalo. Obsérvese que, en particular, si aproximamos la integral en cada subintervalo por la regla del punto inicial ∫ tk+1 tk f (s, u(s))ds ≈ (tk+1 − tk )f (tk , y(tk )) = hf (tk , y(tk )),
  • 29. 29 13 12 11 10 z 9 8 7 6 5 4 3 −10 −9 −8 −7 −6 x −5 −4 −3 Figura 1.8: Proyección XZ, x0 = −10, y0 = −1, z0 = 3, σ = 10, ρ = 10, β = −2 8 3 obtenemos de nuevo la aproximación numérica del método de Euler y(tk+1 ) ≈ y(tk ) + hf (tk , y(tk )), lo que arroja una reinterpretación equivalente. Este punto de vista pone en evidencia la tosquedad del método de Euler, puesto que se utiliza una aproximación de la integral que geométricamente representa el área del rectángulo de anchura h y altura f (tk , y(tk )), lejos ésta de ser una estimación precisa de la integral. Es sabido por el lector que existen métodos mucho más sofisticados de integración numérica que aplicados a este enfoque sin duda proporcionarán algoritmos por lo menos más precisos, estaría por ver si además serían más eficientes computacionalmente. Por el momento comenzaremos por la aproximación numérica que proporciona el método del trapecio, que aproxima la integral mediante el área del trapecio que se obtiene al unir los puntos f (tk , y(tk )) y f (tk+1 , y(tk+1 )), ∫ tk+1 1 f (s, y(s))ds ≈ h (f (tk , y(tk )) + f (tk+1 , y(tk+1 ))) . 2 tk
  • 30. 30 30 20 y 10 0 −10 −20 −30 −20 −15 −10 −5 0 5 10 15 20 25 x Figura 1.9: Sistema de Lorenz, Proyección XY, x0 = 1, y0 = 0, z0 = 1, σ = 10, ρ = 28, β = 8 3 La aproximación del valor actualizado que obtenemos en este caso es: 1 y(tk+1 ) ≈ y(tk ) + h (f (tk , y(tk )) + f (tk+1 , y(tk+1 ))) , (1.13) 2 lo que da lugar a un esquema implícito, puesto que el valor actualizado y(tk+1 ) aparece en los dos términos de la ecuación. El principal problema que encontramos con este algoritmo es que si la función f es complicada puede quedar una ecuación implícita compleja no lineal donde no sea posible despejar explícitamente el valor y(tk+1 ). En ese caso debemos recurrir a metodos numéricos de resolución de ecuaciones no lineales como el método de Newton, etc. Otra alternativa (que se conoce como métodos predictor-corrector) consiste en sustituir, en el lado derecho de la ecuación (1.13), el valor y(tk+1 ) por una aproximación obtenida por otro método explícito, por ejemplo el de Euler, y(tk+1 ) ≈ pk+1 = y(tk ) + hf (tk , y(tk )),
  • 31. 31 60 50 z 40 30 20 10 0 −30 −20 −10 0 y 10 20 Figura 1.10: Sistema de Lorenz, Proyección YZ, x0 = 1, y0 = 0, z0 = 1, 28, β = 8 3 30 σ = 10, ρ = y obtenemos finalmente la aproximación 1 y(tk+1 ) ≈ uk+1 = yk + h[f (tk , yk ) + f (tk + h, pk+1 )] 2 1 = yk + h[f (tk , yk ) + f (tk + h, yk + hf (tk , yk ))] 2 El esquema numérico resultante es 1 uk+1 = uk + h[f (tk , uk ) + f (tk + h, uk + hf (tk , uk ))], 2 que lo podemos desglosar es dos etapas: pk+1 = uk + hf (tk , uk ), h uk+1 = uk + (f (tk , uk ) + f (tk+1 , pk+1 )) . 2 Este esquema se conoce como el método de Heun o método de Euler mejorado. Mediante este planteamiento hemos ganado que el método sea
  • 32. 32 60 50 z 40 30 20 10 0 −20 −15 −10 −5 0 5 10 15 20 25 x Figura 1.11: Proyección XZ, x0 = 1, y0 = 0, z0 = 1, σ = 10, ρ = 28, β = 8 3 explícito, pero ¿realmente mejoramos el orden de consistencia respecto al método de Euler? Ejercicio 1.1 Probar que el método de Heun es de segundo orden. Notemos que si analizamos el error global nos aparecerá, al igual que en ε el método de Euler, el sumando adicional h , donde ε es el error máximo de redondeo en cada paso, por lo que para mantener el orden de convergencia 1 necesitamos que ε ≤ ch3 . El valor de h óptimo será de la forma h = Cte ∗ ε 3 . Mediante la técnica utilizada para obtener el método de Heun es posible elaborar innumerables esquemas numéricos de acuerdo a dos formas de actuación: Cambiando el método numérico de aproximación de la integral. Empleando métodos explícitos diferentes para la estimación intermedia de pk+1 .
  • 33. 33 60 50 40 30 20 10 40 20 0 −20 0 −15 −10 −20 −5 0 5 10 15 20 25 −40 Figura 1.12: Sistema de Lorenz, x0 = 1, y0 = 0, z0 = 1, σ = 10, ρ = 28, β = 8 3 Por ejemplo, consideremos ahora la regla del punto medio, que aproxima la integral mediante el área del rectángulo cuya altura es la imagen en el punto medio tk + h del intervalo [tk , tk+1 ] 2 ∫ tk+1 tk h h f (s, y(s))ds ≈ hf (tk + , y(tk + )). 2 2 De nuevo, estimamos el valor de y(tk + h ) mediante el método de Euler 2 h 1 y(tk + ) ≈ pk+ 1 = y(tk ) + hf (tk , y(tk )). 2 2 2 El esquema numérico resultante adopta la expresión h 1 uk+1 = uk + hf (tk + , uk + hf (tk , uk )), 2 2 que se conoce como método del punto medio y es un esquema de segundo orden (compruébese).
  • 34. 34 90 80 70 60 z 50 40 30 20 10 0 −20 −15 −10 −5 0 x 5 10 15 20 Figura 1.13: Sistema de Lorenz, Proyección XZ, x0 = 1, y0 = 0, z0 = 1, σ = 10, ρ = 28, β = 8 3 Ejemplo 1.4 Resolvamos t−y 2 y (0) = 1 y = en el intervalo [0, 2] con h = 1 y h = 1 . 2 Solución.- La solución exacta de este problema es y (t) = t − 2 + 3e− 2 . Vamos a compararla con la aproximación por el método de Heun. t Solución aproximada 1) h = 1 :
  • 35. 35 60 50 z 40 30 20 10 0 −30 −20 −10 0 y 10 20 30 −20 −10 0 y 10 20 30 60 50 z 40 30 20 10 0 −30 Figura 1.14: Sistema de Lorenz, Proyección YZ, σ = 10, ρ = 28, β = 8 , 3 x0 = 1, y0 = 0, z0 = 1 versus x1 = 1, y1 = 0,0001, z1 = 1 p1 = 1 + u1 = 1 + 1 2 1 = 2, 0−1 2 ( 0−1 2 p2 = 0,875 + + 1− 1 2 2 ) = 7 8 = 0,875, 1−0,875 2 = 0,937 5, ( 1−0,875 2−0,937 5 ) u2 = 0,875 + 1 + = 1. 171 875. 2 2 2 y (2) = 3e−1 = 1. 103 638, Error = |1. 103 638 − 1. 171 875| = 0,068 237. 2)h = 0,5 : p1 = 1 + 0,5 ∗ 0−1 2 = 0,75,
  • 36. 36 60 50 z 40 30 20 10 0 −20 −15 −10 −5 0 5 10 15 20 25 x 60 50 z 40 30 20 10 0 −25 −20 −15 −10 −5 0 x 5 10 15 Figura 1.15: Sistema de Lorenz, Proyección XZ, σ = 10, ρ = 28, β = 8 , 3 x0 = 1, y0 = 0, z0 = 1 versus x1 = 1, y1 = 0,0001, z1 = 1 u1 = 1 + 0,5 2 ∗ ( 0−1 2 + p2 = 0,843 75 + 0,5 ∗ u2 = 0,843 75 + 0,5 2 ∗ 0,5−0,75 2 ) = 0,843 75, 0,5−0,843 75 2 ( 0,5−0,843 75 2 p3 = 0,831 054 687 5 + 0,5 ∗ u3 = 0,831 054 687 5 + 0,5 2 ∗ p4 = 0,930 511 474 6 + 0,5 ∗ u4 = 0,930 511 474 6 + 0,5 2 ∗ = 0,757 812 5, ) + 1−0,757 812 5 = 0,831 054 687 5, 2 1−0,831 054 687 5 2 ( 1−0,831 054 687 5 2 = 0,873 291 015 6, ) + 1,5−0,873 291 015 6 = 0,930 511 474 6, 2 1,5−0,930 511 474 6 2 ( 1,5−0,930 511 474 6 2 = 1. 072 883 606, ) + 2−1. 072 883 606 = 1. 117 587 09. 2 Error=|1. 117 587 − 1. 103 638 | = 0,013 949. 20 25
  • 37. 37 25 20 15 10 x 5 0 −5 −10 −15 −20 −25 0 5 10 15 20 25 t Figura 1.16: Sistema de Lorenz, σ = 10, ρ = 28, β = 8 , 3 x0 = 1, y0 = 0, z0 = 1 versus x1 = 1, y1 = 0,0001, z1 = 1 Comparación de los errores: 0,068 237 Error (h = 1) = = 4. 9. Error (h = 0,5) 0,013 949 Consideremos ahora el sistema de ecuaciones bidimensional x (t) = f (t, x, y) , . y (t) = g (t, x, y) , x (t0 ) = x0 , y (t0 ) = y0 . 30 35
  • 38. 38 El método de Heun para a este sistema quedaría de la siguiente forma: qk+1 = xk + hf (tk , xk , yk ) , pk+1 = yk + hg (tk , xk , yk ) , h xk+1 = xk + (f (tk , xk , yk ) + f (tk+1 , qk+1 , pk+1 )) , 2 h yk+1 = yk + (g (tk , xk , yk ) + g (tk+1 , qk+1 , pk+1 )) , 2 k = 0, 1, 2, ..., N − 1, donde xk x (tk ) , yk y (tk ) . En el caso general de un sistema de n ecuaciones y1 (t) = f1 (t, y1 , y2 , ..., yn ) , . . . yn (t) = fn (t, y1 , y2 , ..., yn ) , y1 (t0 ) = y0 , y2 (t0 ) = y2 , ..., yn (t0 ) = yn , . el esquema resultante sería el siguiente: p1,k+1 = y1,k + hf1 (tk , y1,k , ..., yn,k ) , . . . pn,k+1 = yn,k + hfn (tk , y1,k , ..., yn,k ) , h y1,k+1 = y1,k + (f1 (tk , y1,k , ..., yn,k ) + f1 (tk+1 , p1,k+1 , ..., pn,k+1 )) , 2 . . . h (fn (tk , y1,k , ..., yn,k ) + fn (tk+1 , p1,k+1 , ..., pn,k+1 )) , 2 k = 0, 1, 2, ..., N − 1. yn,k+1 = yn,k + Ejemplo 1.5 Resolvamos el sistema x = x + 2y, y = 3x + 2y x (0) = 6, y (0) = 4, en el intervalo [0, 0,04] con h = 0,02. Solución.q1 = 6 + 0,02 ∗ (6 + 2 ∗ 4) = 6. 28, p1 = 4 + 0,02 ∗ (3 ∗ 6 + 2 ∗ 4) = 4. 52,
  • 39. 39 0,02 ∗ (6 + 2 ∗ 4 + 6,28 + 2 ∗ 4,52) = 6. 293 2, 2 0,02 ∗ (3 ∗ 6 + 2 ∗ 4 + 3 ∗ 6,28 + 2 ∗ 4,52) = 4. 538 8, y1 = 4 + 2 x1 = 6 + q2 = 6. 293 2 + 0,02 ∗ (6. 293 2 + 2 ∗ 4. 538 8) = 6. 600 616, p2 = 4. 538 8 + 0,02 ∗ (3 ∗ 6. 293 2 + 2 ∗ 4. 538 8) = 5. 097 944, 0,02 ∗ (6,293 2 + 2 ∗ 4,538 8 + 6,600 616 + 2 ∗ 5. 097 944) = 6. 614 873 04, 2 0,02 y2 = 4. 538 8 + ∗ (3 ∗ 6. 293 2 + 2 ∗ 4. 538 8 + 3 ∗ 6. 600 616 + 2 ∗ 5. 097 944) = 5. 118 349 36. 2 x2 = 6. 293 2 + Como la solución exacta de este problema es x (t) = 2e−t + 4e4t , y (t) = −2e−t + 6e4t obtenemos que x (0,04) = 2e−0,04 + 4e4∗0,04 = 6. 615 622 362 , y (0,04) = −2e−0,04 + 6e4∗0,04 = 5. 119 486 348. El error sería: √ Error = (6. 614 873 04 − 6. 615 622 )2 + (5. 118 349 36 − 5. 119 486)2 = 1. 361 × 10−3 . Ejercicio 1.2 Heun: Resolver la siguiente ecuación diferencial por el método de y = t2 − y, y(0) = 1, Realizar los siguientes pasos: 1. Tomar h = 0,2 y realizar dos pasos. Luego tomar h = 0,1 y realizar cuatro pasos. 2. Comparar la solución exacta y(t) = −e−t +t2 −2t+2 con las dos aproximaciones en t = 0,4. 3. ¿Se comporta el error global de las aproximaciones como se espera cuando h se divide entre dos? (Sol: a) h = 0,2, y (0,4) 0,69488; h = 0,1, y (0,4) 0,2)=0.0052; Error(h = 0,1)=0.00126; c) Sí) 0,69094; b) Error(h =
  • 40. 40 Ejercicio 1.3 El modelo matemático de cierto circuito (condensador e inductancia) es Q + Q = sen (t) , Q (0) = 0, Q (0) = 0, donde Q (t) representa la carga en el momento t. 1. Usar el método de Heun con h = 0,1 para determinar el valor de Q (0,2). 2. Calcular el error cometido sabiendo que la solución exacta es: 1 Q (t) = sin (t) − t cos (t) . 2 (Sol: Q (0,2) 1.4. 0,000998335, Q (0,2) = 0,001328, Error = 0,000 329 665 ) Métodos explícitos de Runge-Kutta El método de Heun y el método del punto medio son casos particulares de una familia general de métodos conocidos con el nombre de Runge-Kutta, en honor a sus creadores Carle Runge y Martin Kutta a finales del siglo XIX. La idea es generalizar los métodos que hemos presentado de acuerdo al siguiente esquema numérico general: uk+1 = uk + h m ∑ ai f (tk,i , uk,i ), (1.14) i=1 donde cada tk,i denota un punto en el k-ésimo subintervalo [tk , tk+1 ] y uk,i ≈ y(tk,i ) se interpreta como una aproximación en el punto tk,i que se suele calcular por una fórmula similar más simple del mismo tipo. Los parámetros ai así como los parámetros que intervienen para calcular cada aproximación intermedia uk,i se elige de modo que el método alcance el orden de consistencia deseado. Desarrollemos los principios teóricos que fundamentan el método. Supongamos que tenemos la partición t0 < t1 < · · · < tN = t0 + α, y deseamos calcular el valor actualizado de y en el punto tk+1 basándonos en la ecuación integral ∫ tk+1 f (s, y(s))ds. (1.15) y(tk+1 ) = y(tk ) + tk
  • 41. 41 Consideremos una sucesión de puntos nodales en el subintervalo [tk , tk+1 ] tk ≤ tk,1 ≤ tk,2 ≤ · · · ≤ tk,r ≤ tk+1 , donde cada tk,i = tk + ci h con 0 ≤ ci ≤ 1, que actuarán como soporte para las fórmulas de integración que utilicemos a lo largo del procedimiento. Estimaremos la integral mediante una fórmula de integración sobre la partición anterior. De acuerdo con la ecuación integral (1.15), obtenemos una aproximación de la forma r ∑ yk+1 ≈ yk + h ai f (tk,i , yk,i ), i=1 donde ωi = hai son los pesos de la fórmula de cuadratura, y yk,i son los valores de y en el punto tk,i . Para estimar el paso intermedio yk,i tendremos en cuenta, de nuevo, alguna otra fórmula de integración sobre los puntos nodales que quedan a la izquierda, ∫ tk,i i−1 ∑ yk,i = yk + f (s, y(s))ds ≈ uk,i = yk + h bij f (tk,j , yk,j ). tk j=1 donde hbi,j son los nuevos pesos ortorgados a los puntos tk,j con 2 ≤ j ≤ i−1. Una vez elegidas las constantes ai , bij y ci , obtenemos el esquema explícito recursivo:  uk,1 = uk ,     u = u + hb f (t , u ),  k,2  k 21 k,1 k,1    u = u + hb f (t , u ) + hb f (t , u ), k,3 k 31 k,1 k,1 32 k,2 k,2 (1.16) . . .  .  . .    ∑  uk,r = uk + h r−1 brj f (tk,j , uk,j ),  j=1   ∑r  u tk,i = tk + ci h, 0 ≤ ci ≤ 1. k+1 = uk + h i=1 ai f (tk,i , uk,i ), Cuando queremos implementarlo en la computadora, conviene reescribir el esquema (1.16) del siguiente modo:  k1 = f (tk,1 , uk,1 ) = f (tk + c1 h, uk ),     k = f (t , u ) = f (t + c h, u + hb k ),  2  k,2 k,2 k 2 k 21 1    k = f (t , u ) = f (t + c h, u + h(b k + b k )), 3 k,3 k,3 k 3 k 31 1 32 2 (1.17) . . .  .  . .    ∑  kr = f (tk,r , uk,r ) = f (tk + cr h, uk + h r−1 brj kj ),  j=1    u k+1 = uk + h (a1 k1 + a2 k2 + · · · + ar kr ) .
  • 42. 42 Utilizaremos la siguiente representación matricial para las constantes   c1 0 0 ··· 0   c2 b21 0 · · · 0  . . .  . . .. ... .  . . . .   cr br1 br2 · · · 0  a1 a2 · · · ar Definición 1.11 método. El número r se denomina número de etapas del Observación 1.12 Habitualmente la constante c1 suele ser 0, y en ese caso k1 = f (tk , uk ). La función g(h, tk , uk ) del término general (1.5) para el esquema de Runge-Kutta es: g(h, tk , uk ) = a1 k1 + a2 k2 + · · · + ar kr . Debido a la facilidad, flexibilidad y diversidad en cuanto en el diseño de los esquemas numéricos de Runge-Kutta según los parámetros fijados, estos tienen un vasto alcance en una gran variedad de ecuaciones diferenciales ordinarias, y son los más populares y extendidos en el software computacional. El objetivo cuando se diseña un método de Runge-Kutta es elegir las constantes ai , bij y ci adecuadas con el mínimo número de etapas posibles para conseguir el orden de consistencia deseado. Si queremos conseguir orden de consistencia 2 se necesitan al menos dos etapas, mientras que si deseamos orden 4 necesitamos elaborar un método de cuatro etapas. Se puede probar que no existen métodos de Runge-Kutta para los que el número de etapas sea igual al orden del método cuando el método tiene orden de consistencia mayor que 4. Así, para un método de orden 5 se necesitan al menos r = 6 estapas; y para orden 7 al menos 10 etapas. Como curiosidad, el método de orden 10 con menos etapas es para r = 17. A continuación estudiamos los más conocidos según el número de etapas y el orden de consistencia.
  • 43. 43 Métodos de una etapa ( La matriz general del método de una etapa es c1 ) 0 . El esquema a1 numérico general es k1 = f (tk + c1 h, uk ), uk+1 = uk + ha1 k1 = uk + ha1 f (tk + c1 h, uk ), de donde g(h, tk , yk ) = a1 k1 = a1 f (tk + c1 h, yk ). Calculamos la derivada de g(h, tk , yk ) respecto de h: ∂g ∂f (h, tk , yk ) = c1 (tk , yk ). ∂h ∂t ∂g Entonces f (0) (tk , yk ) = g(0, tk , yk ) cuando a1 = 1. Además f (1) (tk , yk ) = 2 ∂h (0, tk , yk ) cuando c1 = 1/2. En definitiva, cuando a1 = 1 y c1 = 0 obtenemos el método de Euler. Además, el esquema tiene orden de consistencia 2 si ∂f = 0 (la ∂y función f solo depende del tiempo) y c1 = 1/2. Métodos de dos etapas La matriz general del método es   c1 0 0   c2 b21 0  . a1 a2 El esquema numérico general es k1 = f (tk + c1 h, uk ), k2 = f (tk + c2 h, uk + hb21 k1 ) = hf (tk + c2 h, uk + hb21 f (tk + c1 h, uk ), uk+1 = uk + h(a1 k1 + a2 k2 ) = uk + a1 hf (tk + c1 h, uk ) + a2 hf (tk + c2 h, uk + hb21 f (tk + hc1 , uk )). Por tanto, g(h, tk , yk ) = a1 k1 + a2 k2 = a1 f (tk + c1 h, yk ) + a2 f (tk + c2 h, yk + hb2,1 f (tk + hc1 , yk )), Para obtener métodos de orden de consistencia 2 debemos igualar los coeficientes de los desarrollos de Taylor, obteniendo las identidades a1 + a2 = 1, 1 a1 c 1 + a2 c 2 = , 2 1 a2 b21 = . 2
  • 44. 44 Este sistema tiene 5 incógnitas y tan solo 3 ecuaciones, por lo que admite infinitas soluciones. Las soluciones particulares más conocidas son:   0 0 0   Método de Heun: 1 1 0  de donde resulta 1/2 1/2 k1 = f (tk , uk ), 1 uk+1 = uk + h( k1 + 2 k2 = f (tk + h, uk + hk1 ), 1 h k2 ) = uk + (f (tk , uk ) + f (tk + h, uk + hf (tk , uk ))) . 2 2   0 0 0   Método del punto medio: 1/2 1/2 0, que sustituyendo en el esquema 0 1 general se obtiene h h k2 = f (tk + , uk + k1 ), 2 2 h h = uk + hk2 = uk + hf (tk + , uk + f (tk , uk )). 2 2 k1 = f (tk , uk ), uk+1 Se puede probar que no existen constantes tales que el orden del método sea mayor que 2. Métodos de más etapas Podemos proseguir elaborando métodos y escogiendo constantes adecuadas para obtener la consistencia de mayor orden para un mismo número de etapas. En la práctica, los métodos de orden demasiado alto son bastantes costosos computacionalmente debido a que hay que evaluar la función demasiadas veces. Los métodos de Runge-Kutta de orden cuarto son unos de los integradores de paso fijo más utilizados en Ingeniería para obtener resultados precisos en problemas sin demasiada complejidad. Sin duda, el método más popular cuando todavía se computaban los métodos numéricos a mano viene dado en forma matricial por la matriz   0 0 0 0 0 1/2 1/2 0 0 0      M = 1/2 0 1/2 0 0 .    1 0 0 1 0  1/6 2/6 2/6 1/6
  • 45. 45 El método desarrollado queda, k1 = f (tk , uk ), h h k2 = f (tk + , uk + k1 ), 2 2 h h k3 = f (tk + , uk + k2 ), 2 2 k4 = f (tk + h, uk + hk3 ) h uk+1 = uk + (k1 + 2k2 + 2k3 + k4 ). 6 Ejemplo 1.6 Estimar el valor de la solución de la ecuación diferencial y = t + y, y(0) = 1 en el punto t = 0,2 mediante el método de Heun de orden 2 y el método de Runge-Kutta de orden 4 utilizando un paso igual a h = 0,2. Finalmente, si tenemos un sistema de ecuaciones diferenciales de la forma x = f (t, x, y), y = g(t, x, y), x(0) = x0 , y(0) = y0 , no resulta complicado adaptar el método de Runge-Kutta:  k1 = f (tk + c1 h, uk , vk ),     l = g(t + c h, u , v ), 1  k 1 k k    k = f (t + c h, u + hb k , v + hb l ),  2 k 2 k 21 1 k 21 1     l2 = g(tk + c2 h, uk + hb21 k1 , vk + hb21 l1 ),     k = f (t + c h, u + h(b k + b k ), v + h(b l + b l )),  3 k 3 k 31 1 32 2 k 31 1 32 2   l = g(tk + c3 h, uk + h(b31 k1 + b32 k2 ), vk + h(b31 l1 + b32 l2 )), 3 .  .  . .  . .     k = f (t + c h, u + h ∑r−1 b k , v + h ∑r−1 b l ),  r k r k  i=1 ri i i=1 ri i k    lr = g(tk + cr h, uk + h ∑r−1 bri ki , vk + h ∑r−1 bri li ),   i=1 i=1   u  k+1 = uk + h(a1 k1 + a2 k2 + · · · + ak kk ),     v = v + h(a l + a l + · · · + a l ). k+1 k 1 1 2 2 (1.18) k k La generalización a un sistema de m ecuaciones diferenciales es tediosa, pero inmediata.
  • 46. 46 Ejercicio 1.4 Calcular la solución en t = 0,5 de la ecuación diferencial y = −2(tan t)y, y(0) = 1 mediante el método de Runge-Kutta de cuarto orden usando h = 0,5 y h = 0,25. Comparar los resultados obtenidos entre sí y con la solución exacta y(t) = cos2 t. Ejercicio 1.5 Encontrar una solución de un método de tres etapas que dé lugar a un método explícito de orden 3, con c1 = 0, c2 = c3 y a2 = a3 . Ejercicio 1.6 Realizar en MatLab una rutina tal que dada una función f (t, y), un paso h, una condición inicial y0 y un método de Runge-Kutta en la forma matricial que lo caracteriza, ejecute el algoritmo de Runge-Kutta N pasos. Ejercicio 1.7 (Circuito de Chua) ( ) dx 1 = α y − x + bx + (a − b) (|x + 1| − |x − 1|) , dt 2 dy = x − y + z, dt dz = −βy. dt Estudiar numéricamente (mediante el método de Runge-Kutta con h = 0,001) distintas soluciones, variando los parámetros y las condiciones iniciales. Ver cuándo se produce un comportamiento caótico. Por ejemplo, el caos aparece con los siguientes parámetros: 100 8 5 ,a = ,b = , α = 9, β = 7 7 7 x0 = 0, y0 = 0, z0 = 0,6. En cambio, si 100 8 5 ,a = ,b = , 7 7 7 = 0, y0 = 0, z0 = 0,6, α = 3, β = x0 entonces las soluciones convergen a un punto fijo en espiral. Si 100 8 5 ,a = ,b = , 7 7 7 = 0, y0 = 0, z0 = 0,6, α = 11, β = x0 entonces las soluciones son espirales que se van alejando del origen cada vez más (el módulo tiende a infinito).
  • 47. 47 Ejercicio 1.8 (Ecuación de Duffing) x + cx − x + x3 = A cos (ωt) . En forma de sistema nos queda: { x = y, 3 y = x − x − cy + A cos (ωt) . Estudiar numéricamente (mediante el método de Runge-Kutta con h = 0,001) distintas soluciones, variando los parámetros y las condiciones iniciales. Ver cuándo se produce un comportamiento caótico. Por ejemplo, ver los siguientes casos: 1. c = A = 0. Las órbitas son trayectorias periódicas. 2. c = 0,2, A = 0. Las órbitas convergen en espiral a los puntos fijos. 3. c = 0,2, A > 0, ω = 1. Probar con distintos valores de A : 0,2, 2, 20, 100, 300. Ver cómo el caos aparece. Primero hay trayectorias periódicas simples, luego se hacen más complicadas y después aparecen trayectorias caóticas. Ejercicio 1.9 (Oscilador de Ueda) x + cx + x3 = Asen (t) . En forma de sistema nos queda: { x = y, 3 y = −x − cy + Asen (t) . Estudiar numéricamente (mediante el método de Runge-Kutta con h = 0,001) distintas soluciones, variando los parámetros y las condiciones iniciales. Ver cuándo se produce un comportamiento caótico. Por ejemplo, ver los siguientes casos: 1. c = A = 0. Las órbitas son trayectorias periódicas. 2. c = 1, A = 0. Las órbitas convergen en espiral al punto fijo (0, 0).
  • 48. 48 3. c = 0,05, A > 0. Probar con distintos valores de A : 0,05, 0,4, 7,5, 20. Ver cómo el caos aparece. Primero hay trayectorias periódicas simples, luego se hacen más complicadas y después aparecen trayectorias caóticas. Ejercicio 1.10 (Atractor de Rossler)   x = − (y + z) ,  y = x + 0,2y,   z = 0,2 + xz − cz. Estudiar numéricamente (mediante el método de Runge-Kutta con h = 0,001) distintas soluciones, variando los parámetros y las condiciones iniciales. Ver cuándo se produce un comportamiento caótico. Por ejemplo, ver los siguientes casos: 1. c = 2,5. Las órbitas convergen a una trayectoria periódica. 2. c = 5, c = 5,7, c = 8, c = 100. Hay trayectorias caóticas.
  • 49. Capítulo 2 Métodos numéricos para ecuaciones en derivadas parciales (EDPs) En este capítulo se desarrollan los métodos numéricos de resolución de la ecuaciones en derivadas parciales. En particular, se estudian los métodos explícito, implícito y de Crank-Nicholson, analizando el orden de precisión en cada uno de ellos según el tamaño de los pasos espacial y temporal, así como las condiciones de estabilidad que se requieren en cada caso. 2.1. Clasificación de EDPs de segundo orden Los modelos más importantes de ecuaciones en derivadas parciales de segundo orden que aparecen en las aplicaciones a la Física y a la Ingeniería se clasifican en tres tipos: elípticas, parábolicas e hiperbólicas. Dada una EDPs de segundo orden avxx + bvxy + cvyy + dvx + evy + f v = g, (2.1) diremos que (2.1) es: Elíptica: si b2 −4ac < 0. El ejemplo clásico de ecuación elíptica es el problema de Poisson ∇2 v(x, y) = g(x, y), (x, y) ∈ Ω, v|∂Ω = h, donde ∇2 = ∂xx + ∂yy representa el operador laplaciano. 49
  • 50. 50 Parabólica: si b2 − 4ac = 0. El ejemplo clásico de ecuación parabólica es la ecuación del calor vt (x, t) = Dvxx (x, t), D > 0, Hiperbólica: si b2 − 4ac > 0. El ejemplo clásico de ecuación hiperbólica es la ecuación de ondas vtt (x, t) = c2 vxx (x, t). 2.2. Métodos numéricos para problemas parabólicos El ejemplo clásico de una ecuación parabólica sencilla y con mayor campo de aplicación en una dimensión es la ecuación del calor o ecuación de difusión. El problema es encontrar la función v(x, t) (que puede representar una temperatura, concentración de una sustancia, etc.) que satisface el problema  ∂t v(x, t) = D∂xx v(x, t),      v(x, 0) = f (x), v(0, t) = α(t), 0 < x < L, 0 ≤ x ≤ L, v(L, t) = β(t), t > 0, (Condiciones iniciales) t≥0 (2.2) (Condiciones de frontera), donde D es la constante de difusión y f (0) = α(0) y f (L) = β(0). La ecuación del calor aparece en los modelos matemáticos relacionados con problemas de difusión y Mecánica de Fluidos, y muchas de las propiedades y comentarios que estudiaremos para ella se pueden trasladar a otras ecuaciones parabólicas. Esta ecuación modeliza la conducción del calor en una barra cilíndrica de longitud L cuya sección transvesal es uniforme, pequeña y de un material homogéneo. La función v (x, t) mide la temperatura de la barra en cada momento del tiempo t > 0 y en cada punto del espacio x ∈ [0, L]. D > 0 es una constante que depende de las características físicas de la barra. La solución de esta EDPs se expresa en forma de serie para ciertos tipos de condiciones iniciales f (x). Nuestro objetivo en este tema es desarrollar métodos numéricos que permitan obtener la solución del problema de forma aproximada.
  • 51. 51 2.2.1. Método explícito Aplicaremos las fórmulas de las diferencias finitas sobre los puntos de una malla uniforme rectangular (xj , tn ) con xj = jh, j = 0, 1, 2, . . . , J + 1, tn = nk, n = 0, 1, 2, . . . donde h = ∆x es el tamaño del salto en la variable x y k = ∆t es el tamaño n del paso temporal. Utilizaremos la notación vj = v(xj , tn ) y un ≈ v(xj , tn ) j para el valor exacto y la aproximación numérica en el punto nodal (xj , tn ), respectivamente. Puesto que la ecuación del calor es una ecuación de evolución, una primera aproximación es plantearla como un esquema explícito de forma progresiva en el tiempo, de modo que podamos calcular, para todo j, los valores un+1 a partir de los valores en el instante de tiempo anterior un . j j Calculemos las fórmulas en diferencias que utilizaremos para aproximar 2 ∂t v(x, t) y ∂xx (x, t). n+1 vj = v(xj , tn + k) = v(xj , tn ) + k∂t v(xj , tn ) + n = vj + k(vt )n + j k2 2 ∂ v(xj , ξn ) 2 tt k2 vtt (xj , ξn ), 2 donde ξn ∈ (tn , tn+1 ). Por tanto: ∂t v(xj , tn ) = (vt )n = j n+1 n vj − vj k + vtt (xj , ξn ). k 2 (2.3) Por otra parte tenemos h2 h3 h4 1 (vxx )n + (vxxx )n + vxxxx (ξj , tn ), j j 2 6 24 h2 h3 h4 n 2 = vj − h(vx )n + (vxx )n − (vxxx )n + vxxxx (ξj , tn ). j j j 2 6 24 n n vj+1 = vj + h(vx )n + j n vj−1 Sumando las dos identidades precedentes y despejando (vxx )n obtenemos la j fórmula en diferencias centrada (vxx )n j n n n vj−1 − 2vj + vj+1 h2 = + vxxxx (ξj , tn ). h2 12 (2.4) En virtud de las ecuaciones (2.3) y (2.4) llegamos a la identidad (vt − D vxx )n = j donde n Rj n+1 n n n n vj − vj vj−1 − 2vj + vj+1 n −D + Rj , k h2 h2 k2 = vtt (xj , ξn ) − vxxxx (ξj , tn ) = O(k) + O(h2 ). 2 12 (2.5)
  • 52. 52 Teniendo en cuenta que v satisface la ecuacion (2.2) y despreciando los términos O(h2 ) y O(k), la fórmula anterior sugiere el esquema en diferencias finitas: ( ) un+1 − un D un − 2un + un j j j−1 j j+1 = . k h2 Observación 2.1 Si v(x, t) es una solución de la ecuación en derivadas parciales (2.2) y, por consiguiente, el lado izquierdo de la ecuación (2.5) se anula, entonces v(x, t) satisface la ecuación en diferencias en primer orden respecto de k y en segundo orden respecto de h. Por tanto, la ecuación (2.5) muestra la medida de aproximación de la ecuación en diferencias finitas a la ecuación en derivadas parciales (2.2). Pero debemos avisar que esto, en general, no es una medida de aproximación de la solución de la ecuación en diferencias finitas a la solución de la ecuación en derivadas parciales, sino que para ello se necesitan condiciones adicionales que presentaremos más adelante cuando realicemos el análisis del error. Podemos despejar un+1 explícitamente en términos de los valores en el j paso temporal anterior un+1 = un + j j Dk n (u − 2un + un ) = run + (1 − 2r)un + run , j j+1 j−1 j j+1 h2 j−1 donde r = Dk , j = 1, . . . , J y n = 0, 1, 2, . . .. Finalmente, imponiendo las h2 condiciones iniciales y las condiciones de frontera queda la ecuación en diferencias finitas:  un+1 = run + (1 − 2r)un + run , j = 1, 2, . . . , J, n = 0, 1, 2, . . . ,  j j−1 j j+1  0 (2.6) u = f (xj ), j = 0, 1, . . . , J + 1,  j  n  u0 = α(tn ) = αn , un = β(tn ) = β n , ∀n = 0, 1, 2, . . . . J+1 Matricialmente podemos escribir el sistema recurrente anterior como    n  n+1   1 − 2r r 0 ··· 0 0 rα un u1 1  un+1   r 1 − 2r r ··· 0 0   un   0     2    2    n+1   . .  n    u   0  . .    u3   0 r 1 − 2r r . . 3  . =  .  +  . , . .  .   .   .   . .. .. .. . . . . .  .   . . . .  .   .    n+1    n   uJ−1   0 0 ··· r 1 − 2r r  uJ−1   0  rβ n un un+1 0 0 ··· ··· r 1 − 2r J J que en forma compacta lo expresaremos por u(n+1) = A · u(n) + b(n) ,
  • 53. 53 donde u(n) , b(n) ∈ RJ×1 y A ∈ RJ×J . Obsérvese que la matriz A de coeficientes del sistema recursivo es tridiagonal. Ejemplo 2.1 Hallar la solución de la ecuación del calor en el intervalo [0, T ] = [0, 10] para una barra de longitud L = 10 dado que la temperatura inicial es cero, D = 1 y que v (0, t) = 100, v (10, t) = 50. Usar h = 2, k = 0,1. Solución.1) t = 0,1 : u1 = 0 + 1 0,1 4 (0 − 2 ∗ 0 + 100) = 2. 5, u1 = 0 + 2 0,1 4 (0 − 2 ∗ 0 + 0) = 0, u1 = 0 + 3 0,1 4 (0 − 2 ∗ 0 + 0) = 0, u1 = 0 + 4 0,1 4 (50 − 2 ∗ 0 + 0) = 1. 25. 2) t = 0,2 : u2 = 2,5 + 1 0,1 4 (0 − 2 ∗ 2,5 + 100) = 4. 875, u2 = 0 + 2 0,1 4 (0 − 2 ∗ 0 + 2,5) = 0,062 5, u2 = 0 + 3 0,1 4 (1,25 − 2 ∗ 0 + 0) = 0,031 25, u2 = 1,25 + 4 0,1 4 (50 − 2 ∗ 1,25 + 0) = 2. 437 5. En el paso 99 obtenemos u99 = (100, 68,5809, 45,8036, 36,3011, 39,3871, 50,0000). De aquí: 100) t = 10 : u100 = 68,5809 + 1 0,1 4 (45,8036 − 2 ∗ 68,5809 + 100) = 68. 796 9, u100 = 45,8036 + 2 0,1 4 (36,3011 − 2 ∗ 45,8036 + 68,5809) = 46. 135 4, u100 = 36,3011 + 3 0,1 4 (39,3871 − 2 ∗ 36,3011 + 45,8036) = 36. 615 8, u100 = 39,3871 + 4 0,1 4 (36,3011 − 2 ∗ 39,3871 + 50) = 39. 575 2. La solución, a medida que el tiempo tiende a infinito converge a la recta que une los puntos de la frontera (0, 100) y (10, 50). En la siguiente tabla y gráficos podemos ver las soluciones numéricas correspondientes a varios momentos del tiempo:
  • 54. 54 100 80 60 40 20 2 4 6 8 10 Figura 2.1: Ecuación del calor x/t 0 2 4 6 8 10 0,1 100 2,5 0 0 1,25 50 5 100 53,4341 24,7168 17,4521 27,9807 50 10 100 68. 796 9 46. 135 4 36. 615 8 39. 575 2 50 50 100 89,5523 79,2755 69,2755 59,5523 50 100 100 89,9963 79,9940 69,9940 59,9963 50 150 100 89,99997 79,99995 69,99995 59,99997 50 100 80 60 40 20 2 4 6 Figura 2.2: Ecuación del calor 8 10
  • 55. 55 En la siguiente tabla tenemos los resultados (para el momento T = 10) de aplicar el método con distintos pasos: x 0 2 4 6 8 10 h = 0,5, k = 0,1 100 68,9029 46,1479 36,4898 39,456 50 x 0 2 4 6 8 10 h = 1, k = 0,5 100 69,9181 47,6968 37,9302 40,2958 50 h = 2, k = 2 100 71,875 48,4375 40,6250 40,6250 50 h = 2, k = 0,1 100 68. 796 9 46. 135 4 36. 615 8 39. 575 2 50 h = 1, k = 1 100 100150 99150 71100 52850 50 Vemos que en el caso de la última columna los resultados están muy lejos de los correctos. En la siguiente tabla podemos ver que un pequeño desfase en el cumplimiento de la condición tiene grandes consecuencias en los resultados: x 0 2 4 6 8 10 2.2.2. h = 0,5, k = 0,13 T = 10,01 100 13,5211 −39,761 −45,191 −9,085 50 h = 0,5, k = 0,125 100 69,070 46,405 36,7316 39,598 50 Método implícito Los algoritmos implícitos se emplean para evitar los problemas de estabilidad que hemos visto en el caso anterior. Estos permiten utilizar pasos espaciales
  • 56. 56 pequeños (para obtener mejor precisión) sin necesidad de usar un paso temporal excesivamente pequeño. Las aproximaciones que usaremos para las derivadas serán similares a las de antes. La diferencia estriba en que la aproximación la realizaremos en el punto (xj , tn+1 ). Para la derivada temporal utilizaremos la diferencia regresiva: k2 n+1 n vj = v(xj , tn+1 − k) = vj − k(vt )n+1 + (vtt )(xj , ξn ), j 2 donde ξn ∈ (tn , tn+1 ). Entonces, n+1 n vj − vj k = + vtt (xj , ξn ). k 2 Para la aproximación de la derivada segunda espacial se utilizará de nuevo la diferencia central, pero evaluada en el punto (xj , tn+1 ), esto es, (vt )n+1 j (vxx )n+1 j n+1 n+1 n+1 vj−1 − 2vj + vj+1 h2 + vxxxx (ξj , tn+1 ). = h2 12 Así pues, obtenemos n+1 n+1 n+1 n+1 n vj − vj vj−1 − 2vj + vj+1 n+1 (vt − D vxx )j = −D + O(k) + O(h2 ). (2.7) k h2 Si tenemos en cuenta que v satisface la ecuacion (2.2) y despeciamos los términos O(h2 ) y O(k), la fórmula anterior sugiere el esquema en diferencias finitas ( ) D un+1 − 2un+1 + un+1 un+1 − un j j−1 j j+1 j = . k h2 Mediante cálculos similares al esquema explícito, llegamos a la siguiente ecuación en diferencias implícita:  −run+1 + (1 + 2r)un+1 − run+1 = un , j = 1, 2, . . . , J, n = 0, 1, 2, . . . ,  j j−1 j j+1  0 u = f (xj ), j = 0, 1, . . . , J + 1,  j  n  u0 = α(tn ) = αn , un = β(tn ) = β n , ∀n = 0, 1, 2, . . . . J+1 (2.8) Al escribir esta ecuación en forma matricial obtenemos  1 + 2r −r 0  1 + 2r −r  −r   0 −r 1 + 2r   . . ..  . . . .  .  0 ···  0 0 0 ··· ··· ··· −r .. . −r ···    n   n+1  0 r(α ) u un+1 1   n+1   1   n 0   u 2   u2   0   .   n+1   n   .   u 3   u3   0   .   .  =  .  +  .  .       .. . . . . . .  .   .   .     n+1   n   1 + 2r −r  uJ−1  uJ−1   0  r(β n+1 ) un un+1 −r 1 + 2r J J 0 0 . . .
  • 57. 57 que la escribiremos por Q · u(n+1) = u(n) + b(n+1) . Vemos pues que en cada paso n este método requiere un número mayor de operaciones que en el algoritmo explícito, ya que tenemos que resolver un sistema de ecuaciones. Sin embargo, es importante observar que la matriz Q es tridiagonal, lo que permite resolver el sistema de forma muy eficiente. Este tipo de sistemas requiere una cantidad de operaciones de orden O (J), muy inferior al caso general, donde se necesita efectuar operaciones de orden O (J 3 ) . Por tanto, el incremento en el número de operaciones por paso va a ser pequeño. Además, como veremos más adelante, este incremento en la cantidad de operaciones se ve ampliamente compensado por el hecho de que no vamos a necesitar imponer un paso temporal pequeño, por lo que el cómputo global de operaciones va a resultar mejor que en el método explícito. Un aspecto importante es saber si el sistema de ecuaciones obtenido tiene una única solución. Eso lo sabremos al estudiar los valores propios de la matriz Q, que son todos positivos. Por tanto, Q es invertible, el sistema tiene una única solución y el método se puede implementar correctamente. Ejemplo 2.2 Hallar la solución de la ecuación del calor en el intervalo [0, T ] = [0, 10] para una barra de longitud L = 10 dado que la temperatura inicial es cero, D = 1 y que v (0, t) = 100, v (10, t) = 50. Usar h = 2, k = 0,1. Solución. Tenemos que r = r ∗ uj = 1,25. 5 0,1 4 = 0,025, 1 + 2r = 1,05, uj = 100, uj = 50, r ∗ uj = 2,5, 0 5 0 1) t = 0,1 :  1,05 −0,025 0 0  −0,025 1,05 −0,025 0    0 −0,025 1,05 −0,025 0 0 −0,025 1,05   1   2. 382 32 u1  u1   5. 742 97 × 10−2    2   .  2 = −2   u3   2. 972 89 × 10  1. 191 18 u1 4      u1 1 u1 2 u2 3 u1 4       =   2,5 0 0 1,25    ,  Observamos que, a diferencia del método explícito, todos los valores de u han cambiado y son distintos de cero ya en la primera iterada.
  • 58. 58 2) t = 0,2 :  1,05 −0,025 0 0  −0,025 1,05 −0,025 0    0 −0,025 1,05 −0,025 0 0 −0,025 1,05  1    4. 653 82 u1   u1   0,167 59   2   .  2 = −2   u3   8. 770 87 × 10  u1 2. 327 02 4      u1 1 u1 2 u2 3 u1 4       =   4. 882 32 0,057 429 7 0,029 728 9 2. 441 18    ,  En el paso 99 obtenemos u99 = (100, 68,3262, 45,47296, 36,0324, 39,23398, 50,0000). De aquí: 100) t = 10           1,05 −0,025 0 0 −0,025 1,05 −0,025 0 0 −0,025 1,05 −0,025 0 0 −0,025 1,05    u1 68. 544 1 1 u1   45. 804 9    2  = . 2    36. 345 8  u3 u1 39. 421 5 4      u1 1 u1 2 u2 3 u1 4       =   70. 826 2 45. 472 96 36. 032 4 40. 483 98    ,  Al igual que en el anterior algoritmo, resumimos en la siguiente tabla las soluciones numéricas correspondientes a varios momentos del tiempo: x/t 0 2 4 6 8 10 0,1 100 2. 382 32 5. 742 97 × 10−2 2. 972 89 × 10−2 1. 191 18 50 5 100 52,9651 24,5002 17,3798 27,8062 50 10 100 68. 544 1 45. 804 9 36. 345 8 39. 421 5 50 50 100 89,5314 79,2417 69,2417 59,5313 50 100 100 89,99595 79,99345 69,99345 59,99595 50 150 100 89,99997 79,99994 69,99994 59,99997 50 Los resultados son similares a los obtenidos con el método explícito.
  • 59. 59 La gran ventaja de este método en relación al explícito reside en que es estable para valores cualesquiera de k y h. Además, el algoritmo es convergente con la misma rapidez que el algoritmo explícito, es decir, de orden O(k + h2 ). Por tanto, podemos reducir el tamaño del paso h, y así obtener mejor precisión, sin necesidad de utilizar valores excesivamente pequeños de k. De esta forma conseguimos una buena precisión sin aumentar de forma inaceptable el número de operaciones. Veamos ahora qué resultados se obtienen con los pasos h = 1, k = 1 y h = 0,5, k = 0,13 : x 0 2 4 6 8 10 h = 0,5, k = 0,13 T = 10,01 100 68,6343 45,7749 36,1806 39,2908 50 h = 1, k = 1 100 67,4761 44,2870 34,9968 38,6295 50 A diferencia del método explícito, con estos parámetros obtenemos resultados aceptables. Aunque este método presenta claras ventajas con respecto al anterior sigue sin ser un método completamente satisfactorio. La razón reside en que, al ser el orden de convergencia O(k + h2 ), predomina el error temporal sobre el espacial (al tener k menor orden), por lo que de poco nos sirve disminuir el paso h con el objetivo de obtener mejor precisión. Fijémonos en que para conseguir precisión h2 debemos escoger k ∼ h2 , con lo que nos aparece el mismo problema que en el algoritmo explícito. Veamos pues un método que no adolece de ninguno de estos problemas. 2.2.3. Método de Crank-Nicholson En el método anterior hemos apreciado que el error en el discretizado era de primer orden en k y de segundo orden en h. En este epígrafe trataremos de encontrar un método que mejore el anterior a segundo orden respecto de k. Una idea para alcanzar este objetivo podría ser aproximar por la fórmula de diferencia central de dos puntos la derivada temporal (vt )n j n+1 n−1 vj − vj + O(k 2 ). = 2k
  • 60. 60 La idea expuesta parece buena, pero desafortunadamente conduce a un método numérico que es siempre inestable, por lo que no ha de utilizarse nunca. Parece que la diferencia progresiva es la más adecuada, pero ésta se puede ver también como una diferencia centrada en el punto intermedio, esto es, n+ 1 2 (vt )j n+1 n vj − vj k2 k + O( ). = vt (xj , tn + ) = 2 k 4 Ahora el problema reside en aproximar la derivada segunda espacial en este punto intermedio tn + k . Estimaremos este valor utilizando una mezcla 2 ponderada de la derivada segunda en los nodos (xj , tn ) y (xj , tn+1 ), n+ 1 2 (vxx )j k = vxx (xj , tn + ) ≈ (1 − θ)vxx (xj , tn ) + θvxx (xj , tn+1 ), 2 n+1 n+1 n+1 n n n vj−1 − 2vj + vj+1 vj−1 − 2vj + vj+1 ≈ (1 − θ) +θ , h2 h2 donde θ ∈ [0, 1]. En definitiva la ecuación en derivadas parciales (2.2) se discretiza en el punto (xj , tn + k/2) mediante el esquema numérico un+1 − 2un+1 + un+1 un+1 − un un − 2un + un j j−1 j−1 j j+1 j j+1 = D(1 − θ) + Dθ . k h2 h2 Se puede probar que cuando θ = 1/2, el error en la discretización (error de truncación) es de orden 2 en la variable temporal y de orden 2 en la variable espacial, esto es, O(k 2 + h2 ). En ese caso el método se denomina método de Crank-Nicolson y adquiere al forma 2(un+1 − un ) = D j j k [(un − 2un + un ) + (un+1 − 2un+1 + un+1 )], j+1 j j−1 j−1 j j+1 2 h reordenando términos e imponiendo las condiciones iniciales y de frontera obtenemos el esquema numérico  −run+1 + 2(1 + r)un+1 − run+1 = run + 2(1 − r)un + run , j = 1, . . . , J, j+1 j j−1 j−1 j j+1 0 un+1 = αn+1 , un+1 = β n+1 , n ≥ 0, u = fj , j = 0, 1, . . . , J, J + 1. 0 J+1 j (2.9) Matricialmente, el esquema anterior se escribe
  • 61. 61    2(1 + r) −r 0 ··· 0 0 un+1 1   2(1 + r) −r ··· 0 0  un+1   −r   2  . .  0  un+1  . . −r 2(1 + r) −r . .   3    .  . . . ... ... ...   .  . . . . . .   .     n+1  0 ··· −r 2(1 + r) −r  uJ−1   0 un+1 0 0 ··· ··· −r 2(1 + r) J      n 2(1 − r) r 0 ··· 0 0 r(α + αn+1 ) un 1    2(1 − r) r ··· 0 0   un    r 0    2     n   . .  0  u   . .  0 r 2(1 − r) r . .   3   , =  .  +  . . . .  .. .. .. .   .   . . . . . . . .  . . .        un    0 0 ··· r 2(1 − r) r  0  J−1 r(β n + β n+1 ) un 0 0 ··· ··· r 2(1 − r) J que de forma compacta se reescribe como Q · u(n+1) = Q1 · u(n) + c(n) . 2.3. Estabilidad, consistencia y convergencia Sea u(n) = (un , un , . . . , un )T los valores nodales en el instante tn que se 1 2 J obtienen al hacer correr un cierto esquema numérico u(n+1) = Au(n) + b(n) (2.10) para obtener una aproximación numérica de una EDPs. Consideremos n n v = (v1 , . . . , vJ )T los valores nodales en el tiempo tn de la solución exacta y denotemos por e(n) = u(n) − v (n) el error cometido en la aproximación numérica. Diremos que el método numérico es estable cuando Am esté uniformemente acotada para todo k y m verificando mk ≤ T . En otras palabras, cuando la diferencia entre los valores aproximados y los reales permanezcan acotados en todo nivel del tiempo. (n) El que un esquema numérico sea consistente con un problema de contorno significa, que para pasos en la discretización suficientemente pequeños, la solución exacta del problema verifica el esquema numérico con un error tan pequeño como se desee. Finalmente, para que un esquema sea
  • 62. 62 convergente se debe verificar que para una discretización suficientemente fina, el error en en cada nodo pueda hacerse tan pequeño como se quiera j en cualquier paso del tiempo. Definición 2.2 Un esquema en diferencias finitas de la forma (2.10) que aproxima a una ecuación diferencial en derivadas parciales es un esquema convergente en el tiempo t si v (n) − u(n) → 0, cuando h, k → 0, siempre y cuando (n + 1)k → t. Diremos que la convergencia es de orden (p, q) si v (n) − u(n) = O(hp ) + O(k q ). Definición 2.3 Un esquema en diferencias finitas de la forma (2.10) es consistente a una ecuación diferencial en derivadas parciales si la solución v(x, t) satisface v (n+1) = Av (n) + b(n) + kτ (n) , donde τ (n) → 0, cuando h, k → 0. Además, se dice que es consistente de orden (p, q) si τ (n) = O(hp ) + O(k q ). La cantidad τ (n) se denomina error de truncamiento o error de consistencia. Observación 2.4 Tanto en la definición convergencia como en la de consistencia, la norma · que utilizamos cambia conforme el paso h es más pequeño, puesto que el espacio de vectores nodales crece en dimensión.
  • 63. 63 Definición 2.5 Diremos que un esquema numérico de la forma (2.10) es estable si Am ≤ C, para todo k y n con mk ≤ T . Consideremos un esquema en diferencias finitas dado matricialmente por (2.10) u(n+1) = Au(n) + b(n) . Supongamos que v = v(x, t) es una solución exacta de ecuación (2.2) que satisface la ecuación anterior salvo por un término (error residual) que denotaremos por E (n) , v (n+1) = Av (n) + b(n) + E (n) . Restando las dos ecuaciones anteriores obtenemos v (n+1) − u(n+1) = A(v (n) − u(n) ) + E (n) . Definimos el error global e(n) = v (n) − u(n) , entonces: e(n+1) = Ae(n) + E (n) = A(Ae(n−1) + E (n−1) ) + E (n) = A2 e(n−1) + AE (n−1) + E (n) = ... ... = A(n+1) e(0) + n ∑ Am E (n−m) . m=0 Asumiremos dos condiciones: que no hay error inicial (e(0) = 0), y que la norma de las potencias m-ésimas de la matriz A están uniformemente acotada, esto es, Am ≤ C (estabilidad): e (n+1) = ≤C n ∑ m=0 n ∑ m A E (n−m) ≤ n ∑ Am E (n−m) m=0 E (m) . m=0 Supongamos que nuestro esquema en diferencias finitas es consistente de orden (p, q) con la EDPs. Entonces E (m) = kτ (m) , y para cada m = 0, 1, . . . , n
  • 64. 64 podemos encontrar una constante Km verificando τ (m) ≤ Km (hp + k q ). Consideremos K(t) = m´x0≤m≤n Km . Por la propia construcción, se verifica a (m) que τ ≤ K(t) para todo 0 ≤ m ≤ n, de donde concluimos: e (n+1) ≤ Ck n ∑ τ (m) ≤ Ck(n + 1)K(t)(hp + k q ). m=0 Pero cuando k → 0 entonces k(n + 1) → t, y así conseguimos convergencia de orde (p, q). En definitiva, hemos probado parcialmente el célebre teorema de Lax, que enunciamos de manera simplificada. Teorema 2.6 (Lax) Un esquema numérico en diferencias finitas del tipo (2.10) consistente a una EDPs es convergente si, y solo si, es estable.
  • 65. Apéndice A Analisis numérico matricial A.1. Normas vectoriales Para introducir nociones de consistencia y convergencia es necesario utilizar normas vectoriales con la finalidad de medir el error de la aproximación. Definición A.1 aplicación Una norma en un espacio vectorial real V es una · :V →R verificando: (1) u ≥ 0 para todo u ∈ V , y (Positividad). u = 0 si, y solo si, u = 0. (2) λu = |λ| u , para todo λ ∈ R y u ∈ V . (Homogeneidad). (3) u+v ≤ u + v , para todo u, v ∈ V . (Desigualdad Triangular). Para nuestros propósitos, consideraremos el espacio vectorial V = Rm×1 y definiremos las normas más utilizadas para tema que nos ocupa. Una elección común es la norma del supremo (o norma del infinito), denotada por · ∞ : u ∞ = sup |ui |. 1≤i≤m 65
  • 66. 66 Es fácil comprobar que se verfican todas las propiedades requeridas. En la práctica es muy valioso obtener una cota de la norma del supremo, puesto que en ese caso tenemos acotadas todas las componentes del error por ella. Para algunos problemas, sin embargo, puede ser más apropiado y fácil de calcular cotas para otras normas. Son frecuentes las siguientes: u 1 = m ∑ |ui |, (1-norma) i=1 u 2 = m ∑ |ui |2 , (2-norma o norma euclídea) i=1 Ellos son casos particulares de una familia general de p-normas, definidas por ( m )1/p ∑ u p= |ui |p . i=1 La norma del supremo se obtiene cuando hacemos tender p → ∞ de la p-norma. Cuando se trata de comparar dos vectores, uno que representa los valores nodales exactos de una función, y otro que representa valores aproximados, (donde los nodos están separados uniformemente por una longitud h > 0), es mucho más apropiado utilizar la norma 2,h definida por u 2,h = h m ∑ |ui |2 . i=1 Un hecho importante que relaciona todas estas normas es que son equivalentes. Definición A.2 Dos normas · y · ∗ se dice que son equivalentes si existen constantes a, b > 0 tales que a u ≤ u ∗ ≤b u , para todo u ∈ Rm×1 De manera informal, la equivalencia viene a decir que si una sucesión de vectores converge a 0 respecto de una norma cualquiera de ellas, entonces la
  • 67. 67 sucesión tambien converge a 0 respecto de todas las demás, y si una cierta cantidad está acotada bajo una norma, automáticamente está acotada bajo todas las demás normas equivalentes (quizás cambie la cota). De hecho, en dimensión finita, todas las normas son equivalentes. A.2. Normas matriciales Proposición A.3 Sea · : Rm×1 → R una norma vectorial cualquiera y definamos con el mismo nombre la aplicación · : Rm×m −→ R A A := sup u∈Rm×1 Au u (A.1) Entonces · es una norma definida en el conjunto de las matrices cuadradas Rm×m . Además se verifican las siguientes propiedades: (a) Au ≤ A u para todo A ∈ Rm×m y u ∈ Rm×1 . (b) AB ≤ A B para todo A, B ∈ Rm×m . Definición A.4 Cualquier norma · : Rm×m → R inducida por una norma vectorial mediante (A.1) se denomina norma matricial. Definimos el radio espectral de una matriz A como ρ(A) = m´x {|λj |} , a 1≤j≤m donde λj son los valores propios de A.
  • 68. 68 Proposición A.5 Si ρ(A) denota el radio espectral de una matriz A, entonces para cualquier norma matricial · se verifica la desigualdad ρ(A) ≤ A . Prueba. El radio espectral se define como el m´x {|λ1 |, . . . , |λm |}, donde λi a m×1 son los valores propios de A. Sea u ∈ R es vector propio asociado a un valor propio λi , entonces |λi | u = λi u = Au ≤ A u . Dividiendo por u en la desigualdad anterior obtenemos que |λi | ≤ para todo i ∈ {1, . . . , m} y, por tanto, A ρ(A) = m´x {|λi |} ≤ A a . Proposición A.6 Para las normas vectoriales obtenemos las siguientes normas matriciales: ∑ (a) A 1 = m´x1≤j≤m m |aij |. a i=1 ∑m (b) A ∞ = m´x1≤i≤m j=1 |aij |. a √ (c) A 2 = ρ(AT A). · 1, · ∞ y · 2
  • 69. 69 Teorema A.7 Consideremos el sistema lineal recursivo u(n+1) = A · u(n) . (A.2) Son equivalentes: (I) La sucesión de vectores u(n) está uniformemente acotada en norma para cualquier condición inicial u(0) , u(n) ≤ C1 (= cte), para todo n ∈ N, u(0) ∈ Rm×1 . (II) Las potencias de A están uniformemente acotadas, Am ≤ C2 (= cte), para todo m ∈ N. En las condiciones equivalentes del teorema anterior, diremos que el sistema recursivo (o la matriz A) es estable. Teorema A.8 Si el radio espectral verifica ρ(A) ≤ 1, y A no tiene valores propios defectivos (esto es, su multiplicidad algebraica es diferente a la multiplicidad geométrica) de módulo 1, entonces la matriz A es estable.
  • 70. 70 Teorema A.9 forma Una matriz tridiagonal de dimensión m × m de la  b  a  0  T = . . .  0 0  0  0 . . a b c . . . . . . . . . , . . . . . . .  0 ··· a b c 0 ··· ··· a b c b 0 c ··· ··· 0 0 . . . tiene valores propios √ λj = b + 2c πj a cos( ), c m+1 j = 1, 2, . . . , m.