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