EDDP Cap10
EDDP Cap10
EDDP Cap10
203
204 CAPÍTULO 10. ECUACIONES DIFERENCIALES EN DERIVADAS PARCIALES
Ejercicio:
Comprobar que la anterior definición general coincide con los tipos de las ecuaciones de
ondas, difusión y Poisson avanzados anteriormente.
∂ T (x,t) ∂ 2 T (x,t)
=κ
∂t ∂ x2
que es más ilustrativa y sencilla al mismo tiempo. Esta ecuación representa la evolución del perfil
de temperatura T (x,t) en función del tiempo en una barra de coeficiente térmico κ . Una ecuación
similar es la ecuación de difusión, que da la concentración C(x,t) en función del tiempo de un
soluto con coeficiente de difusión D(x) en un disolvente :
! "
∂C(x,t) ∂ ∂C(x,t)
= D(x)
∂t ∂x ∂x
T (x = −L/2,t) = Ta
T (x = L/2,t) = Tb
así como condiciones iniciales:
T (x, 0) = f (x)
Para discretizar el espacio y el tiempo, tomamos un paso de integración espacial de h y un paso
temporal τ, con lo que tn = nτ y xi = ih − L/2. En general, estos espaciados son distintos, y
como veremos, hay relaciones entre ellos que optimizan la precisión numérica del resultado.
Supondremos que los índices i y n comienzan en 0, de acuerdo con la convención en los lenguajes
C y C++. Tomaremos condiciones de contorno nulas por simplicidad.
10.2. LA ECUACIÓN DE PROPAGACIÓN DEL CALOR (ECUACIÓN DE DIFUSIÓN) 205
De aquí podemos despejar los valores de la temperatura en un punto del espacio en un instante
dado en función de la temperatura de este punto y los vecinos en instantes anteriores:
κτ $ n %
Tin+1 = Tin + 2 Ti+1 − 2Tin + Ti−1
n
h
que en forma matricial queda como
Tn+1 = ATn
con
T0n = Ta
T1n
..
Tn = .
n
TN−1
TNn = Tb
κτ
A=I+ 2 D
h
donde I es la matriz identidad y D la siguiente matriz tridiagonal
0 0 0 ··· 0 0
1 −2 1 · · · 0 0
0 1 −2 1 · · · 0
.. . . . . . . . .
D= . . . . . 0
0 · · · 1 −2 1 0
0 ··· 0 1 −2 1
0 ··· 0 0 0 0
De hecho, las filas y columnas primera y última corresponden a las condiciones de contorno, y
no hace falta calcularlas en cada iteración, ya que las componentes 0 y N de T permanecen inva-
riables, en caso de que las condiciones de contorno sean constantes en el tiempo, que es el caso
206 CAPÍTULO 10. ECUACIONES DIFERENCIALES EN DERIVADAS PARCIALES
Tn+1 = An+1 T0
1. Para valores grandes del tiempo (n), la solución viene dominada por el vector propio
correspondiente al valor propio de mayor valor absoluto λm :
2. Si |λm | > 1, la solución divergerá para tiempos elevados, por lo que decimos que la solución
es inestable:
Tin+1 " λmn+1 am vmi −→ #
Los valores propios dependen del espaciado en el espacio y el tiempo. Su número y valor depende
del tamaño de la red de integración-
con
0 0 ··· 0
α −2α α ···
.. .. .. ..
D= . . . .
··· α −2α α
··· 0 0 0
κτ
yα= , se puede demostrar que los valores propios de A son
h2
! "
2 kπ
λk = 1 − 4α sin k = 1, . . . , N − 1
2N
Como esto se debe de cumplir para cualquier valor de k y N , entonces tenemos la condición
1
0≤α ≤
2
o lo que es lo mismo
κτ 1
2
≤
h 2
Vemos que los pasos de integración espaciales y temporales deben de cumplir la relación
τ 1
2
≤
h 2κ
para que el método sea estable. Si κ = 12 y h = 0,1, se debe cumplir τ ≤ 0,01 para que el método
sea estable. Estta condición puede requerir un volumen de cálculo muy considerable para la
integración temporal. Vamos a ver que hay otros métodos de integración con condiciones de
estabilidad menos restrictivas. Se pude demostrar que la condición ded estabilidad implica que
en un paso temporal de integración sólo pasa una cantidad apreciable de calor a las celdillas
vecinas inmediatas. Si κ es muy grande, el calor se difunde deprisa y el paso temporal debe de
ser pequeño.
κτ
que, denominando α = queda como
h2
n
−αTi+1 + (1 + 2α)Tin − αTi−1
n
= Tin−1
Esta ecuación proporciona una relación de recurrencia que liga los valores de la temperatura
en un instante con los valores en el instante anterior. Podemos escribir esta relación en forma
matricial como
BTn = Tn−1
con B una matriz tridiagonal
1 0 ··· 0
−α 1 + 2α −α ···
.. .. .. ..
B= . . . . = I − αD
··· −α 1 + 2α −α
··· 0 0 1
Vemos que la matriz B no es la inversa de la matriz A por lo que el método de diferencias
regresivas es esencialmente distinto del de diferencias progresivas:
AB = I − α 2 D2
En el caso cde diferencias regresivas, tenemos que resolver un sistema de ecuaciones para avanzar
un paso en el tiempo. Este sistema se puede resolver por factorización LU , y, si N es muy grande,
por métodos iterativos como el método SOR o el método del gradiente conjugado. El método de
diferencias regresivas tiene un buen comportamiento en lo que concierne a la estabilidad. Se
puede demostrar analíticamente que los valores propios de B son
! "
2 kπ
λk = 1 + 4α sin k = 1, . . . , N − 1
2N
Como α > 0, λk > 1, con lo que la matriz inversa existe, y además, como los valores propios de
la inversa son los inversos de los valores propios
ρ(B−1 ) < 1
por lo que el método siempre es estable. Sin embargo, estabilidad no es sinónimo de precisión
numérica, y el hecho de que la derivada temporal no esté centrada en el tiempo, hace que el méto-
do tenga una precisión del orden de O(τ + h2 ), al igual que el método de diferencias progresivas.
Sería deseable un método que convergiese más rápidamente en el tiempo, al menos como τ 2 .
Si promediamos ambas expresiones, tendremos un error en O(τ 2 ) para la derivada primera tem-
poral. Esta es la idea del algoritmo de Crank-Nicolson, que equivale a aproximar la derivada
temporal mediante diferencias centradas en el tiempo. Si promediamos ambas expresiones
n − 2T n + T n
Tin+1 − Tin Ti+1 i i−1
= κ
τ h 2
Tin+1
− Tin T n+1
i+1 − 2Tin+1 + Ti−1
n+1
= κ
τ h2
obtenemos , -
Tin+1 − Tin κ n − 2T n + T n
Ti+1 i i−1
n+1
Ti+1 − 2Tin+1 + Ti−1
n+1
= +
τ 2 h2 h2
Esta ecuación se puede redisponer como
, - ! n
n+1
− 2Tin+1 + Ti−1
n+1 n "
− 2Tin + Ti−1
Tin+1 κ Ti+1 Tin κ Ti+1
− = +
τ 2 h2 τ 2 h2
que se puede escribir en la forma matricial
B1 Tn+1 = A1 Tn
con
1 0 0 ···
α α
1−α ···
2 2 α
..
A1 = . . . ..
.
..
. . =I+ D
α α 2
··· 1 − α
2 2
··· 0 0 1
1 0 ··· 0
α α
− 1+α − ···
2 2 α
.. . . .
B1 = . . . . . . . =I− D
2
··· −α 1 + α −α
2 2
··· 0 0 1
con
0 0 ··· 0
1 −2 1 · · ·
.. .. .. ..
D= . . . .
· · · 1 −2 1
··· 0 0 0
κτ
si las condiciones de contorno son constantes. En A1 y B1 hemos definido α = 2 . La matriz
h
B1 es definida positiva con diagonal dominante, por lo que es invertible. Como es tridiagonal,
210 CAPÍTULO 10. ECUACIONES DIFERENCIALES EN DERIVADAS PARCIALES
T (x,t) = A(t)eikx
An+1
ξ= n
A
Si |ξ | > 1 la solución crecerá con el tiempo y el método es inestable. En caso contrario, la
solución disminuye con el tiempo y el sistema es estable. Vamos a aplicar este método a los tres
esquemas de integración anteriores.
Para el esquema FCTS
κτ $ n %
Tin+1 = Tin + 2
Ti+1 − 2Tin + Ti−1n
h
tenemos
κτ 2 3
An+1 eik jh = An eik jh + 2 An eik( j+1)h − 2An eik jh + An eik( j−1)h
h
10.2. LA ECUACIÓN DE PROPAGACIÓN DEL CALOR (ECUACIÓN DE DIFUSIÓN) 211
y simplificando obtenemos
! "
κτ 2 ikh 3 2κτ 4κτ 2 kh
ξ = 1+ 2 e +e −ikh
− 2 = 1 + 2 [cos(kh) − 1] = 1 − 2 sin
h h h 2
por lo que la condición |ξ | ≤ 1 sólo se cumple si
! "
4κτ 2 kh
sin ≤2
h2 2
que a su vez se cumple siempre si
2κτ
≤1
h2
Esta condición, en el caso de la ecuación de difusión, implica que la longitud de difusión en un
intervalo temporal τ, √
d = 2Dτ
sea inferior a la longitud de una celdilla espacial h.
Si aplicamos el criterio de von Neumann al método de diferencias finitas regresivas
4 n+1 5
Tin+1 = Tin + α Ti+1 − 2Tin+1 + Ti−1
n+1
obtenemos
κτ 2 n+1 ik( j+1)h 3
An+1 eik jh = An eik jh +A e − 2A n+1 ik jh
e + An+1 ik( j−1)h
e
h2
que, procediendo de forma análoga, obtenemos
1
ξ= ! "
4κτ 2 kh
1 + 2 sin
h 2
Por lo tanto, siempre se cumple |ξ | ≤ 1, y el método es incondicionalmente estable para cualquier
paso de integración temporal τ.
Análogamente, en el algoritmo de Crank-Nicolson
, -
Tin+1 Tin κ Ti+1 n+1
− 2Tin+1 + Ti−1
n+1 n − 2T n + T n
Ti+1 i i−1
= + +
τ τ 2 h2 h2
tenemos
An+1 eik jh = An eik2jh + 3
κτ n+1 ik( j+1)h n+1 ik jh n+1 ik( j−1)h n ik( j+1)h n ik jh n ik( j−1)h
A e − 2A e + A e +A e − 2A e + A e
2h2
con lo que obtenemos ! "
2κτ 2 kh
1 − 2 sin
h 2
ξ= ! "
2κτ kh
1 + 2 sin2
h 2
y el método es también incondicionalmente estable.
212 CAPÍTULO 10. ECUACIONES DIFERENCIALES EN DERIVADAS PARCIALES
T (0,t) = T (L,t)
# #
∂ T (x,t) ## ∂ T (x,t) ##
=
∂ x #x=0 ∂ x #x=L
Junto con las condiciones de contorno, válidas para cualquier valor del tiempo, hay que propor-
cionar condiciones iniciales, que proporcionan la distribución espacial del sistema en un instante
inicial. Esto equivale a dar el perfil de temperaturas en el instante inicial
T (x, 0) = f (x)
n(L/2,t) = n(−L/2,t) = 0
En el caso de 235 U, D " 105 m2 /s y C " 108 s−1 . Cuando la longitud L es mayor que una
longitud crítica Lc , entonces se alcanza la masa crítica y se produce la reacción en cadena, con
10.2. LA ECUACIÓN DE PROPAGACIÓN DEL CALOR (ECUACIÓN DE DIFUSIÓN) 213
que resulta en
j+1 j Dτ . j j j
/
j
ni = ni + n i+1 − 2ni + n i−1 +Cτni
h2
j j
para i = 1, . . . , N − 1, con n0 = nN = 0.
donde
ψ1n
ψ2n
% =
n
..
.
ψNn
La solución 10.3 se puede interpretar como el primer orden del desarrollo en serie de Taylor de
la solución de la ecuación 10.2. Si utilizamos el método de diferencias regresivas tenemos
ψin+1 − ψin N
ih̄ = " Hi j ψ n+1
τ i=0
j
que nos permite avanzar un paso en el tiempo resolviendo un sistema de ecuaciones. Tomando
el promedio de 10.3 y 10.4 obtenemos el algoritmo de Crank-Nicolson
! " ! "
iτ iτ
I+ H % n+1
= I − H %n
2h̄ 2h̄
1−x
ex =
1+x
Esta expresión no es otra cosa que el aproximante de Padé más bajo de la exponencial, que tiene
un radio de convergencia más elevado que la serie de Taylor. Además el operador
! "−1 ! "
iτ iτ
I+ H I− H
2h̄ 2h̄
inversas de matrices, lo que puede resultar un serio inconveniente para grandes dimensiones. Una
forma alternativa de plantear los cálculos es reordenar 10.5de la forma
! "−1 0 ! "1
iτ iτ
% n+1
= I+ H 2I − I + H %n
2h̄ 2h̄
9 ! "−1 : ! "−1
iτ iτ
= 2 I+ H −I % = 2 I + H
n
%n − %n
2h̄ 2h̄
El primer término del último miempro se calcula como la solución !n del sistema de ecuaciones
! "
1 iτ
I + H !n = %n
2 2h̄
%n+1 = !n − %n
Por lo tanto, cada paso de integración implica sólamente la solución de un sistema de ecuaciones
lineales complejo.
∂φ ∂φ ∂ 2φ
= −φ −κ 2
∂t ∂x ∂x
Un método adecuado es el promedio de diferencias progresivas
Notemos que el término no lineal se ha evaluado de forma regresiva tanto en el método progresivo
como en el regresivo, pero con derivadas espaciales centradas. Esta relación se puede poner como
. α / n+1 . α / n
I+ D ! = I − D ! − δ &(!n )C!n
2 2
con
0 1 0 ··· 0 0
−1 0 1 ··· 0 0
0 −1 0 1 · · · 0
C = ... . . . . . . . . . . . . 0
0 · · · −1 0 1 0
0 · · · 0 −1 0 1
0 ··· 0 0 −1 0
φ0n 0 0 · · · 0
0 φn 0 ··· 0
1
&(!n ) = 0 0 φ2 . . . 0
n
.. . . . . . .
. . . . 0
0 · · · 0 0 φNn
φ0n
φn
1
!n = ..
.
φNn
κτ τ
α= 2
δ=
h 2h
Tenemos finalmente
. α /−1 . α / n . α /−1 nT
! n+1
= I+ D I − D ! −δ I + D ! C!n
0 . 2 21 2
α /−1 . α /−1
= 2 I+ D − I !n − δ I + D &(!n )C!n
2 2
Resolviendo . α /
I + D % n = !n
2
y . α / n
I+ D χ = &(!n )C!n
2
tenemos la relación.
!n+1 = 2%n − !n − δ χ n
Vemos que tenemos que resolver dos sistemas lineales por paso de integración.
10.2. LA ECUACIÓN DE PROPAGACIÓN DEL CALOR (ECUACIÓN DE DIFUSIÓN) 217
Ejercicio:
Resolver la ecuación de Burger con las condiciones iniciales φ (x, 0) = −1 si x > 0 y φ (x, 0) =
1 si x < 0 y las condiciones de contorno φ (±L/2,t) = ∓1. Tomar L = 10 y κ = 1. Comparar con
el resultado exacto para L −→ #
F(x,t) − F(−x,t)
φ (x,t) =
F(x,t) + F(−x,t)
donde 7 ! "8
1 t−x x − 2t
F(x,t) = e 1 − erf √
2 2 t
con erf (x)la función de error.
Otra ecuación no lineal de interés es la ecuación de Korteweg-DeVries(KdV), que describe
el comportamiento de solitones:
∂ρ ∂ ρ ∂ 3ρ
= −6ρ −
∂t ∂ x ∂ x3
Al igual que en caso anterior tomamos el promedio de diferencias finitas progresivas y regresivas,
calculando el término no lineal de forma regresiva. Las diferencias espaciales se toman centradas.
Para la derivada tercera tenemos
d 3 f (x2 ) f4 − 2 f3 + 2 f1 − f0
3
"
dx 2h3
con lo que obtenemos para las diferencias progresivas
Tenemos el sistema
(I + β F1 ) ρ n+1 = (I − β F1 ) ρ n − 6γ&(ρ n )Gρ n
que se puede reorganizar como
ρ n+1 = 2!n − ρ n − 6γ χ n
Ejercicio:
! "
L
Resolver la ecuación de KdV con las condiciones iniciales ρ x = ± = 0 y condiciones
2
de contorno periódicas. Comparar con la solución analítica ρ(x,t) = cosh−2 (x − 4t).
h
. /
j+1 j j−1 j j j j j j j−1
ui = 2ui − ui − λ ui+1 − 2ui + ui−1 = 2(1 − λ 2 )ui + λ 2 (ui+1 + ui−1 ) − ui
2
(10.6)
y
∂ u(x, 0)
= g(x)
∂t
para 0 < x < l. En el caso de ondas en una cuerda, estas condiciones equivalen a proporcionar la
posición y la velocidad de cada punto en el instante inicial. La relación dada por la Ec. 10.6 se
puede escribir en forma matricial como
u j+1 = Au j − u j−1
con
2 0 0 0 ··· 0
λ 2(1 − λ )
2 2 λ 2 0 ··· 0
0 λ 2 2(1 − λ ) λ
2 2 0 0
A= ... ... ... ..
0 0 .
.. .. ...
. . λ 2 2(1 − λ 2 ) λ 2
0 0 ··· 0 0 2
y
j
u0
j
u1
..
u =
j
.
j
uN−1
j
uN
Notemos que las filas primera y última de A lo único que hacen es mantener las condiciones
j j
de contorno de u0 y uN . En el caso de que estas condiciones de contorno sean nulas (u(0,t) =
u(l,t) = 0 para t > 0), estas dos filas se pueden suprimir junto con las columnas primeras y última
de A. El primer vector es
f (x0 )
f (x1 )
..
u0 = .
f (xN−1)
f (xN )
Las componentes de u1 las podríamos tomar como u1i = f (xi ) + τg(xi ) pero esto sería una apro-
ximación de sólo primer orden en el tiempo, mientras que las derivadas centradas son de segundo
orden, lo que produciría un deterioro de la precisión de la solución en comparación con la natura-
leza de segundo orden del método. Un método de proporcionar condiciones iniciales de segundo
orden en τ es considerar el desarrollo en serie
∂ u(xi , 0) 1 ∂ 2 u(xi , 0) 2
u1i = u0i + τ+ τ + O(τ 3 )
∂t 2 ∂t 2
De las condiciones iniciales tenemos
∂ u(xi , 0)
= g(xi )
∂t
220 CAPÍTULO 10. ECUACIONES DIFERENCIALES EN DERIVADAS PARCIALES
∂ 2 u(xi , 0) 2 ∂ u(xi , 0)
2
= c = c2 f '' (xi )
∂t 2 ∂x 2
1
u1i = u0i + g(xi )τ + c2 τ 2 f '' (xi )
2
En caso de que f (xi ) no esté disponible en forma continua sino sólo en la malla de puntos, o
simplemente que la derivada analítica de f (x) sea compleja de calcular, podemos reemplazar
f '' (xi ) por su derivada centrada,
λ2
u1i = f (xi ) + g(xi )τ + [ f (xi+1 ) − 2 f (xi ) + f (xi−1 )]
2
λ2
= (1 − λ 2 ) f (xi ) + [ f (xi+1 ) + f (xi−1 )] + g(xi )τ
2
ξ 2 − 2ξ (1 − λ 2 + λ 2 cos kh) + 1 = 0
El término fuera de la raíz está comprendido entre 1 y 1 −2λ 2 . Nunca puede hacerse mayor que 1
en valor absoluto si λ < 1, pero puede hacerse negativo y mayor que la unidad en valor absoluto
si λ > 1. La raíz es siempre un número imaginario si λ < 1, ya que el primer término es siempre
inferior a la unidad. Sin embargo, puede hacerse mayor que la unidad en valor absoluto si λ > 1.
Por lo tanto, se cumple que |ξ | < 1 si λ < 1 o lo que es lo mismo cτ < h, que nos dice que para
que la solución sea estable, la distancia que se propaga la onda durante un paso de integración
temporal debe de ser menor que el paso de integración espacial.
10.4. LAS ECUACIONES DE POISSON Y DE LAPLACE 221
$2 !(r) = 0
∂ 2 !(x, y) ∂ 2 !(x, y, z)
+ = f (x, y)
∂ x2 ∂ y2
b−a
h=
M+1
y N subintervalos en la coordenada y (N + 1 puntos)
d −c
k=
N +1
Tomamos derivadas centradas en el espacio en ambas coordenadas, con lo que tendremos un
método con error O(h2 + k2 ). La ecuación en diferencias queda como
!(x0 , y j ) = g(x0 , y j )
!(xM , y j ) = g(xM , y j )
!(xi , y0 ) = g(xI , y0 )
!(xi , yN ) = g(xI , yN )
222 CAPÍTULO 10. ECUACIONES DIFERENCIALES EN DERIVADAS PARCIALES
Las condiciones de contorno dan !1,0 = !2,0 = !3,0 = !0,1 = !0,2 = !0,3 = 0, !2,4 = !4,2 =
50,!3,4 = !4,3 = 75. El sistema lineal asociado es
4 −1 0 −1 0 0 0 0 0 !1 25
!2 50
−1 4 −1 0 −1 0 0 0 0
0 −1 4 −1 0 −1 0
0 0 !3 150
−1 0 −1 4 −1 0 −1 0 0 !4 0
0 −1 0 −1 4 −1 0 −1 0 !5 = 0
0 0 −1 0 −1 4 −1 0 −1 !6 50
0 0 −1 0 −1 4 −1 0
0 !7 0
0 0 0 0 −1 0 −1 4 −1 !8 0
0 0 0 0 0 −1 0 −1 4 !9 25
Este sistema se puede resolver por el método LU ya que la matriz está bien condicionada.
Cuando el sistema es muy grande es mejor utilizar el método iterativo de Gauss-Seidel. En
este método ponemos
9 ! "2 :
1 $ % h $ %
!(xi , y j ) = 2$ %2 3 !(xi+1 , y j ) + !(xi−1 , y j ) + !(xi , y j+1 ) + !(xi , y j−1 ) + h2 f (xi , y j )
2 h
+1 k
k
y ponemos todos los potenciales a cero salvo las condiciones de contorno. Calculamos cada
!(xi , y j ) con las condiciones iniciales, que llamamos !(0) (xi , y j ) comenzando por las capas ex-
teriores. En cada iteración recalculamos !(k) (xi , y j ) con los #valores obtenidos en la iteración #
(k−1) # (k+1) (k) #
anterior ! (xi , y j ) hasta que en dos iteraciones sucesivas#! (xi , y j ) − ! (xi , y j )# < ε,
donde ε es una tolerancia prestablecida .
224 CAPÍTULO 10. ECUACIONES DIFERENCIALES EN DERIVADAS PARCIALES