1 Introducción 2 Ejemplo Clásico Sencillo

Anuncio
DIFERENCIAS FINITAS Y ECUACIONES DIFERENCIALES
PARCIALES
L. Héctor Juárez V.
Departamento de Matemáticas, UAM-I, México, D. F.
Guanajuato, Gto, Junio 2006
1
Introducción
Este minicurso constituye una introducción a la solución numérica de ecuaciones diferenciales
parciales del tipo parabólico. Se discuten los aspectos básicos fundamentales como son:
derivación de los esquemas de diferencias finitas, estudio del error, de la convergencia y de la
estabilidad de los métodos. Además se incluyen programas en el ambiente MATLAB para
ilustrar algunos resultados numéricos con los diferentes esquemas.
2
Ejemplo Clásico Sencillo
Comezamos con el estudio del modelo más sencillo de una ecuación diferencial parcial del
tipo parabólico, a saber la ecuación que modela el flujo ó propagación de calor en una barra
homogenea de longitud finita sin fuentes de calor. La ecuación es la siguiente:
k ∂ 2u
∂u
=
, en 0 < x < L, t > 0
∂t
ρCp ∂x2
u(0, t) = u(L, t) = 0, t > 0,
u(x, 0) = u0 (x) , 0 ≤ x ≤ L ,
(2.1)
(2.2)
(2.3)
donde u = u(x, t) es la temperatura de la barra en la posición x al tiempo t, k es el coeficiente
de conductividad térmica, ρ es la densidad de la barra, Cp es el calor especı́fico, y L es la
longitud de la barra. Suponemos que los parametros k, ρ y Cp son constantes.
Adimensionalización. Con el objeto de simplificar la ecuación diferencial anterior se inx 0
u
0
troducen las siguientes variables adimensionales: x = , u = , donde U = max u0 (x)
L
U
∂u
∂u0
con 0 ≤ x ≤ L. Con lo anterior se obtienen las siguientes relaciones
= U
y
∂t
∂t
0
∂2u
U ∂2u
=
. Sustituyendo estas últimas expresiones en la ecuación (2.1) se obtiene
∂x2
L2 ∂x0 2
Diferencias Finitas y E.D.P.
2
0
L2 ρ Cp ∂u0
∂ 2u
0
la ecuación
=
. Si se toma t = t k/L2 ρ Cp , entonces las ecuaciónes (2.1)–
02
k
∂t
∂x
(2.3) se tranforman, después de quitar la comilla de las variables x y u, en la ecuación más
sencilla:
ut (x, t) = uxx (x, t) en 0 < x < 1, t > 0
(2.4)
u(0, t) = u(1, t) = 0, t > 0,
(2.5)
u(x, 0) = u0 (x), 0 ≤ x ≤ 1,
(2.6)
en donde ut y uxx representan derivadas de u respecto a t y x, respectivamente. En las
u(x,t)
1
0
Figura 1. Distribución de temperatura en una barra uniforme
secciones siguientes consideraremos la ecuación adimensional (2.4)–(2.6), a menos que se
especifique lo contrario. La Figura 1 ilustra el problema modelo.
3
Método de separación de variables
La ecuación anterior tiene una solución en forma de series de Fourier que se puede calcular
por medio del método de separación de variables. El método de separción de variables es un
método con limitaciones ya que no es aplicable a casos un poco más generales. Sin embargo,
proporciona soluciones útiles para propósitos de comparación, además de que proporciona
un medio para el análisis de la estabilidad de los métodos de diferencias finitas. En el método
de separción de variables se buscan soluciones de la forma u(x, t) = X(x) T (t). Sustituyendo
00
en la ecuación (2.4), obtenemos X Ṫ = X T , en donde el punto indica derivación respecto al
00
X
Ṫ
=
tiempo y las comillas derivación respecto a la posición. De lo anterior se tiene que
T
X
debe ser igual a una constante −k 2 , debido a que el lado izquierdo depende sólo de t y el lado
derecho depende sólo de x. Nombramos −k 2 a esta constante para enfatizar que debe ser
2
negativa. Luego entonces, se tiene X(x) = sen kx, y T (t) = e−k t . Por lo tanto, la solución
debe de ser de la forma
2
u(x, t) = e−k t sen kx.
(3.1)
Diferencias Finitas y E.D.P.
3
Ahora es claro que el valor negativo −k 2 se toma porqué no es posible obtener soluciones
con crecimiento exponencial en el problema fı́sico. En ausencia de fuentes de calor, y debido
a las condiciones de frontera u = 0 en los extremos de la barra, el fenómeno de difusión
presente en el problema provoca que la temperatura disminuya a partir del valor inicial.
Condiciones de frontera. Las condiciones de frontera sirven para deteminar los valores
que puede tomar la constante k. La primera condición de frontera u(0, t) = 0 es satisfecha
automáticamente por (3.1). La segunda condición de frontera
2
u(1, t) = e−k t sen k = 0,
es satisfecha por (3.1) si k = m π para m = 1, 2 . . ..
Modos de Fourier. De acuerdo a lo anterior, el problema (2.4)–(2.5) tiene una infinidad
de soluciones denominadas modos de Fourier, y éstas son de la forma
2 π2 t
um (x, t) = e−m
sen mπx .
(3.2)
Por lo tanto, la solución general de la ecuación diferencial (2.4), y que satisface las condiciones
de frontera (2.5), es una superposición de estos modos de Fourier. Es decir
u(x, t) =
∞
X
2 π2 t
am e−m
sen mπx
(3.3)
m=1
en donde las constantes am se encuentran de las condiciones iniciales (2.6) y de las condiciones
de ortogonalidad de las funciones propias sen mπx.
Ortogonalidad. Las funciones sen mπx, m = 1, 2, . . . son ortogonales bajo el producto
R1
R1
escalar de funciones hf, gi = 0 f g dx. Además 0 sen2 mπx dx = 1/2. La condición inicial
(2.6) debe ser satisfecha por (3.3):
u(x, 0) =
∞
X
am sen mπx = u0 (x).
m=1
Multiplicando por sen nπx ésta última ecuación e integrando se obtiene
Z 1
an = 2
u0 (x) sen(nπx) dx, n = 1, 2, . . .
(3.4)
0
Por lo tanto la solución del problema (2.4)–(2.6) en terminos de series de Fourier es
Z 1
∞
X
−(mπ)2 t
u(x, t) =
am e
sen(mπx),
am = 2
u0 (x) sen(mπx) dx.
m=1
(3.5)
0
Esta solución puede considerarse como una solución analı́tica del problema, pero tiene el
inconveniente que debemos calcular una infinidad de integrales para encontrar los coeficientes
Diferencias Finitas y E.D.P.
4
am y despues sumar un número infinito de términos, lo cual no es posible en la práctica. Para
encontrar una solución concreta se deben evaluar sólo un número finito de términos de la
serie, lo cual la convierte en una solución aproximada desde el punto de vista práctico. Una
de las principales limitación del método es que no es generalizable a ecuaciones diferenciales
parciales ligeramente más complicadas.
4
Esquema explı́cito de diferencias finitas
Los métodos de aproximación constituyen una alternativa cada vez más viable para encontrar
soluciones de ecuaciones diferenciales. De entre los métodos más populares se encuentran
los métodos de diferencias finitas debido a su simplicidad. El esquema más sencillo para
el problema parábolico unidimensional es el esquema explı́cito de diferencias finitas. A
continuación presentamos como se encuentra el esquema:
1. Construcción de la malla Se divide el intervalo (0, 1) en J subintervalos y el intervalo
de tiempo (0, tf ), donde tf es el tiempo final, en N subintervalos
∆x = 1/J
xj = j ∆x, j = 0, 1, ..., J.
tf
∆t =
tn = n ∆t, n = 0, 1, ..., N.
N
El conjunto de puntos (xj , tn ) ası́ construidos constituyen una malla ó latice en donde
t
t n+1
tn
∆x
1111
0000
1
0
1
0
11
00
11111111
00000000
1
0
1
0
1
0
0
1
1
0
1
0
11
00
xj−1 x j x j+1
∆t
x
Figura 2. Malla y molécula computacional para el esquema explı́cito
queremos encontrar los valores aproximados Ujn de la solución exacta u(xj , tn )
2. Aproximación de las derivadas por medio de diferencias finitas. Para encontrar
una aproximación de las derivadas que aparecen en la ecuación diferencial, en el punto
Diferencias Finitas y E.D.P.
5
(xj , tn ), utilizamos las siguientes expansiones en serie de Taylor (suponiendo que la solución
es suficientemente suave):
(∆t)2
(∆t)3
utt (x, t) +
uttt (x, t) + ...
2!
3!
(∆x)2
(∆x)3
u(x + ∆x, t) = u(x, t) + ∆x ux (x, t) +
uxx (x, t) +
uxxx (x, t) + ...
2!
3!
(∆x)2
(∆x)3
u(x − ∆x, t) = u(x, t) − ∆x ux (x, t) +
uxx (x, t) −
uxxx (x, t) + ...
2!
3!
u(x, t + ∆t) = u(x, t) + ∆t ut (x, t) +
(4.1)
(4.2)
(4.3)
Aproximación de ut en el punto (xj , tn ). Se obtiene evaluando (4.1) en dicho punto:
(∆x)2
utt (xj , τ ), τ ∈ (tn , tn+1 ) ,
2!
y posteriormente despejando ut (xj , tn ), para obtener
u(xj , tn+1 ) = u(xj , tn ) + ∆t ut (xj , tn ) +
ut (xj , tn ) =
u(xj , tn+1 ) − u(xj , tn ) ∆t
−
utt (xj , τ ).
∆t
2
(4.4)
Ujn+1 − Ujn
con error O(∆t).
∆t
(4.5)
Por lo tanto, podemos escribir:
ut (xj , tn ) ≈
Aproximación de uxx en el punto (xj , tn ). Se obtiene evaluando (4.2)–(4.3) en dicho
punto y sumando para obtener:
u(xj+1 , tn ) + u(xj−1 , tn ) = 2 ut (xj , tn ) + (∆x)2 uxx (xj , tn ) +
(∆x)4
uxxxx (ξ, tn )
12
con ξ ∈ (xj−1 , xj+1 ). Despejando uxx (xj , tn ), se obtiene:
uxx (xj , tn ) ≈
u(xj+1 , tn ) − 2 ut (xj , tn ) + u(xj−1 , tn ) (∆x)2
−
uxxxx (ξ, tn ).
(∆x)2
12
(4.6)
Por lo tanto, podemos escribir:
uxx (xj , tn ) ≈
n
n
Uj+1
− 2 Ujn + Uj−1
con error O((∆x)2 ).
(∆x)2
(4.7)
3. Aproximación de la ecuación diferencial
De acuerdo a (4.5) y (4.7) el problema (2.4)–(2.6) se puede sustituir por el problema
aproximado
n
n
Ujn+1 − Ujn
− 2Ujn + Uj−1
Uj+1
=
,
∆t
(∆x)2
U0n = UJn = 0, 1 ≤ n ≤ N,
Uj0 = u0 (xj ), 0 ≤ j ≤ J.
(Ecuación en diferencias)
(Condiciones de frontera)
(Condiciones iniciales)
(4.8)
(4.9)
(4.10)
Diferencias Finitas y E.D.P.
6
La ecuación en diferencias (4.8) puede escribirse como
n
n
Ujn+1 = Ujn + ν (Uj+1
− 2Ujn + Uj−1
), donde ν =
∆t
,
(∆x)2
(4.11)
para j = 1, ..., J − 1, y n = 0, ..., N − 1. Claramente cada valor en el nivel tn+1 puede
calcularse independientemente de los demás en el mismo nivel, y solo evaluando valores en el
nivel tn . De ahı́ el nombre de esquema explı́cito. Las condiciones de frontera (4.9) e iniciales
(4.10) son valores conocidos, y por tanto es posible calcular la solución aproximada en todos
los puntos interiores para valores sucesivos de n a partir de la fórmula (4.11) (ver Figura 2).
Ejemplo 1 Para ilustrar el comportamineto del esquema se escoge la distribución inicial de
temperaturas dada por
(
2x
si 0 ≤ x ≤ 1/2,
u0 (x) =
2 − 2x
si 1/2 ≤ x ≤ 1 .
Se utiliza el siguiente parámetro de discretización: ∆x = 0.05, el cual corresponde a J = 20.
Además se consideran dos casos ∆t = 0.0012 y ∆t = 0.0013, es decir ν = 0.48 y ν = 0.52.
Para los cálculos se utilizó el programa “expllicito1.m” escrito para el ambiente MATLAB y
que se incluye al final de este trabajo. Los resulltados se muestran en la Figura 3.
Después de realizar los experimentos numéricos, se observa que con ∆t = 0.0012 se obtienen resultados numéricos aceptables. Por otro lado, con ∆t = 0.0013 la solución numérica
muestra oscilaciones que crecen rápidamente conforme t aumenta. Esto muestra que no
es posible escoger ∆x y ∆t de manera arbitraria. Es sorpredente la diferencia entre las
soluciones a pesar de la diminuta diferencia entre los dos valores de ∆t. Este fénomeno
es un resultado tı́pico de estabilidad ó inestabilidad que aparece frecuentemente cuando
se utilizan esquemas explı́citos para resolver numéricamente ecuaciones diferenciales. Más
adelante estudiaremos detenidamente el fenómeno de estabilidad y veremos su dependencia
respecto de la razón de mallas de los parámetors de discretización por medio de ν.
5
Error de truncamiento
El error de truncamiento es un concepto útil para estudiar el error de los métodos de aproximación ası́ como la convergencia de los mismos.
El error de truncamiento T (x, t) para el esquema (4.8) se obtiene cuando la aproximación
Diferencias Finitas y E.D.P.
7
n=0
1
1
0.9
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0
0.1
0
0.2
0.4
0.6
0.8
0
1
n = 10
1
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
0.1
0
0.2
0.4
0.6
0.8
0
1
n = 30
1
0.9
1
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0
0.2
1
0.9
0.1
0
0.1
0
0.2
0.4
0.6
0.8
0
1
n = 50
1
0.9
1
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0
0.1
0
0.2
0.4
0.6
∆ t = 0.0012
0.8
1
0
∆ t = 0.0013
∆
Figura 3. Solución del problema por medio del método explı́cito.
Ujn se reemplaza por la solución exacta de la ecuación diferencial:
T (x, t) :=
u(x, t + ∆t) − u(x, t)
u(x + ∆x, t) − 2u(x, t) + u(x − ∆x, t)
−
∆t
(∆x)2
(5.1)
Sustituyendo u(x, t+∆t), u(x+∆x, t), y u(x−∆x, t) por sus expansiones en series de Taylor
(4.1), (4.2), y (4.3), respectivamente, y simplificando posteriormente, se obtiene
1
1
utt (x, t) ∆t −
uxxxx (x, t) (∆x)2 + . . .
2
12
1
1
uxxxx (x, t) (∆x)2 + T OA,
= utt (x, t) ∆t −
2
12
T (x, t) = ut − uxx +
(5.2)
(5.3)
Diferencias Finitas y E.D.P.
8
donde T OA indica términos de orden alto. Frecuentemente es conveniente truncar la serie
infinita introduciendo un término de residuo:
1
1
T (x, t) = utt (x, η) ∆t −
uxxxx (ξ, t) (∆x)2
2
12
donde ξ ∈ (x − ∆x, x + ∆x), η ∈ (t, t + ∆t).
(5.4)
Consistencia del esquema. Para el esquema explı́cito vemos que
T (x, t) −→ 0
cuando ∆t, ∆x → 0,
∀ (x, t) ,
independientemente de la relación entre ∆t y ∆x. Gracias a ésta propiedad se dice que el
esquema es consistente con la ecuación diferencial.
Orden del esquema. También podemos observar que
1
1
∆t
Mxxxx
Mtt ∆t +
Mxxxx (∆x)2 =
(Mtt +
),
2
12
2
6ν
donde Mtt es una cota superior para |utt |, y Mxxxx es una cota superior para |uxxxx |. Por
|T (x, t)| ≤
lo tanto, para valores fijos de ν observamos que |T (x, t)| se comporta asintóticamente como
O(∆t). Con la excepción de ciertos valores especiales de ν, ésta será la mayor potencia de ∆t
para la cual se satisface esta propiedad. Por lo tanto, se dice que el esquema tiene precisión
de primer orden en ∆t, y se escribe T (x, t) ∼ O(∆t).
Subiendo el orden del esquema. Si u es suficientemente suave, entonces ut = uxx implica
utt = uxxxx . En este caso la relación (5.4) se puede escribir como
1
1
T (x, t) = (1 − ) uxxxx ∆t + O(∆t2 )
2
6ν
Por lo tanto, si tomamos ν = 1/6 se obtiene que el esquema es de segundo orden en ∆t. Es
decir, en este caso se tiene
T (x, t) v O(∆t2 )
∆t
1
= es muy severa, pues el paso del tiempo debe tomarse
2
(∆x)
6
muy pequeño. Por ejemplo
Sin embargo, la condición
∆x = 0.1 =⇒ ∆t = 1.67 × 10−3 ,
6
∆x = 0.01 =⇒ ∆t = 1.67 × 10−5 .
Convergencia del método explı́cito
Sin entrar en detalles técnicos, podemos decir que el esquema explı́cito de diferencias finitas
es convergente si para algún valor fijo de ν la solución aproximada Ujn tiende al valor
Diferencias Finitas y E.D.P.
9
exacto de la solución cuando ambos ∆t y ∆x tienden a cero. Probaremos que el esquema es
convergente si ν ≤ 1/2.
Definimos
en+1
:= Ujn+1 − u(xj , tn+1 ) .
j
(6.1)
Evaluando (5.1) en (xj , tn ) y despejando u(xj , tn+1 ), obtenemos
u(xj , tn+1 ) = u(xj , tn ) + ν{u(xj+1 , tn )−2u(xj , tn )+u(xj−1 , tn )}+∆t T (xj , tn ).
(6.2)
Sustituyendo (6.2) y (4.11) en (6.1), y simplificando, se obtiene
en+1
= (1 − 2ν) enj + ν enj+1 + ν enj−1 − ∆t Tjn .
j
(6.3)
1
Si ν ≤ , entonces los primeros tres coeficientes del lado derecho de esta igualdad son no
2
negativos y suman 1. Por lo tanto
|en+1
| = (1 − 2ν) |enj | + ν|enj+1 | + ν|enj−1 | + ∆t |Tjn | .
j
(6.4)
E n := max{ |enj |, j = 0, 1, ..., J } ,
(6.5)
Definiendo
y
T =
∆t
Mxxxx
(Mtt +
)
2
6ν
cota superior de |T (x, t)| ,
se obtiene
E n+1 ≤ E n + ∆t T .
Si además suponemos E 0 = 0 (valores iniciales exactos), entonces
E n ≤ N ∆t T ≤ tf T −→ 0
si ∆t → 0.
(6.6)
Para lograr lo anterior se ha supuesto que Mtt y Mxxxx se satisfacen uniformemente sobre
toda la región. Esto sólo es posible si suponemos que los datos iniciales y de frontera son
consistentes, y si los datos inciales son suficientemente suaves. De otra manera debemos se
debe depender del efecto “suavizador” del operador de difusión para asegurar cotas de esta
forma para todo tiempo t > 0
Ejemplo2. En el siguiente ejemplo donde u(0, t) = u(1, t) = 0 y u(x, 0) = 0.9, es un caso
donde las condiciones inciales no son consistentes con las condiciones de frontera, pues es las
esquinas x = 0 y x = 1 hay una discontinuidad. La Figura 4 muestra como el operador de
disusión casi inmediatamente suviza la solución
Diferencias Finitas y E.D.P.
10
1
1
0.9
0.9
0.8
0.8
0.7
0.7
0.6
0.6
n=0
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0
0.1
0
0.2
0.4
0.6
0.8
0
1
1
1
0.9
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0
0.2
0.4
0.6
0.8
1
0.8
1
0.5
n=5
0.4
n = 15
0.4
0.3
0.3
0.2
0.2
0.1
0
n=1
0.5
0.1
0
0.2
0.4
0.6
0.8
0
1
0
0.2
0.4
0.6
Figura 4. Efecto suavizador del operador de difusión
La propiedad de convergencia de la solución aproximada a la solución exacta cuando los
parametros de discretización ∆t y ∆x tienden a cero es fundamental para cualquier esquema
de aproximación. Muestra que puede obtenerse la precisión deseada con el uso de una malla
lo sificientemente fina. Sin embargo, no es conveniente hacer un refinamiento excesivo pues,
aparte que el volumen de cálculos aumenta dramáticamente, también se acumula el error
de redondeo. Es bién sabido que a partir de cierto refinamiento el error de redondeo puede
dominar al error de truncamiento.
7
Análisis de Fourier del error
Hemos expresado la solución exacta de la ecuación diferencial como una serie de Fourier,
la cual es una suma infinita de modos como la expresada en la ecuación (3.5). En forma
compleja esta serie se puede escribir como
u(x, t) =
∞
X
Z
am e
−(mπ)2 t imπx
e
;
1
am = 2
u0 (x)e−imπx dx.
0
−∞
2
2
En este caso los modos de Fourier son um (x, t) = e−(mπ) t eimπx = e−k t eikx .
(7.1)
Diferencias Finitas y E.D.P.
11
Número de onda. Al número k := mπ se le denomina el número de onda del modo. Si el
número de onda k es grande se dice que el modo es de alta frecuencia. En un punto de la
malla xj = j∆t, tn = n∆t, se tiene
um (xj , tn ) = (e−k
2 ∆t
)n eik(j∆x) .
(7.2)
La amplitud de cada modo es el primer término del lado derecho, y este tiende a cero con el
tiempo:
(e−k
2 ∆t
)n −→ 0 cuando n → ∞ .
Veremos que un modo similar de Fourier es la solución exacta de la ecuación en diferencias.
n
n
) tiene un
− 2Ujn + Uj−1
Caso Discreto. La ecuación en diferencias Ujn+1 = Ujn + ν (Uj+1
modo de fourier discreto de la forma
Ujn (k) := λn eik(j∆x) .
(7.3)
Factor de amplificación del modo: Al término λ = λ(k) se le demonima el factor de
amplificación del modo de Fourier discreto con número de onda k, y sustituye al término
exponencial e−k
2 ∆t
.
Sustituyendo el modo de Fourier discreto (7.3) en la ecuación en diferencias (4.11), se
obtiene
λn+1 eik(j∆x) = λn eik(j∆x) + ν (λn eik(j+1)∆x − 2λn eik(j∆x) + λn eik(j−1)∆x ) .
Simplificando esta expresión, se obtiene
λ(k) = 1 + ν ( eik∆x − 2 + e−ik∆x )
= 1 − 4 ν sen2 (k∆x/2),
ν=
∆t
.
(∆x)2
Por lo tanto, la solución de la ecuación en diferencias ó solución aproximada del problema
se puede escribir como la serie (al poner k = mπ)
X
Am λ(mπ)n eimπ(j∆x)
Ujn =
(7.4)
m∈Z
con λ(mπ) = 1 − 4 ν sen2 (mπ∆x/2).
Comparación entre la solución exacta y la solución discreta. Para efectuar una
comparación entre las soluciones exacta y discreta solo comparamos el factor de ampliicación
2
λ(k) con el termino exponencial e−k ∆t , debido a que esta es la única diferencia entre las
expresiones para los modos de Fourier dicretos y los modos de Fourier continuos. Haciendo
Diferencias Finitas y E.D.P.
12
una expansión en series de Taylor de ambos, encontramos que
1 4
k (∆t)2 − . . .
2
1 4
λ(k) = 1 − k 2 ∆t +
k ∆t (∆x)2 − . . .
12
y observamos que ambas son iguales hasta el segundo término, que es un término de primer
e−k
2 ∆t
= 1 − k 2 ∆t +
orden en ∆t. Por lo tanto concluimos que la solución aproximada es de primer orden
∆t
∆t. Además observamos que la aproximación es de segundo orden si ν =
=
(∆x)2
Observese que hemos recobrado las mismas conclusiones que con el análisis del error
en
1
.
6
de
truncamiento y convergencia. Sin embargo, con el análisis de Fourier podemos decir un poco
más. Por ejemplo, los términos de baja frecuencia (k pequeño) son bién aproximados
pues
1
1
− ) + . . . ≤ C(ν) k 4 (∆t)2 .
12ν 2
Esto no sucede con los términos de alta frecuencia como veremos en seguida. Por un lado,
2
para valores grandes de k en la solución exacta e−k n ∆t −→ 0 rapidamente cuando n → ∞.
1
Pero en la solución numérica |λ(k)|n −→ ∞ cuando n → ∞ si ν > , debido a que en este
2
caso |λ(k)| > 1. En particular para m = J, k ∆x = π, y
|λ(k) − e−k
2 ∆t
| = k 4 (∆t)2 (
π
1
|λ(k)| = |1 − 4ν sen2 | = 4ν − 1 > 1 si ν > .
2
2
8
Estabilidad
Para el modelo que hemos considerado decimos que el método es estable si existe K > 0,
independiente de k, tal que
|λ(k)n | ≤ K,
∀ n,
∀k.
(8.1)
Condición de Von Neumann. En la expresión anterior, si K > 1 entonces la función K s
es convexa en el intervalo [0, 1], de tal forma que queda por debajo del segmento de recta
dado por 1 + (K − 1)s como se muestra en la Figura 5.
1
Lugo entonces para s = con n = 1, 2 . . . se tiene
n
1
∆t
|λ(k)| ≤ K 1/n ≤ 1 + (K − 1) = 1 + (K − 1)
.
n
tf
0
Si llamamos K a la constante
k−1
obtenemos la celebre condición de Von Neumann
tf
Diferencias Finitas y E.D.P.
13
K
1+(K−1)s
s
1
K
0
0<s<1
1
s
Figura 5. Gráficas de K y 1 + (K − 1)s, con 0 < s < 1
para estabilidad:
0
|λ(k)| ≤ 1 + K ∆t
∀ k.
(8.2)
Esta condición es necesaria y suficiente para la convergencia de un esquema de diferencias
consistente que aproxime a una ecuación diferencial. Como la anterior condición debe satisfacerse para ∆t > 0 arbitrario, entonces para que el esquema sea estable basta con que el
factor de amplificación de todo modo de Fourier discreto sea menor que uno, es decir
|λ(k)| ≤ 1,
∀k.
(8.3)
En particular, para nuestro modelo, el método explı́cito de diferencias es estable si
1
|λ(k)| = |1 − 4ν sen2 k∆x| ≤ 1
2
21
⇐⇒ −1 ≤ 1 − 4ν sen k∆x ≤ 1
2
21
⇐⇒ 0 ≤ 4ν sen k∆x ≤ 2.
2
Por lo tanto, el método explicito es
Estable si ν ≤ 1/2 ,
Inestable si ν > 1/2 .
Numero finito de modos discretos de Fourier. Hemos usado una serie infinita para
representar Ujn en términos de los modos de Fourier como se muestra en (7.4). Sin embargo,
sobre una malla discreta solamente puede haber un número finito de modos distintos. De
hecho, dos modos con número de onda k1 y k2 son iguales si (k1 − k2 )∆x es un multiplo de
2π. Por lo tanto, los modos distintos asociados a la malla discreta son aquellos asociados a
Diferencias Finitas y E.D.P.
14
los numero de onda k = mπ con m = −(J − 1), −(J − 2), . . . , −1, 0, 1, . . . , J. El modo más
alto sobre la malla es el asociado a k = Jπ. De acuerdo a la ecuación (7.3) este modo es:
Ujn (Jπ) = λ(Jπ)n eiJπ(j∆x) = (1 − 4ν)n cosπj = (1 − 4ν)n (−1)j
De hecho, este es el modo más inestable y es el responsable de las oscilaciones cuando
ν > 1/2, como se observa en el Ejemplo 1 de la Sección 4.
9
Método implı́cito
La restricción de estabilidad para el método explı́cito ν ≤ 1/2 es muy severa, especialmente
cuando queremos resultados en tiempos grandes. Además, si se quisiera mejorar la precisión
de los resultados disminuyendo ∆x = 1/J, la cantidad de trabajo aumentarı́a proporcionalmente a J 2 , lo cual representa un gran costo computacional. Uno de los remedios más
utilizados para remontar estos inconvenientes es utilizar un esquema de tipo implı́cito, es
decir, utilizar equemas de diferencias finitas de tiempo hacı́a atrás. En nuestro modelo para
el flujo de calor en la barra, esto se logra evalundo el lado derecho de la ecuación (4.8) en
n + 1 en lugar de n. El esquema de diferencias implı́cito es, por lo tanto
n+1
n+1
Ujn+1 − Ujn
Uj+1
− 2Ujn+1 + Uj−1
=
∆t
(∆x)2
La mólecula computacional se muestra en la siguiente Figura 6.
t
t n+1
tn
∆x
1111
0000
11111111
00000000
1
0
0
1
0
1
0
1
0
1
0
1
11
00
1
0
0
1
11
00
xj−1 x j x j+1
∆t
x
Figura 6. Molecula computacional del esquema implı́cito
(9.1)
Diferencias Finitas y E.D.P.
15
La ecuación en diferencias puede escribirse en la forma siguiente
n+1
n+1
−ν Uj−1
+ (1 + 2ν) Ujn+1 − ν Uj+1
= Ujn ,
j = 1, . . . , J − 1 ,
(9.2)
complementada por las condiciones de frontera (4.9) y las condiciones iniciales (4.10).
Estabilidad. El esquema es incondicionelamente estable pues al sustituir U (k)nj =
λn e−i k j ∆x en la ecuación en diferencias (9.2), simplificando y despejando λ, en forma análoga
a como se hizo en el caso explı́cito, se obtiene el factor de amplificación
λ(k) =
1
,
1 + 4 ν sen2 ( 12 k ∆x)
(9.3)
el cual es menor que 1 en valor absoluto para toda k y para todo valor de ν. Por lo tanto
∆t y ∆x se escogen tomando solo criterios de precisión.
Costo adicional. Sin embargo, el esquema es un poco más complicado debido a que para
obtener la solución en cada nivel tiempo tn+1 es necesario resolver un sistema de J − 1
ecuaciones con J − 1 incógnitas. Es decir, el costo adicional, es resolver en cada nivel de
tiempo un sistema de ecuaciones de tamaño (J − 1) × (J − 1) con matriz constante


2 −1
−1 2 −1




A = I + ν . . . . . . . . . . . . . . . . . . . . . .


−1 2 −1
−1 2
donde I indica la matiz identidad de tamaño (J − 1) × (J − 1).
Ejemplo 3. Para ilustrar el comportamiento del esquema implı́cito, consideremos el problema resuelto en el Ejemplo 1 (Sección 4). Se utilizan el mismo parámetro de discretización
∆x = 0.05 (J = 20). Se consideran los casos ∆t = 0.0013 (ν = 0.52) y ∆t = 0.0125 (ν = 5).
Para los cálculos se utilizó el programa “implicito1.m” escrito para el ambiente MATLAB y
que se incluye al final de este trabajo. Los resultados se muestran en la Figura 7.
El lector puede hacer experimentos con algun valor fijo de ν, y varios valores de J, por
ejempo J = 200, 400, 1000, etc., para verificar que la memoria se agota rapidamente, y en
consecuencia la eficiencia del método disminuye dramáticamente.
Algoritmo de Thomas. Realmente no hemos hecho gran cosa, excepto que hemos utilizado
Diferencias Finitas y E.D.P.
16
1
1
0.9
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
n=0
0.2
0
n=0
0.2
0.1
0.1
0
0.2
0.4
0.6
0.8
1
0
0
1
1
0.9
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
n = 10
0.2
0
0.2
0.4
0.6
0.8
1
0
1
1
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.8
1
0
0.2
0.4
0
0.2
0.4
0
0.2
0.4
0.6
0.8
1
0.3
0.2
0.2
n = 30
0.1
0
0.2
0.4
0.6
n=3
0.1
0.8
1
0
1
1
0.9
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
n = 50
0.1
0
0.6
0.1
0.9
0
0.4
n=1
0.2
0.1
0
0.2
0
0.2
0.4
0.6
∆ t = 0.0013 ( ν = 0.52 )
1
0
0.8
1
0.8
1
n=5
0.1
0.8
0.6
0.6
∆ t = 0.0125 ( ν = 5)
Figura 6. Resultados numéricos del problema modelo con el método implı́cito
un esquema que es estable para todo valor de los parámetros de discretización. Sin embargo,
el costo computacional es demasido alto aún, debido a la utilización de memoria (por la
necesidad de almacenar la matriz) como por el volumen de operaciones que hay que realizar,
al tener que resolver un sistema de ecuaciones en cada iteración de tiempo.
Afortunadamente la matriz A del sistema es una matriz rala (sparse), es decir, la
inmensa mayorı́a de su coeficientes es cero. De hecho, la matriz A tiene una estructura muy
regular, debido a que es una matiz tri–diagonal y además diagonalmente dominante.
Esta estructura se puede explotar inteligentemente para ahorrar memoria y resolver el sistema
de manera muy eficiente. El método más eficiente para el presente caso es el denominado
algoritmo de Thomas. Este método consiste en reducir el sistema tri–diagonal a un sistema
Diferencias Finitas y E.D.P.
17
bi–diagonal superior de la forma
Uj − ej Uj+1 = fj
j = 1, 2, . . . , J − 1,
por medio de eliminación del término Uj−1 en cada ecuación de la forma
−ν Uj−1 + (1 + 2ν) Uj − ν Uj+1 = dnj ,
j = 1, 2, . . . , J − 1 .
en donde identificamos dnj con Ujn , el lado derecho de (9.2) (obsevese que hemos suprimido
los superı́ndice n y n + 1 en los términos con U para simplificar la notación).
Para lograr la reduccón anterior se procede como sigue: en la primera ecuación del
sistema tri–diagonal j = 1 y Uj−1 = U0 = 0, por los que esta ecuación se transforma en
ν
dn1
, f1n =
.
1 + 2ν
1 + 2ν
Despejando U1 de ésta ecuación, sustituyendo en la segunda ecuación del sistema tridiagonal,
U1 − e1 U2 = f1n ,
con e1 =
y reordenando, se obtiene
U2 − e2 U3 = f2n ,
con e2 =
ν
,
1 + 2ν − ν e1
f2n =
d2 + ν f1n
.
1 + 2ν − ν e1
Observese que e1 y e2 no dependen de n, pero f1n y f2n sı́. Continuando inductivamente de
esta forma, obtenemos el sistema bi–diagonal
Uj − ej Uj+1 = fjn ,
con ej =
ν
,
1 + 2ν − ν ej−1
fjn =
n
dj + ν fj−1
,
1 + 2ν − ν ej−1
(9.4)
para j = 1, . . . , J − 1, con e0 = f0 = 0. Este sistema bi–diagonal resultante se puede resolver
entonces de manera muy fácil por medio de sustitución hacia atrás:
UJ = 0
Para j = J − 1, . . . , 1, hacer
Uj = fjn + ej Uj+1
finalizar
La anterior metodologı́a es parte de los algoritmos que se conocen come como resolvedores
rapidos ó fast solvers por su nombre en el idioma Inglés. La técnica de solución es un caso
particular de una técnica denominada de reduccón cı́clica. Debido a que la matriz original
es diagonalmente dominante cada coeficiente ej en (9.4) es menor a uno en valor absoluto,
lo cual garaniza que el uso de las relaciones de recurrencia como Uj = fj + ej Uj+1 = fj ,
para encontrar la solución, es númericamente estable. El trabajo computacional del método
implı́cito es apenas tres veces aproximadamente el del método explı́cito cuando se utiliza
Diferencias Finitas y E.D.P.
18
el algoritmo de Thomas. La verdadera importancia del método implicito radica en que los
pasos de tiempo pueden tomarse significativamente mayores a los permitidos por el método
explı́cito, con lo cual al final hay un ahorro real en el costo computacional.
Ejemplo 4. Consideremos de nuevo el problema resuelto en el Ejemplo 1 (Sección 4). Se
pueden utilizar los parámetros de discretización: ∆x = 0.05 (J = 20) y ν = 1. Los resultados
son muy semejantes a los ya obtenidos anteriormente. El progama “implicito1t.m”, que
contiene el algorimto de Thomas para resolver los sistemas tridiagonales, se incluye al final
de las notas.
El lector puede repetir el experimeto del Ejemplo 3 con varios valores de J, y verificar
que con el algoritmo de Thomas hay un ahorro real en memoria y un aumento considerable
en la eficiencia para encontrar la solución numérica.
10
Metodo θ (Promedios pesados)
Los métodos explı́cito e implı́cito difieren solamente en que el primero aproxima uxx por tres
punto en el nivel de tiempo tn , y el segundo por tres puntos en el nivel de tiempo tn+1 . Una
generalización natural de estos métodos serı́a una aproximación que use los seis puntos. Esto
puede lograrse mediante un promedio pesado de las dos ecuaciones en diferencias:
n+1
n+1
n
n
Ujn+1 − Ujn
Uj+1
− 2Ujn+1 + Uj−1
Uj+1
− 2Ujn + Uj−1
=θ
+
(1
−
θ)
,
∆t
(∆x)2
(∆x)2
(10.1)
con 0 ≤ θ ≤ 1.
Con θ = 0
Obtenemos el método explı́cito.
Con θ = 1
Obtenemos el método implı́cito.
En la siguiente figura ilustramos la molécula computacional del método
La ecuación en diferencias constituye un sistema tridiagonal de J − 1 ecuaciones con J − 1
incógnitas en cada paso del tiempo n = 1, 2, . . .
n+1
n+1
n
n
),
− 2Ujn + Uj+1
−θνUj−1
+ (1 + 2θν)Ujn+1 − θνUj+1
= Ujn + (1 − θ)ν(Uj−1
(10.2)
con j = 1, . . . , J − 1, y complementada por las condiciones de frontera (4.9) y las condiciones
iniciales (4.10). Los coficientes de éste sitema de ecuaciones satisfacen las condiciones para
poder aplicar el algoritmo de Thomas, y al hacer eliminación obtenemos el sistema bi–
Diferencias Finitas y E.D.P.
19
∆x
t
1111
0000
t n+1
1
0
0
1
1
0
0
1
11
00
tn
11111111
00000000
1
0
0
1
0
1
0
1
0
1
0
1
11
00
1
0
0
1
∆t
xj−1 x j x j+1
x
Figura 7. Molécula computacional del esquema θ
diagonal
Uj − ej Uj+1 = fj ,
ej =
θν
,
1 + θν(2 − ej−1 )
fj =
dnj + θνfj−1
,
1 + θν(2 − ej−1 )
(10.3)
j = 1, . . . , J − 1, con e0 = f0 = 0 y dnj es el lado derecho de (10.2) para cada j. Este sistema
se resuelve eficientemente por medio de sustitución regresiva.
Al final de las notas se incluye el programa “teta1t.m” con este esquema.
Estabilidad. Sustituyendo el modo discreto Ujn = λn eik(j∆x) en la ecuación (10.2), y simplificando obtenemos
¶
µ
¡ ik∆x
¢
−ik∆x
21
λ − 1 = ν {θλ + (1 − θ)} e
−2+e
= ν {θλ + (1 − θ)} −4 sen k∆x .
2
Despejando λ de la ecuación anterior, obtenemos
1 − 4(1 − θ)ν sen2 ( 21 k∆x)
λ(k) =
,
1 + 4θν sen2 ( 21 k∆x)
(10.4)
la cual es siempre menor a uno debido a que ν > 0 y 0 ≤ θ ≤ 1. Por lo tanto puede haber
inestabilidad solo si λ < −1, es decir si
1
4ν(1 − 2θ) sen2 ( k∆x) > 2.
2
El modo más inestable, con número de onda k = Jπ, maximiza el término en el lado
izquierdo, pues en este caso 21 k∆x = π/2. Ası́ que la condición de inestabilidad es 4ν(1 −
Diferencias Finitas y E.D.P.
20
2θ) > 2. Por lo tanto
1
=⇒ inestabilidad
2
1
ν(1 − 2θ) ≤ =⇒ estabilidad
2
De lo anterior se tienen dos casos:
ν(1 − 2θ) >
Para 0 < θ < 1/2 , el método es estable si ν(1 − 2θ) ≤ 1/2. (Estabilidad condicional).
Para 1/2 ≤ θ < 1 , el método es estable para toda ν > 0 .
(Estabilidad incondicional).
Para cualquier θ > 0 se debe resolver un sistema tridiagonal y, a primera vista no se ve
1
ninguna ventaja de usar 0 < θ < , pues en estos casos el esquema es condicionalmente
2
1
estable, a menos que los resultados sean más precisos que en los casos ≤ θ ≤ 1. Para esto
2
es necesario estudiar el error de truncamiento del método.
Error de truncamiento en el método θ. Para calcular el error de truncamiento del
esquema θ, que involucra seis puntos, se escoge el punto (xj , tn+ 1 ) como punto de expansión
2
en serie de Taylor. Este es el mejor punto, por simetrı́a, y porque es el que cancela el mayor
de número de términos en la expansión. Con estas consideraciones el error de truncamiento
es:
n+ 12
Tj
=
n+1
n
n
n
un+1
− unj
θ(un+1
+ un+1
j
j−1 − 2uj
j+1 ) + (1 − θ(uj−1 − 2uj + uj+1 )
−
.
∆t
(∆x)2
Para expander alrededor del punto (xj , tn+ 1 ) se hace
2
·
un+1
j
−
unj
¸n+ 21
1
1 1
1 1
2
3
= u + ∆tut + ( ∆t) utt + ( ∆t) uttt + . . .
2
2 2
6 2
j
·
¸n+ 21
1
1 1
1
1
− u − ∆tut + ( ∆t)2 utt − ( ∆t)3 uttt + . . .
2
2 2
6 2
j
¸n+ 12
·
1
1
(∆t)t uttttt . . .
.
= ∆tut + (∆t)3 uttt +
24
1920
j
(10.5)
Diferencias Finitas y E.D.P.
21
Por otro lado, se tiene
un+1
j−1
−
2un+1
j
+
un+1
j+1
¸n+1
·
1
1
4
6
2
(∆x) uxxxxxx + . . .
= (∆x) uxx + (∆x) uxxxx +
12
360
j
·
¸n+ 21
1
1
= (∆x)2 uxx + (∆x)4 uxxxx +
(∆x)6 uxxxxxx + . . .
12
360
j
·
¸n+ 21
1
1
1
2
4
6
+ ∆t (∆x) uxxt + (∆x) uxxxxt +
(∆x) uxxxxxxt + . . .
2
12
360
j
¸n+ 12
·
1 1
1
1
2
2
4
6
+ ( ∆t) (∆x) uxxtt + (∆x) uxxxxtt +
(∆x) uxxxxxxtt + . . .
2 2
12
360
j
+ ...
Análogamente
·
unj−1
−
2unj
+
unj+1
¸n+ 21
1
1
4
6
= (∆x) uxx + (∆x) uxxxx +
(∆x) uxxxxxx + . . .
12
360
j
·
¸n+ 12
1
1
1
2
4
6
− ∆t (∆x) uxxt + (∆x) uxxxxt +
(∆x) uxxxxxxt + . . .
2
12
360
j
·
¸n+ 12
1 1
1
1
2
2
4
6
+ ( ∆t) (∆x) uxxtt + (∆x) uxxxxtt +
(∆x) uxxxxxxtt + . . .
2 2
12
360
j
2
− ...
Entonces
n+1
n
n
n
θ(un+1
+ un+1
j−1 − 2uj
j+1 ) + (1 − θ)(uj−1 − 2uj + uj+1 )
·
¸n+ 21
1
1
2
4
6
= (∆x) uxx + (∆x) uxxxx +
(∆x) uxxxxxx + . . .
12
360
j
·
¸n+ 12
1
1
1
2
4
6
+ (θ − )∆t (∆x) uxxt + (∆x) uxxxxt +
(∆x) uxxxxxxt + . . .
2
12
360
j
·
¸n+ 12
1
1
1
2
2
2
4
6
(∆x) uxxxxxxtt + . . .
+ (∆t) (∆x) (∆x) uxxtt + (∆x) uxxxxtt +
8
12
360
j
+ ...
Diferencias Finitas y E.D.P.
22
Por lo tanto, el error de truncamiento es
·µ
¶
¸n+ 12 ·
¸n+ 12
1
1
1
1
n+ 12
2
Tj
=
− θ uxxt ∆t −
uxxx (∆x)
+
uttt − uxxtt
(∆t)2
2
12
24
8
j
j
· µ
¶
¸n+ 12
1 1
2
+
− θ uxxxxt ∆t −
uxxxxxx (∆x)2
(∆x)2 + T OA .
12 2
6!
j
(10.6)
Claramente el esquema es consistente para toda θ y para toda ν. Además el error de
truncamiento muestra que normalmente se obtiene orden de convergencia lineal en ∆t, pero
1
que en el caso simétrico especial θ = , el método es de segundo orden tanto en ∆t como en
2
∆x
Esquema de Crank–Nicolson. El caso especial θ =
Crank–Nicolson
1
da origen al esquema que de
2
n+1
n+1
n
n
Ujn+1 − Ujn
(Uj+1
− 2Ujn+1 + Uj−1
) + (Uj+1
− 2Ujn + Uj−1
)
=
,
∆t
2(∆x)2
(10.7)
el cual es incondicionalmente estable y de segundo orden tanto en ∆x como en ∆t. El error
de truncamineto de éste método es
·
¸n+ 21
1
n+ 21
2
2
Tj
=−
+ T OA .
uxxxx (∆x) + uttt (∆t)
12
j
Por lo tanto, podemos explotar las propiedades adicionales de estabilidad para tomar pasos
en el tiempo mayores, como por ejemplo ∆t = ∆x, y seguir obteniendo precisión de segundo
orden.
Convergencia del metodo θ. Se puede hacer un análisis de convergencia para el método
θ semejante al hecho en la Sección 6 para el método explı́cito.
Como en aquel caso definimos
en+1
:= Ujn+1 − un+1
.
j
j
(10.8)
Despejando Ujn+1 de (10.1) y un+1
de (10.5) y sustituyendo en (10.8), se obtiene
j
¤
£
n+1
n+1
n
n
− 2Ujn + Uj−1
− 2Ujn+1 + Uj−1
) + (1 − θ)(Uj+1
en+1
= Ujn + ν θ(Uj+1
j
¤
£
n+ 12
n+1
n
n
n
n
+ un+1
− ν θ(un+1
j−1 ) + (1 − θ)(uj+1 − 2uj + uj−1 ) − uj − ∆tTj
j+1 − 2uj
£
¤
n+ 12
n+1
n+1
n
n
n
= enj + ν θ(en+1
−
2e
+
e
)
+
(1
−
θ)(e
−
2e
+
e
)
−
∆tT
.
j+1
j
j−1
j+1
j
j−1
j
Diferencias Finitas y E.D.P.
23
Reordenando, se obtiene
n+ 12
n+1
n
n
n
(1 + 2θν)en+1
= θν(en+1
j
j−1 + ej+1 ) + (1 − θ)ν(ej−1 + ej+1 ) + [1 − 2(1 − θ)ν]ej − ∆tTj
n+ 21
Definiendo E n como en (6.5) y T como la cota superior de Tj
. (10.9)
sobre todos los puntos
(xj , tn+ 1 ), se obtiene
2
(1 + 2θν)E n+1 ≤ 2θνE n+1 + E n + ∆tT ,
debido a que todos los coeficientes en (10.9) excepto el último son no negativos. Simplificando
la expresión anterior se obtiene
E n+1 ≤ E n + ∆tT ,
y suponiendo que el error incial es cero, E 0 = 0, se obtiene el resultado deseado
E n ≤ n∆tT < tf T =⇒ 0
cuando ∆t → 0 ,
1
sobre toda trayectoria de refinamiento que satisfaga ν(1 − θ) ≤ .
2
11
Principio del máximo
Si se considera otras propiedades debe tener un esquema de aproximación de la ecuación
diferencial ut = uxx aparte de la convergencia, estabilidad, y orden razonable de presición,
lo siguiente serı́a pedir que satisfaca un principio del máximo. Se sabe tanto desde el
punto de vista matemático y como fı́sico que la solución u(x, t) está acotada inferiormente y
superiormente por los extremos de los valores iniciales y los valores de frontera. Es deseable
que el esquema discretización tenga esta propiedad. Los valores extremos sobre la malla
computacional se muestran en la siguiente Figura 8.
1
Resultado: El método θ con 0 ≤ θ ≤ 1 y ν (1 − θ) ≤
produce la sucesión {Ujn } con
2
Umin ≤ Ujn ≤ Umax , donde
Umin = min { U0m , UJm , 0 ≤ m ≤ n; Uj0 0 ≤ j ≤ J },
Umax = max { U0m , UJm , 0 ≤ m ≤ n; Uj0 0 ≤ j ≤ J }.
Demostración. Despejando Ujn+1 de (10.1), se obtiene
£
£
n+1
n+1
n
n
Ujn+1 = Ujn + ν θ (Uj+1
− 2Ujn+1 + Uj−1
) + (1 − θ) (Uj+1
− 2Ujn + Uj−1
) .
Reagrupando, se obtiene
n+1
n+1
n
n
(1 + 2θν)Ujn+1 = θν(Uj−1
+ Uj+1
) + (1 − θ)ν(Uj−1
+ Uj+1
) + [1 − 2(1 − θ)ν]Ujn
Diferencias Finitas y E.D.P.
24
t
∆x
1111
0000
t n+1
11
00
tn
11
00
∆t
xj−1 x j x j+1
x
Figura 8. Valores extremos sobre la malla computacional.
Observese que todos los coeficientes en la relación anterior son no negativos ya que θ ≥ 0,
ν > 0, y 2(1 − θ)ν ≤ 1. Supongase ahora que U toma su máximo en un punto interno, y que
n+1
n+1
n
n
este es Ujn+1 , y sea U ∗ el mayor de los cinco valores adyacentes Uj−1
, Uj+1
, Uj−1
, Ujn , Uj+1
en la ecuación anterior. Entonces Ujn+1 ≤ U ∗ debido a que los coeficientes en el lado derecho
suman 1 + 2θν. Por otro lado U ∗ ≤ Ujn+1 , pues Ujn+1 es el valor máximo por hipótesis. Se
concluye que U ∗ = Ujn+1 . El argumento puede repetirse en cada uno de los puntos U ∗ ası́
obtenidos, obteniendo una suceción de puntos hasta que se toma un punto frontera. Un
argumento similar muestra que el mı́nimo también se toma en un punto frontera.
1
La condición del resultado anterior, ν(1 − θ) ≤ , para garantizar el principio del
2
1
máximo es mucho más restrictiva que la obtenida por análisis de Fourier, ν(1 − 2θ) ≤ ,
2
1
para garantizar estabilidad. Por ejemplo, el esquema de Crank–Nicolson (θ = ) es estable
2
para toda ν, pero satisface el principio del máximo sólo si ν ≤ 1.
El análisis del principio del máximo puede usarse como medio alternativo para obtener
condiciones de estabilidad. Este tipo de anális tiene la ventaja sobre el análisis de Fourier de
que es fácilmente aplicable a problemas con coeficientes variables, entre otros. Sin embargo,
con el principio del máximo solo pueden derivarse condiciones suficientes para estabilidad.
Ejemplo 5. Con el objeto de ilustrar el efecto de las condiciones para que se satisfaga un
principio del máximo, consiremos el problema donde la distribución incial de temperaturas
en la barra tiene la forma de un “pico”, es decir u0 (x) es 1 en el punto medio de una malla
con J = 20 y 0 en cualquier otro punto de la malla. Si tomamos θ = 1/2, enonces para
Diferencias Finitas y E.D.P.
25
1
1
0.9
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
n=0
0.3
0.2
0.1
0
0.1
0
0.2
0.4
0.6
0.8
1
1
n=2
0.2
0.4
0.6
0.8
1
0.4
0.6
0.8
1
0.4
0.6
0.8
1
0.4
0.6
0.8
1
n=1
0
0
0.2
0.4
0.6
0.8
1
1
−0.5
0
0.2
1
0.5
0.5
n=4
0
n=2
0
0
0.2
0.4
0.6
0.8
1
−0.5
0
0.2
1
1
0.5
0.5
n=6
n=3
0
0
−0.5
0
0.5
0
−0.5
0
1
0.5
−0.5
n=0
0.3
0.2
−0.5
0
0.2
0.4
0.6
0.8
∆ t = 0.0025 ( ν = 1 )
1
0
0.2
∆ t = 0.005 ( ν = 2 )
Figura 9. Resultados con θ = 1/2, J = 10 y ν = 1 y ν = 2.
∆t = 0.0025 (ν = 1) se satisface la condición para que el esquema satisfaga el principio del
máximo, mientras que para ∆t = 0.005 (ν = 2) no se satisface la condición. Los resultados
se muestran el la Figura 9. Como puede observarse, en el segundo caso, en el primer nivel
del tiempo la solución es negativa en el centro, después tiende a corregirse conforme avanza
el tiempo. Esto no sucede en el primer caso, donde si se tiene la condición necesaria ν ≤ 1
para que el esquema satisfaga el principio del máximo. Se utilizó el programa “teta1t.m”.
Diferencias Finitas y E.D.P.
12
26
Problemas más generales
12.1
Coeficientes variables
En el modelo de la ecuación de flujo de calor en la barra, se ha supuesto que las propiedades
del material conductor son constantes con el tiempo e independientes de x. En realidad,
en muchos problemas estas propiedades no son constantes y dependen cuando menos de x.
Consideremos el problema más general
ut = a(x, t) uxx ,
con a(x, t) > 0,
∀ x, t.
(12.1)
k
, donde k denota el coeficiente de conductividad térmica, c el calor especı́fico, y
cρ
ρ la densidad del material.
con a =
Análogo del método θ. En el caso de coeficientes variable el esquema de promedios
pesados ó θ es
· n+1
n+1
n
n ¸
Ujn+1 − Ujn
Uj+1 − 2Ujn+1 + Uj−1
Uj+1
− 2Ujn + Uj−1
∗
=a θ
+ (1 − θ)
,
∆t
(∆x)2
(∆x)2
(12.2)
donde a∗ puede escogerse de diferentes maneras. Algunas de las elecciones adecuadas son
t
∆x
1111
0000
t n+1
1
0
0
1
1
0
0
1
11
00
tn
11111111
00000000
1
0
0
1
0
1
0
1
0
1
0
1
11
00
1
0
0
1
xj−1 x j x j+1
∆t
x
Figura 10. El coeficiente a se evalua en el punto central.
n+ 21
a∗ = aj
). Con la primera elección , a(x, t) se evalua en el punto
, y a∗ = 12 (anj + an+1
j
intermedio de la molécula computacional (ver Figura 10), y se puede probar que el error de
Diferencias Finitas y E.D.P.
27
truncamiento no se altera excepto por la inclusión del extra–factor a:
·µ
¶
¸n+ 12 ·
¸n+ 12
1
a
1
a
n+ 12
2
Tj
=
− θ uxxt ∆t −
uxxx (∆x)
+
uttt − uxxtt
(∆t)2
2
12
24
8
j
j
· µ
¶
¸n+ 12
1 1
2a
+
− θ uxxxxt ∆t −
uxxxxxx (∆x)2
(∆x)2 + T OA .
12 2
6!
j
Se observa inmediatamente que el esquema es consistente, y que el orden del mismo es O(∆t)
1
en el caso general, y O((∆t)2 + (∆x)2 ) en el caso que θ = (Crank–Nicolson).
2
La ecuación en diferencias (12.2) se puede escribir en la forma
n+1
n+1
n
n
+Uj−1
) . (12.3)
(1+2 a θ ν)Ujn+1 = a θ ν (Uj−1
+Uj+1
)+[1−2 a (1−θ) ν] Ujn +a (1−θ) ν (Uj+1
De esta ecuación se observa que los coeficientes del lado derecho suman lo mismo que el coeficiente del lado izquierdo, y que se satisface un principio del máximo si todos los coeficientes
son no negativos. Esto último se logra si 1 − 2 a (1 − θ) ν ≥ 0. Por lo tanto, la convergencia
del método se puede realizar por medio del principio del máximo, pero se debe adoptar la
condición de estabilidad
ν (1 − θ) a(x, t) ≤ 1/2 ∀ x, t .
En ocasiones es conveniente usar la segunda alternativa a∗ =
(12.4)
1 n
(a
2 j
+ an+1
), la cual
j
produce un error de truncamiento del mismo orden. Por el contrario, el siguiente esquema
n+1
n
U n+1 − 2Ujn+1 + Uj−1
Ujn+1 − Ujn
U n − 2Ujn + Uj−1
n+1 j+1
n j+1
= θ aj
+ (1 − θ) aj
.
∆t
(∆x)2
(∆x)2
produce un error de truncamiento O(∆t) independientemente del valor de θ. Es decir, no es
posible aumentar el orden para algún valor especial de θ, motivo por el cual este esquema
no es recomendable.
12.2
Ecuación parabólica en forma autoadjunta
En las aplicaciones, muy frecuentemente la ecuación de difusión aparece en la forma
ut = (a ux )x ,
a = a(x, t) > 0 ,
(12.5)
Diferencias Finitas y E.D.P.
28
denominada forma autoadjunta. Es posible escribir esta ecuación como ut = a uxx + ax ux ,
y tratar de construir un esquema de aproximación a partir de esta expresión. Sin embargo,
es mejor construir una aproximación de la ecuación respetando su forma original. Para
construir una aproximación, hacemos la siguiente definición
δx Uj := Uj+ 1 − Uj− 1 .
2
(12.6)
2
donde δx es el operador de diferencias centrales con respecto a la variable de posición x.
Entonces, el esquema explı́cito para el problema en forma autoadjunta es
Ujn+1 − Ujn
δx [anj δx (Ujn )]
=
,
∆t
(∆x)2
el cual, como puede observarse, respeta la simetria del problema. Desarrollando los operadores de diferencias centrales δx obtenemos el esquema explı́cito
n
n
anj+ 1 (Uj+1
− Ujn ) + anj− 1 (Ujn − Uj−1
)
Ujn+1 − Ujn
2
2
=
.
∆t
(∆x)2
(12.7)
La molécula computacional de este esquema se muestra en la Figura 11, donde se han
dibujado simbolos × para indicar los puntos donde se evalua la función a(x, t).
t
∆x
1111
0000
11
00
t n+1
tn
11111111
00000000
1
0
0
1
0
1
0
1
0
1
0
1
xj−1 x j x j+1
∆t
11
00
x
Figura 11. Molécula computacional para el problema en forma adjunta.
El error de truncamiento de éste método viene dado por
·
¸n ·
¸n
a uxxxx ax uxxx axx uxx axxx ux
1
n
utt ∆t −
+
+
+
(∆x)2 + . . .
Tj =
2
12
6
8
24
j
j
donde, como se esperaba, el error es de primer orden en ∆t.
(12.8)
Diferencias Finitas y E.D.P.
29
Para estudiar la estabilidad del método reescribimos (12.7) en la forma
h
i
n
n
Ujn+1 = 1 − ν(anj+ 1 + anj− 1 ) Ujn + ν anj+ 1 Uj+1
+ ν anj− 1 Uj−1
.
2
2
2
2
Esta ecuación satisface un principio del máximo si los coeficientes son acotados y no negativos. Como hemos supuesto que a(x, t) > 0 para toda x y t, entonces el principio del
máximo se satisface si.
1
donde A = max{a(x, t)} .
νA≤ ,
2
Esta condición es una condición necesaria para la estabilidad del método explı́cito, lo cual a
su vez asegura la convergencia del método, gracias a la consistencia del mismo.
Un esquema análogo al método θ es
Ujn+1 − Ujn
δx [an+1
δx (Ujn+1 )]
δx [anj δx (Ujn )]
j
=θ
+ (1 − θ)
.
∆t
(∆x)2
(∆x)2
Desarrollando los operadores de diferencias centrales y reordenando el resultado, se obtiene
h
i
i
h
n+1
n+1
n+1
n
n
1 + θν(aj− 1 + aj+ 1 ) Uj = 1 − (1 − θ)ν(aj− 1 + aj+ 1 ) Ujn + θ ν (an+1
U n+1 + an+1
U n+1 )
j− 1 j−1
j+ 1 j+1
2
2
2
+ (1 − θ) ν
(anj− 1
2
2
n
Uj−1
2
2
n
+ anj+ 1 Uj+1
).
2
Este esquema satisface un principio del máximo si
ν (1 − θ)A ≤
12.3
1
,
2
donde A = max{a(x, t)} .
Problemas no lineales
Considerese la ecuación diferencial
ut = a(u) uxx ,
a(u) > 0 ,
en donde el coeficiente a es una función de la incógnita u. El coeficiente a también podrı́a
depender de x y t directamente, pero este caso no es significativamente más difı́cil. El
esquema más sencillo para este problema es el siguiente esquema explı́cito
n
n
Ujn+1 − Ujn
− 2Ujn + Uj+1
Uj−1
n
= a(Uj )
.
∆t
(∆x)2
(12.9)
Diferencias Finitas y E.D.P.
30
El error de truncamiento de este método esta dado por
·
¸n
1
1
n
n
2
Tj =
utt ∆t −
a(Uj ) uxxxx (∆x) + . . . ∼ O(∆t) ,
2
12
j
de donde se concluye que el esquema es consistente y de primer orden en ∆t. Despejando
Ujn+1 de (12.9), se obtiene
Ujn+1
·
¸
·
¸
n
n
n
n
n
= 1 − 2 a(Uj ) ν Uj + ν a(Uj ) Uj+1 + Uj−1 .
(12.10)
Los coeficientes en el laso derecho suman uno y son no negativos si 1 − 2 a(Ujn ) ≥ 0 para
toda j y n. Por lo tanto de satisface un principio del máximo si
1
donde A = max{a(Ujn )}.
(12.11)
2
Sin embargo, el análisis del error no es triival en este caso, debido a que aparece un problema
si
νA≤
que no surge en el caso de ecuaciones lineales: el error se propaga de manera no–lineal
cuando n crece. Mostraremos brevemente las dificultades que aparecen al intentar hacer el
análisis del error. De la ecuación (12.10) y de la definición del error de truncamiento se
obtiene
Ujn+1 = Ujn + ν a(Ujn ) δx2 Ujn
un+1
= unj + ν a(unj ) δx2 unj + ∆t Tjn .
j
y no pueden restarse estas ecuacione en forma directa para obtener el error enj = Ujn+1 − un+1
j
debido a que a(Ujn ) 6= a(unj ). Pero se puede linealizar a(unj ) por medio de su serie de Taylor
del primer orden
a(unj ) = a(Ujn ) + (un+1
− Ujn+1 )
j
∂a n
=
−
(η ) ,
∂u j
en donde ηjn se encuentra entre unj y UJn . Por lo tanto
a(Ujn )
∂a n
(η )
∂u j
(12.12)
enj
∂a
ν (δx2 unj ) enj − ∆t Tjn
∂u
(12.13)
¤ n
£
∂a n n
n
n
n
n
n
(η ) e − ∆t Tj .
= 1 − 2 ν a(Uj ) ej + ν a(uj ) (ej−1 + ej+1 ) + ν
∂u j j
∂a
Para poder garantizar convergencia se debe controlar el crecimiento de
. Suponiendo que
∂u
∂a
existe K > 0 tal que | | ≤ K, y que |unj+1 − 2unj + unj−1 | ≤ Mxx (∆x)2 , donde Mxx es una
∂u
en+1
= enj + ν a(Ujn ) δx2 enj +
j
Diferencias Finitas y E.D.P.
31
cota superior de |uxx |, entonces
E n+1 ≤ [1 + K Mxx ∆t] E n + ∆t T
≤ [1 + K Mxx ∆t]n+1 E 0
+ {1 + [1 + K Mxx ∆t] + [1 + K Mxx ∆t]2 + . . . + [1 + K Mxx ∆t]n }∆t T
(12.14)
[1 + K Mxx ∆t]n+1 − 1
≤
∆t T
K Mxx ∆t
eK Mxx tf
≤
T −→ 0 cuando ∆t, ∆x → 0 .
K Mxx
Se observa que la estimación del error es mucho peor que en el caso lineal, a menos que K
y Mxx sean pequeños.
Esquemas implı́citos. Muchos autores prefieren utilzar esquemas implı́citos ó también
esquemas semi–implı́citos para aproximar problemas no lineales. El esquema implı́cito más
simple es
n+1
Ujn+1 = Ujn + ν a(Ujn+1 ) (Ujn+1 − 2 Ujn+1 + Uj−1
).
(12.15)
Se podrı́a hacer una aproximación semi–implı́cita tomando a(Ujn ) en lugar de a(Ujn+1 ) en la
ecuación anterior. El sistema resultante (12.15) es un sistema algebraico no lineal, y debe
utilizarse algún método iterativo ó algún tipo de linealización para resolverlo. Dentro de los
métodos iterativos más comunes se encuentran los métodos de tipo Picard (ó punto fijo), y el
método de Newton. El valor inicial para comenzar las iteraciones comunmente es la solución
en el paso de tiempo anterior. Por ejemplo, un método tipo Picard para resolver (12.15) es
el siguiente
Dado Ujn+1, 0 = Ujn
Para k = 1, 2, . . . hasta convergencia
n+1, k
Calcular Ujn+1, k = Ujn + ν a(Ujn+1, k−1 ) (Ujn+1, k − 2 Ujn+1, k + Uj−1
)
Finalizar
kU n+1, k − U n+1, k−1 k
≤ ², donde ² es un
kU n+1, k k
ó menor. Observese que en cada iteración del tiempo
Se paran las iteracione con algún criterio como
numéro pequeño, por ejemplo 10−6
se deben resolver kmin sistema de ecuaciones lineales, donde kmin es el numero mı́nimo de
itreaciones para obtener la tolerancia ² en el criterio de paro.
Algunos métodos alternativos están basados en algoritmos tipo predictor–corrector. Por
Diferencias Finitas y E.D.P.
32
ejemplo
n+1/2
Predictor:
Corrector:
n+1/2
δx2 Uj
− Ujn
= a(Ujn )
∆t/2
(∆x)2
2
n+1
Ujn+1 − Ujn
+ Ujn )
n+1/2 δx (Uj
= a(Uj
)
∆t
2 (∆x)2
Uj
(semi–implı́cito)
(Crank–Nicolson)
Se pueden utilizar otras variantes. Observese que en este caso también hay que resolver dos
sistemas algebraico linelaes en cada iteración del tiempo.
13
Problemas bidimensionales
Consideremos la caja rectangular D = 0, X] × [0, Y ] y denotemos por ∂D a su frontera. Sea
a > 0 un coeficiente de difusión, que consideraremos constante por el momento. El problema parábolico bidimensional (problema de difusión), con condiciones de frontera Dirichlet,
consiste en calcular u = u(x, y, t) tal que
ut = σ M u = a (uxx + uyy ),
en D, t > 0,
(13.1)
u(x, y, 0) = u0 (x, y)
en D,
(13.2)
u(x, y, t) = g(x, y, t)
sobre ∂D, t ≥ 0.
(13.3)
Construimos una malla uniforme sobre el dominio rectangular D de la siguiente manera:
Se divide [0, X] en I subintervalos y [0, Y ] en J subintervalos Sean ∆x = X/I y ∆y = Y /J
los pasos de discretizaciós. Los puntos de la malla sobre D son
xi = i ∆x,
i = 0, 1, . . . , I,
yj = j ∆y,
j = 0, 1, . . . , J.
Dividimos el intervalo de tiempo [0, tf ] en N subintervalos de tal manera que los niveles de
tiempo discreto son tn = n ∆t, n = 0, 1, . . . , N.
n
la aproximación a la solución exacta u(xi , yj , tn ).
Esquema explı́cito. Denotamaos por Ui,j
El exquema explı́cito bidimensional es
· n
¸
n+1
n
n
n
n
n
n
Ui,j
− Ui,j
+ Ui+1,j
+ Ui,j+1
Ui−1,j − 2Ui,j
− 2Ui,j
Ui,j−1
=a
+
.
∆t
(∆x)2
(∆y)2
(13.4)
Diferencias Finitas y E.D.P.
y
33
∆x
1111
0000
yj+1
1
0
0
1
11
00
yj
11111111
00000000
1
0
0
1
0
1
0
1
0
1
0
1
11
00
yj−1
∆y
1
0
0
1
xi−1 x i x i+1
x
Figura 12. Molécula computacional para el esquema explı́cito bidimensional
Con el objeto de simplificar la exposición introducimos la siguiente notación:
U := Ui,j
δx2 U := Ui−1,j − 2Ui,j + Ui+1,j
δy2 U := Ui,j−1 − 2Ui,j + Ui,j+1
Con la notación anterior el esquema explı́cito se puede escribir como
· 2 n
¸
δy2 U n
δx U
U n+1 − U n
=a
+
,
∆t
(∆x)2 (∆y)2
(13.5)
ó bién
U n+1 = U n + νx δx2 U n + νy δy2 U n ,
(13.6)
donde νx = a ∆t/(∆x)2 y νy = a ∆t/(∆y)2 .
Casi todo el análisis en una dimensión puede extenderse facilmente al caso de dos dimensiones.
Error de truncamiento.
·
¸
a
1
2
2
T (x, t) = utt ∆t −
uxxxx (∆x) + uyyyy (∆y) + . . . ∼ O(∆t)
2
12
Por tanto, el esquema es consistente y de orden ∆t.
Convergencia. Bajo la condición νx + νy ≤ 1/2, se satisface
µ
·
¸¶
a2 ∆t
1
n
Mtt ∆t +
E ≤
Mxxxx + Myyyy tf −→ 0 ,
2
12 ν
(13.7)
Diferencias Finitas y E.D.P.
34
cuando ∆t → 0.
Estabilidad. La estabilidad también puede analizarse mediante series de Fourier, suponiendo
que a es constante, e ignorando las condiciones de frontera. En este caso los modos de
Fourier son de la forma
U n = λn ei(k1 x+k2 y) ,
(13.8)
donde k1 y k2 son los números de onda en las direcciones x y y, respectivamente. Sustituyendo (13.8) en (13.6), se obtiene que el factor de amplificación es
·
¸
2 1
2 1
λ = λ(k1 , k2 ) = 1 − 4 νx sen ( k1 ∆x) + νy sen ( k2 ∆y) .
(13.9)
2
2
El peor modo discreto es aquel en el que k1 ∆x = k2 ∆y = π, es decir k1 = Iπ y k2 = Jπ. De
aquı́ que
1
(13.10)
|λ| ≤ 1 si νx + νy ≤ .
2
Esta condición de estabilidad es más severa que en el caso unidimensional. Por ejemplo,
a ∆t
1
si ∆x = ∆y = h, entonces ν = 2 ≤ . Además, cuando a sea variable, en cualquier pico
h
4
de ella sera necesario disminuir el paso del tiempo para mantener la estabilidad. Entonces,
el esquema es algo impráctico en 2–D, y más aún su generalización a 3–D. Por lo tanto, debe
buscarse equemas implı́citos ó semi–implı́citos para relajar la condición de estabilidad.
14
El método θ
Una posible alternativa para superar las limitaciones del esquema explı́cito bidimensional es
el metódo de promedios pesados (método θ):
δy2 (θ U n+1 + (1 − θ) U n )
U n+1 − U n
δ 2 (θ U n+1 + (1 − θ) U n )
=a x
+
a
.
∆t
(∆x)2
(∆y)2
(14.1)
Para el caso unidimensional hemos visto que el esquema es incodicionalmente estable para
θ ≥ 1/2, y es de segundo orden tanto en ∆t como en ∆x si θ = 1/2. Entonces vale la pena
considerar el método
Crank–Nicolson. Haciendo θ = 1/2 y reordenando (14.1), obtenemos la ecuación en
diferencias
1
1
1
1
(14.2)
νx δx2 − νy δy2 ) U n+1 = (1 + νx δx2 + νy δy2 ) U n .
2
2
2
2
Para verificar estabilidad, sustituimos el modo (13.8) en ésta ecuación, y después de simpli(1 −
Diferencias Finitas y E.D.P.
35
ficar y despejar, encontramos que el factor de amplificación en este caso es
λ(k1 , k2 ) =
1 − 2 νx sen2 (k1 ∆x/2) − 2 νy sen2 (k2 ∆y/2)
.
1 + 2 νx sen2 (k1 ∆x/2) + 2 νy sen2 (k2 ∆y/2)
(14.3)
Inmediatamente se sigue que |λ(k1 , k2 )| ≤ 1 para todo k1 , k2 , y para todo ∆x, ∆y, ∆t. Por
lo tanto, el esquema bidimensional de Crank–Nicolson es incondicionalmente estable.
En una dimensión la gran ventaja de este esquema fué relajar la condición de estabilidad
a un extra costo relativamente pequeño, debido a que se cuenta con un resolvedor rápido
y eficiente para sistemas tridiagonales, que es el algoritmo de Thomas. Sin embargo, en el
caso de dos dimensiones, a pesar que el algoritmo sigue siendo incondicionalmente estable, el
trabajo extra respecto al caso explı́cito es considerable. En el problema bidimensional, para
cada n = 1, 2, . . ., se debe resolver un sistema lineal con (I − 1) × (J − 1) ecuaciones con el
n+1
mismo número de incógnitas: Ui,j
. Para ilusttrar, supongamos que escogemos ∆x = ∆y,
es decir νx = νy , entonces la matriz del sistema es:




A −I
4 −1
−I A −I

−1 4 −1





 con A = . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
A = I + θν 






−I A −I 
−1 4 −1
−I A
−1 4
Como puede observarse la matriz del sistema A viene dada por bloques, y cada ecuación
involucra cinco incógnitas, y no hay forma de permutar renglones y columnas para que los
coeficientes no–cero formen una banda delgada, de tal forma que podamos hacer eliminación
y reduccón como en el caso unidimensional. En conclusión, no es posible resolver el sistema
en forma eficiente en el caso bidimensional, y el problema es todavı́a más severo en el caso
tridimensional.
15
Métodos implı́citos de direcciones alternantes (ADI)
Como los métodos implı́citos son muy eficientes en una dimensión, es natural buscar métodos
bidimensionales que sean implı́citos en una dirección pero no en ambas. El siguiente esquema,
es un ejemplo de este tipo de esquemas
Diferencias Finitas y E.D.P.
36
Peaceman–Rachford (1955)
δy2 U n
U n+1/2 − U n
δ 2 U n+1/2
=a x
+
a
∆t/2
(∆x)2
(∆y)2
δy2 U n+1
δ 2 U n+1/2
U n+1 − U n+1/2
=a x
+
a
∆t/2
(∆x)2
(∆y)2
n ∆t
(n+ 12−)∆t
(
(
IMPLICITO EN x
EXPLICITO EN y
EXPLICITO EN x
IMPLICITO EN y
(15.1)
(15.2)
(n+1) ∆t
Este esquema puede escribirse en la forma
1
1
νx δx2 ) U n+1/2 = (1 + νy δy2 ) U n ,
(15.3)
2
2
1
1
(1 − νy δy2 ) U n+1 = (1 + νx δx2 ) U n+1/2 ,
(15.4)
2
2
el cual constituye un sistema de dos problemas implı́citos unidimensionales. La solución de
cada uno de estos sistemas involucra solo conjuntos de ecuaciones tridiagonales. El trabajo
(1 −
total, en un paso del tiempo, necesita de la solución de J − 1 sistemas tridiagonales de orden
I − 1, seguido de la solución de I − 1 sistemas tridiagonales de orden J − 1. Este proceso
de solución de conjuntos de sistemas tridiagonales, es mucho más rápido que la solución del
problema completo de (I −1)×(J −1) ecuaciones en el método de Crank–Nicolson. El trabajo
requerido es aproximadamente tres veces el del método explı́cito. La siguiente figura ilustra
el orden en el que se pueden resolver estos sistemas tridiagonales. A éste tipo de esquemas se
les conoce comunmente como esquemas implı́citos de direcciones alternantes ó ADI
por sus siglas en el idioma Inglés (alternating direction implicit).
Para hacer el análisis del esquema, eliminamos U n+1/2 en las ecuaciones (15.3), (15.4).
Se obtiene la siguiente ecuación en diferencias
1
1
1
1
(15.5)
(1 − νx δx2 )(1 − νy δy2 ) U n+1 = (1 + νx δx2 )(1 + νy δy2 ) U n .
2
2
2
2
Sustituyendo el modo de Fourier (13.8) en (15.5), simplificando, y despejando, se obtiene el
factor de amplificación
(1 − 2 νx sen2 (k1 ∆x/2)) (1 − 2 νy sen2 (k2 ∆y/2))
λ(k1 , k2 ) =
.
(1 + 2 νx sen2 (k1 ∆x/2)) (1 + 2 νy sen2 (k2 ∆y/2))
de donde se sigue inmediatamente la estabilidad incondicional del método ADI.
(15.6)
Diferencias Finitas y E.D.P.
37
∆x
y
1111
0000
11
00
∆y
11
00
yj+1
yj
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
J−1
sistemas
tridiagonales
de orden
I−1
1
0
0
1
yj−1
xi−1 x i x i+1
x
I−1 sistemas tridiagonales de orden J−1
Figura 13. Ilustración del metodo ADI para problemas bidimensionales
Principio del máximo: En la ecuación (15.3), al desarrollar, se obiene
νy
νx n+1/2
n+1/2
n+1/2
n
(1 + νx ) Ui, j
= (1 − νy ) Ui,nj + (Ui,nj−1 + Ui+1,
(Ui+1, j + Ui−1, j ) .
j)
2
2
n+1/2
De esta expresión vemos que si νy ≤ 1, entonces Ui,j
n
vacinos de U y U
n+1/2
es combinación lineal de valores
con coeficientes no negativos que suman 1. Se obtiene una relación
análoga para la ecuación (15.4). Por lo tanto si
max{νx , νy } ≤ 1 ,
entonces se asegura que el esquema ADI satisface el principio del máximo.
Truncamiento. Observese que el esquema ADI (15.5) puede escribirse como
1
1
νx νy 2 2 n+1
1
1
1
(1 − νx δx2 − νy δy2 +
δx δy ) U
= (1 + νx δx2 + νy δy2 + νx νy δx2 ∆ty 2 ) U n . (15.7)
2
2
4
2
2
4
Ası́ que el error de truncamiento es
· n+1
¸n+1/2
u
− un aδx2 (un+1 + un ) aδy2 (un+1 + un ) ∆t a2 δx2 δy2 (un+1 − un )
n+1/2
−
−
+
.
Ti,j
=
∆t
2 (∆x)2
2 (∆y)2
4(∆x)2 (∆y)2
i,j
(15.8)
Diferencias Finitas y E.D.P.
38
Se puede verificar que
·
¸n+1/2
un+1 − un
(∆t)2 uttt
= ut +
+ ...
∆t
24
i,j
·
¸n+1/2
2 n+1
n
2
δx (u
+u )
(∆x) uxxxx (∆t)2 uxxtt
+
+ ...
= uxx +
2 (∆x)2
12
12
i,j
·
¸n+1/2
2 n+1
n
2
2
δy (u
+u )
(∆y) uyyyy (∆t) uyytt
= uyy +
+
+ ...
.
2
2 (∆y)
12
12
i,j
(15.9)
(15.10)
(15.11)
Por otro lado, gracias a (15.9) se tiene
·
¸n+1/2
∆t δx2 δy2 (un+1 − un )
(∆t)2 uttt
(∆t)2
2 2
=
δ δ ut +
+ ...
(∆x)2 (∆y)2
(∆x)2 (∆y)2 x y
24
i,j
δ2 v
y dado que para cualquier función v = v(x, y, t) suficientemente suave se satisface x 2 =
(∆x)
·
¸n+1/2
2
(∆x)
entonces
vxx +
vxxxx + . . .
12
i,j
£
¤
∆t δx2 δy2 (un+1 − un )
2
2
2
2 n+1/2
=
(∆t)
u
+
O(∆t)
+
O(∆x)
+
O(∆y)
.
xxyyt
i,j
(∆x)2 (∆y)2
(15.12)
Por lo tanto sustituyendo las expresiones (15.9)–(15.12) en (15.8) se obtiene que el error de
truncamiento es
·
¸n+1/2
1 1
n+1/2
2
2
2
uttt (∆t) − uxxxx (∆x) − uyyyy (∆y)
Ti,j
=
12 2
i,j
·
¸n+1/2
1 1
1
2
2
2
(15.13)
+ T OA
−
uxxtt (∆t) + uyytt (∆t) − uxxyyt (∆t)
4 2
2
i,j
·
¸
2
2
2
= O (∆t) + (∆x) + (∆y) .
Se concluye entonces, que el esquema implicito de direcciones alternantes es de segundo
orden respecto a ∆t, ∆x y ∆y.
Ejemplo 6. Se considera el problema bidimensional con a = 1 y condiciones inciales dadas
por la función “peaks” de MATLAB. La Figura 14 ilustra esta función cuando n = 0.
Las condiciones de frontera son u = 0 sobre ∂D. Se toman I = J = 48, y ∆t = 0.0025.
Observese que las condiciones iniciales toma valores positivos y negativos. En la misma figura
se muestra la solución para varios niveles de tiemp n. Se utilizó el programa “adicn.m”, que
consiste del metodo ADI con θ = 1/2 (Crank–Nicolson).
Diferencias Finitas y E.D.P.
39
n=0
n=3
10
5
5
0
0
−5
−10
1
−5
1
1
1
0.8
0.5
0.8
0.5
0.6
0.6
0.4
Y
0
0.4
0.2
0
Y
X
0
0.2
0
X
n = 25
n=6
5
5
0
0
−5
1
−5
1
1
0.8
0.5
0.6
1
0.8
0.5
0.6
0.4
Y
0
0.4
0.2
0
X
Y
0
0.2
0
X
Figura 14. Resultados numéricos para un problema bidimensional obtenidos con el metodo
ADI
Ejemplo 7. En este último ejemplo se toma como condicion inicial una función con dos
“torres” en forma simétrica (Ver Figura 15 con n = 0), y condiciones de frontera cero. Se
toma I = J = 40 y dos casos: ∆t = 0.0005, y ∆t = 0.0025. El primer caso proporciona
νx = νy = 0.8, y satisface la condición para el principio del máximo para el esquema ADI.
El segundo caso, por el contrario, proporciona νx = νy = 4, y no se satisface el principio
del máximo. Notese que, a pesar de que el método es estable en ambos casos, la solución se
degrada en el caso que no se satisface la condición para el principio del máximo.
16
Programas
Nota. En los comentarios de estos programas no se incluyen acentos.
Diferencias Finitas y E.D.P.
40
n=0
n=0
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
1
−0.2
1
1
1
0.8
0.5
0.8
0.5
0.6
0.6
0.4
Y
0
0.4
0.2
0
Y
X
0
0.2
0
X
n=5
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
1
−0.2
1
n=1
1
1
0.8
0.5
0.8
0.5
0.6
0.6
0.4
0.4
Y
0
0.2
0
Y
X
n = 30
1
0
0.2
0
X
n=2
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
1
−0.2
1
1
1
0.8
0.5
0.8
0.5
0.6
0.6
0.4
0.4
Y
0
0.2
0
Y
X
n = 100
1
0
0.2
0
X
n=5
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
1
−0.2
1
1
1
0.8
0.5
0.6
0.8
0.5
0.6
0.4
0.4
Y
0
0.2
0
X
Y
0
0.2
0
X
Figura 15. Ilustración del principio del máximo en el método ADI. Lado izquierdo:
∆t = 0.0005 (νx = νy = 0.8). Lado derecho ∆t = 0.0025 (νx = νy = 4)
Diferencias Finitas y E.D.P.
function M = explicito1(J,dt,N)
% METODO DE EULER EXPLICITO PARA EL MODELO PARABOLICO UNIDIMENSIONAL
%
%
%
%
%
%
%
ARGUMENTOS DE ENTRADA
J = numero de subdivisiones de [0,1]
dt = paso del tiempo
N = numero de pasos del tiempo
ARGUMENTO DE SALIDA
M = almacena los distintas instantaneas graficas para hacer una
animacion de la solucion
dx = 1/J;
x = 0:dx:1;
% Paso de discretizacion del intervalo [0, 1]
% Conjunto de valores x_j en la malla
% Condiciones iniciales: u = 2x
para x entre 0 y 0.5
%
u = 2 − 2x para x entre 0.5 y 1
j = 1:J/2; u(j) = 2*x(j);
j = J/2+1:J+1; u(j) = 2 − 2*x(j);
plot(x,u,’r’) % Grafica de las condiciones iniciales
axis([0 1 0 100])
pause
nu = dt/dx^2;
for n = 1:N
% Iteraciones en el nivel del tiempo
Unew(1) = 0; % Condicion de frontera
for j = 2:J % Esquema de diferencias.
Unew(j) = u(j) + nu*( u(j−1)−2*u(j)+u(j+1) );
end
Unew(J+1) = 0; % Condicion de frontera
u = Unew; % Actualizacion de la solución
plot(x,u)
axis([0 1 0 100])
M(n) = getframe
end
41
Diferencias Finitas y E.D.P.
function A = implicito1(J,dt,N)
% METODO DE EULER IMPLICITO PARA EL MODELO PARABOLICO UNIDIMENSIONAL
% CON CONDICIONES DE FRONTERA DIRICHLET HOMOGENENAS
%
%
%
%
%
%
%
%
ARGUMENTOS DE ENTRADA
J = numero de subdivisiones de [0,1] (J debe ser par)
dt = paso del tiempo
N = numero de pasos del tiempo
ARGUMENTO DE SALIDA
A = la matriz del sistema lineal en la ecuacion en diferencias
Condiciones de frontera homogeneas en x = 0 y x = 1
dx = 1/J; % Paso de la discretizacion en el intervalo [0, 1]
x = 0:dx:1; % Conjunto de valores x_j en la malla
% Condiciones iniciales u = 2x
para x entre 0 y 0.5
%
u = 2−2x para x entre 0.5 y 1
u = zeros(J+1,1);
j = 1:J/2+1; u(j) = 2*x(j);
j = J/2+2:J+1; u(j) = 2 − 2*x(j);
plot(x,u,’r’) % Grafica de las condiciones iniciales
axis([0 1 0 1])
pause
% CONSTRUCCION DE LA MATRIZ DEL SISTEMA
nu = dt/dx^2;
A = (1+2*nu)*eye(J−1);
A(1,2) = −nu;
for j = 2:J−2;
A(j,j−1) = −nu;
A(j,j+1) = −nu;
end
A(J−1,J−2) = −nu;
% Iteraciones en el tiempo
unew = zeros(J+1,1);
for n = 1:N,
unew(1) = 0;
% Condicion de frontera en x = 0
unew(2:J) = A\u(2:J); % SOLUCION DEL SISTEMA LINEAL
unew(J+1) = 0; % Condicion de frontera en x = 1
u = unew; % Actualizacion para avanzar en el tiempo
plot(x,u)
axis([0 1 0 1])
M(n) = getframe;
end
42
Diferencias Finitas y E.D.P.
function implicito1t(J,dt,N)
% METODO DE EULER IMPLICITO PARA EL MODELO PARABOLICO UNIDIMENSIONAL
% CON CONDICIONES DE FRONTERA DIRICHLET HOMOGENENAS
% SE UTILIZA EL METODO DE THOMAS
%
%
%
%
%
%
ARGUMENTOS DE
J = numero de
dt = paso del
N = numero de
ARGUMENTOS DE
Nunguno
ENTRADA
subdivisiones de [0,1] (J debe ser par)
tiempo
pasos del tiempo
SALIDA
dx = 1/J; % Paso de la discretizacion en el intervalo [0, 1]
x = 0:dx:1; % Conjunto de valores x_j en la malla
% Condiciones iniciales u = 2x
para x entre 0 y 0.5
%
u = 2−2x para x entre 0.5 y 1
j = 1:J/2+1; u(j) = 2*x(j);
j = J/2+2:J+1; u(j) = 2 − 2*x(j);
plot(x,u,’r’) % Grafica de las condiciones iniciales
axis([0 1 0 1])
pause % Pausa
nu = dt/dx^2;
% Coeficientes e(j) del sistema normalizado
e(1) = 0;
for j = 2:J
e(j) = nu/(1+nu*(2−e(j−1)));
end
% Iteraciones en el tiempo
unew = zeros(J+1,1);
for n = 1:N
f(1) = 0;
for j = 2:J % Lados derechos del sistema normalizado
f(j) = (u(j)+nu*f(j−1))/(1+nu*(2−e(j−1)));
end
unew(J+1) = 0; % Condicion de frontera homogenea en x = 1
% Solucion por sustitucion regresiva del sistema normalizado
for j = J:−1:2
unew(j) = f(j)+e(j)*unew(j+1);
end
unew(1) = 0;
% CONDICION DE FRONTERA HOMOGENEA en x = 0
u = unew; % Actualizacion para avanzar en el tiempo
plot(x,u)
axis([0 1 0 1])
M(n) = getframe;
end
43
Diferencias Finitas y E.D.P.
function teta1t(J, dt, N, theta)
% METODO TETA PARA EL MODELO PARABOLICO UNIDIMENSIONAL
% CON CONDICIONES DE FRONTERA DIRICHLET HOMOGENENAS
% SE UTILIZA EL AGORITMO DE THOMAS
%
%
%
%
%
%
%
ARGUMENTOS DE
J = numero de
dt = paso del
N = numero de
theta = valor
ARGUMENTOS DE
Nunguno
ENTRADA
subdivisiones de [0,1] (J debe ser par)
tiempo
pasos del tiempo
de teta entre 0 y 1 (Crank−Nicolson si theta = 0.5)
SALIDA
dx = 1/J;
x = 0:dx:1;
% Condiciones iniciales u = 2x
para x entre 0 y 0.5
%
u = 2−2x para x entre 0.5 y 1
j = 1:J/2+1; u(j) = 2*x(j);
j = J/2+2:J+1; u(j) = 2 − 2*x(j);
plot(x,u,’r’)
pause
nu = dt/dx^2;
nut = theta*nu;
% Coeficientes e(j) del sistema normalizado
e(1) = 0;
for j = 2:J
e(j) = nut/(1+nut*(2−e(j−1)));
end
% Iteraciones en el tiempo
unew = zeros(J+1,1);
for n = 1:N
% Lados derechos del sistema normalizado
f(1) = 0;
for j = 2:J
d = u(j) + (1−theta)*nu*(u(j−1)−2*u(j)+u(j+1));
f(j) = (d + nut*f(j−1))/(1+nut*(2−e(j−1)));
end
unew(J+1) = 0; % Condicion de frontera homogenea en x = 1
% Solucion por sustitucion regresiva del sistema normalizado
for j = J:−1:2
unew(j) = f(j)+e(j)*unew(j+1);
end
unew(1) = 0;
% CONDICION DE FRONTERA HOMOGENEA en x = 0
u = unew; % Actualizacion para avanzar en el tiempo
plot(x,u)
axis([0 1 −0.2 1])
M(n) = getframe;
%pause
end
hold off
44
Diferencias Finitas y E.D.P.
function adicn(I,J,dt,N)
% Metodo implicito de direcciones alternantes en 2−D
% Condiciones de frontera Dirichlet homogeneas
dx = 1/I;
dy = 1/J;
nux = dt/dx^2;
nuy = dt/dy^2;
% Construccion de la malla bidimensional
x = (0:dx:1)’;
y = (0:dy:1)’;
% Condiciones iniciales
% Condicion inicial suave con valores postivos y negativos.
% En este caso debera escogerse necesariamente I = J = 48
u = peaks;
% Grafica de la condicion inicial
surf(x,y,u’)
xlabel(’X’)
ylabel(’Y’)
pause
% Calculo de los coeficientes e(i) en el algoritmo de Thomas.
% ex(i) son los coef. para los sist. tridiagonales en la direccion x
% ey(j) son los coef. para los sist. tridiagonales en la direccion y
nuxm = 0.5*nux;
ex(1) = 0;
for i = 2:I
ex(i) = nuxm/(1+nuxm*(2−ex(i−1)));
end
nuym = 0.5*nuy;
ey(1) = 0;
for j = 2:J
ey(j) = nuym/(1+nuym*(2−ey(j−1)));
end
% Arreglo auxiliar para almacenar calculos intermedios
unew = zeros(I+1,J+1);
% ITERACIONES EN EL TIEMPO
for n = 1:N
% Solucion de los SISTEMAS TRIDIAGONALES EN LA DIRECCION X
for j = 2:J % Se resuelve un sistema tridiagonal para cada j
fx(1) = 0;
for i = 2:I % Algoritmo de Thomas
d = (1−nuy)*u(i,j) + 0.5*nuy*(u(i,j−1) + u(i,j+1));
fx(i) = (d + nuxm*fx(i−1))/(1+nuxm*(2−ex(i−1)));
end
unew(I+1,j) = 0; % Condicion de frontera homogenea en x = 1
for i = I:−1:2
unew(i,j) = fx(i)+ex(i)*unew(i+1,j);
end
unew(1,j) = 0;
% Condicion de frontera homogenea en x = 0
end
u = unew; % Actualizacion para ir a la otra direccion
% Solucion de los SISTEMAS TRIDIAGONALES EN LA DIRECCION Y
45
Diferencias Finitas y E.D.P.
for i = 2:I % Se resuelve un sistema tridiagonal para cada i
fy(1) = 0;
for j = 2:J % Algoritmo de Thomas
d = (1−nux)*u(i,j) + 0.5*nux*( u(i−1,j)+u(i+1,j) );
fy(j) = (d + nuym*fy(j−1))/(1+nuym*(2−ey(j−1)));
end
unew(i,J+1) = 0; % Condicion de frontera homogenea en y = 1
for j = J:−1:2
unew(i,j) = fy(j)+ey(j)*unew(i,j+1);
end
unew(i,1) = 0;
% Condicion de frontera homogenea en y = 0
end
u = unew; % Actualizacion para avanzar en el tiempo
% Grafica de la solucion
% contour3(x,y,u,50)
surf(x,y,u’);
%shading flat
axis([0 1 0 1 −5 5]);
%axis([0 1 0 1 0 1]);
xlabel(’X’)
ylabel(’Y’)
M(n) = getframe;
end
46
Descargar