Anexo I Propuesta de estudio Diseño de mallas adaptativas aplicando equidistribución Registro CGPI: 004004 Director del proyecto: M. C. Juan José Tapia Armenta MÉTODO DE DIFERENCIAS FINITAS Por: Fernando Cervantes Leyva Becario PIFI Versión del documento.0 Abril 00 ttp://www.citedi.mx/~jjtapia/pagina/proyectos.tm. Resumen Se desarrolló un conjunto de formulas de diferencias nitas y se creó una tabla que asiste en la construcción de la matriz de diferenciación del método de diferencias nitas.. Introducción Las ecuaciones diferenciales an sido utilizadas extensamente para modelar una gran variedad de problemas en mecánica de sólidos y uidos, biología, ciencia de materiales, economía, ecología, ciencias computacionales, etc. Por ejemplo, las ecuaciones de Navier Stokes en dinámica de uidos, las ecuaciones de Maxwell para electromagnetismo. Desafortunadamente, aunque las ecuaciones diferenciales pueden describir una gran cantidad de estos problemas, solo una pequeña parte de ellos pueden ser solucionados de manera exacta en términos de funciones elementales (polinomios, seno, coseno, logaritmos, etc.) y sus combinaciones (funciones compuestas). Frecuentemente, aun cuando una ecuación diferencial puede ser resuelta analíticamente, se requiere para esto grandes esfuerzos y utilización de teorías matemáticas avanzadas. La forma cerrada de la solución puede ser muy complicada para ser realmente útil. Si la solución analítica no está disponible, se desea encontrar una solución aproximada a la ecuación diferencial. Esto se logra utilizando métodos numéricos. Este documento muestra como resolver numéricamente ecuaciones diferenciales ordinarias (ODE) y parciales (PDE), utilizando el método de diferencias nitas (FDM).
. Método de Diferencias Finitas El método de diferencias nitas está basado en aproximaciones que permiten reemplazar ecuaciones diferenciales por ecuaciones de diferencia. Estas aproximaciones de diferencia nita son de forma algebraica; relacionan el valor de la variable dependiente, en un punto dentro de la región de solución, con sus valores en algunos puntos vecinos. En base a esto, la solución por diferencia nita básicamente involucra pasos: () Discretización. () Aproximación de la Ecuación Diferencial. () Solución de las Ecuaciones de Diferencia... Discretización (Paso ) Debido a que los cálculos para la solución de las ecuaciones diferenciales son realizados con la ayuda de una computadora, es necesario discretizar la región de solución en un número nito de n + puntos. Figura : Discretización de tipo malla uniforme. Tal como se muestra en la Fig.(), para el método de diferencias nitas, los n+ puntos están distribuidos con una distancia uniforme. Esta discretización es conocida como malla uniforme. x i = i; i = 0; ; :::; n; = n () En cada punto de la malla se encuentra su respectiva aproximación de la solución de la ecuación diferencial... Aproximación de la Ecuación Diferencial (Paso ) Se aproxima la ecuación diferencial dada por su equivalente ecuación de diferencia, lo cual signi ca que en lugar de resolver una ecuación diferencial para todo el problema, se tiene una ecuación de diferencia para cada punto de la malla.... Deducción de fórmulas de diferencias nitas Las fórmulas de diferencias nitas pueden ser deducidas geométricamente o usando series de Taylor. La derivada en un punto está dada por F 0 F (x + ) F (x) (x) = lm ; ()!0 si se asume que es pequeña, da como resultado que F 0 F (x + ) (x) F (x) ; () esta fórmula es una aproximación a la primera derivada. Es importante notar que la Ec.() establece que ambas partes son casi iguales, lo que implica que existe un error. F 0 F (x + ) (x) = F (x) + error: (4)
Figura : Comparación entre la derivada analítica (recta punteada) y la derivada aproximada por diferencia acia adelante P B (recta continua). A la Ec.(4) se le conoce como diferencia acia delante para la primera derivada. Geométricamente, como se observa en la Fig.(), esta formula representa la pendiente de la línea secante que conecta los dos puntos (x; F (x)) y (x + ; F (x + )). Este método para obtener las aproximaciones de diferencia nita es intuitivo, un método más general es la utilización de la Serie de Taylor.... Aplicación de la Serie de Taylor. La serie de Taylor es la erramienta más importante en el análisis del método de diferencias nitas. Esta puede escribirse de la siguiente forma: F (x + ) = F (x) + F 0 (x) +! () F 00 (x) +! () F 000 (x) + ::: () Para obtener la primera derivada se despeja F 0 (x), i F (x + ) F (x) + F 0! () F 00 (x) +! () F 000 (x) + ::: (x) = reordenando, F 0 F (x + ) (x) = F (x)! () F 00 (x) +! () F 000 (x) + ::: nalmente, se trunca la serie, dando como resultado una formula que contiene un error cuyo orden es el del valor mayor de n de la parte no tomada en cuenta F 0 F (x + ) (x) = F (x) + O () (8) La Ec.(8) corresponde a la formula de diferencia acia adelante para la primera derivada con orden de error O( ), lo que en este caso, signi ca que el error de la aproximación es proporcional al tamaño del incremento (ver Fig.()). Se lee como error de orden n. Es importante recordar que es un valor pequeño (menor a ), por lo que para n < n, n >> n, de aí que el orden del error obedezca solo al término más signi cativo. Por otro lado, al tomar el incremento acia atrás en la serie de Taylor se obtiene, (6) () F (x ) = F (x) F 0 (x) +! () F 00 (x)! () F 000 (x) + ::: (9)
Figura : Comparación entre la derivada analítica (recta punteada) y la derivada aproximada por diferencia acia atras AP (recta continua). despejando F 0 (x), al reagrupar, F (x ) F (x) F (x ) F (x) +! () F 00 (x) +! () F 00 (x)! () F 000 (x) + :::! () F 000 (x) + ::: nalmente, se obtiene la formula de diferencia acia atrás para la primera derivada con orden de error, (0) () la cual se representa en la Fig. (). F (x) F (x ) + O () () Sumando las series de Taylor acia adelante y acia atras la aproximación a la primera derivada por diferencia centrada es F 0 F (x + ) F (x ) (x) = + O ; () cuya representación se muestra en la Fig.(4). Al comparar las formulas para la primera derivada de diferencia acia delante (Ec.(8)), acia atrás(ec.()), y centrada (Ec.()), se aprecia que cada una de ellas requiere la misma cantidad de puntos de la malla para aproximar la derivada en un punto (en este caso dos puntos), la diferencia consiste en que la formula de diferencia centrada tiene un error de O mientras que las de diferencia acia adelante y acia atrás tienen un error de O (). O < O () : Esto se aprecia en la Fig.(), donde la línea que representa la solución para la diferencia centrada (AB), es más cercana al resultado real que las líneas que representan el resultado a partir de las otras opciones (AP, y P B). De lo anterior, se puede concluir que la exactitud de la aproximación puede incrementarse básicamente de formas: () Incrementando el número de puntos tomados en la construcción de la formula. Se obtiene una formula que involucre un mayor numero de puntos de la malla y con esto incremente su exactitud. Esto se logra al desarrollar y combinar cierto numero de series de Taylor tomando en cuenta un numero mayor de puntos, por ejemplo F (x + ), F (x + ), etc. 4
Figura 4: Comparación entre la derivada analítica (recta punteada) y la derivada aproximada por diferencia centrada AB (recta continua inferior). Figura : Comparación entre la derivada analítica (recta punteada) y las derivadas aproximadas (rectas P B; AP ; y AB).
() Incrementando el número de puntos en la malla. Dada una formula para cualquiera de las aproximaciones, entre mayor sea el numero de puntos en la malla, menor será el valor del error. Entre mayor sea el número de puntos que utilice una ecuación para aproximar la solución, y en los que esté discretizada la región de solución, mayor será el trabajo computacional requerido. Por esta razón, es importante que el grado de exactitud de la solución mínimo requerido sea conocido, para evitar así cálculos innecesarios.... Método de Coe cientes Indeterminados Supongamos que se desea utilizar diferencia nita acia atras para aproximar F 0 (x) para un error de segundo orden. Por el método de coe cientes indeterminados utilizando F (x); F (x ); F (x ), escribimos, F 0 (x) F (x) + F (x ) + F (x ): Podemos utilizar la Serie de Taylor en x para obtener un sistema de ecuaciones, F (x) + F (x ) + F (x ) = F (x) + F (x) F (x) F 0 (x) + F 00 (x) F 0 (x) + 4 F 00 (x) La combinación lineal debe de aproximar F 0 (x). Por lo que escribimos 6 F 000 (x) + (4) 8 6 F 000 (x) + O max j k j 4 + + = 0 = + = 0 Debido a que se esta buscando F 0 (x), el renglón correpondiente a la primera derivada se iguala a. Resolviendo el sistema obtenemos, =, =, = : Por lo tanto, obtenemos la formula para diferencia acia atras con orden de O( ), escrito de otra forma, F (x) F (x ) + (x ) + O () F (x ) 4F (x ) + F (x) + O (6)..4. Resumen del uso de la Serie de Taylor: - La Serie de Taylor y el Método de Diferencias Finitas asumen que la función a ser resuelta varía de forma continua (no existen discontinuidades). - Es posible construir fórmulas para diferencia acia adelante, acia atrás, y centrada a partir de la Serie de Taylor. - Es posible incrementar el orden de la exactitud de dicas formulas, y obtener aproximaciones de derivadas de cualquier grado al combinar distintas series de Taylor desarrolladas con diferentes numeros de puntos... Solución de las Ecuaciones de Diferencia (Paso ) Se desea resolver la ecuación diferencial dy dx = sin(x ) en el intervalo [0; ], ver Fig.(6). Siguiendo el Paso del procedimiento, la región de solución es discretizada, el intervalo continuo [0; ] se convierte en un vector fx i g de fn + g valores (o puntos en la malla), desde 0 asta. A su vez, la ecuacíon diferencial en forma continua, dy = sin (x) dx 6
pasa a la forma discreta, [A i;j ] fy i g = sin(x i ) () donde, [A i;j ]: Matriz de diferenciación de [fn + g fn + g] valores, forma discreta del operador continuo d dx. fy i g: Solución de la ecuación diferencial en forma discreta, vector de fn + g valores. sin(xi ) : Información del problema, vector de fn + g valores. e i; j = ; ; :::n + : El segundo paso consiste en la Aproximación de la Ecuación Diferencial, por lo tanto se selecciona el tipo de formula de diferencia nita que se utilizará para resolver el problema. En este caso se selecciona la formula de diferencia acia adelante para la primera derivada con O( ); F (x + ) + 4F (x + ) F (x) + O( ) esta se aplica a cada uno de los puntos de la malla, formando así un sistema de n + ecuaciones simultaneas (una ecuación por cada punto), ( y + 4y y + 0 + 0 + ::: + 0) = sin(x ) (0 y + 4y y 4 + 0 + ::: + 0) = sin(x ) (0 + 0 + y + 4y 4 y + ::: + 0) = sin(x ) ::::::::::::::::::::::::::::::::::::::::::::::::::::::: = :::::::::: (0 + ::: + 0 + 0 + y n + 4y n y n+ ) = sin(x n ) (0 + ::: + 0 + y n 4y n + y n + 0) = sin(x n ) (0 + ::: + 0 + 0 + y n 4y n + y n+ ) = sin(x n+ ) Este sistema puede escribirse en la forma [A i;j ] fy i g = sin(x i ) ; + 4 + 0 + 0 + ::: + 0 y 0 + 4 + 0 + ::: + 0 y 0 + 0 + 4 + ::: + 0 y = :::::::::::::::::::::::::::::::::: ::: = 6 0 + ::: + 0 + 0 + 4 6 y n 4 0 + ::: + 0 + 4 + + 0 4 y n 0 + ::: + 0 + 0 + 4 + y n+ 6 4 sin(x ) sin(x ) sin(x ) ::: sin(x n ) sin(x n ) sin(x n+ ) Por lo que para encontrar el vector solución fy i g, se despeja la ecuación, y obtenemos, (8) fy i g = [A i;j ] sin(x i ) (9) 6 4 y y y ::: y n y n y n+ = = 6 4 + 4 + 0 + 0 + ::: + 0 0 + 4 + 0 + ::: + 0 0 + 0 + 4 + ::: + 0 :::::::::::::::::::::::::::::::::: 0 + ::: + 0 + 0 + 4 0 + ::: + 0 + 4 + + 0 0 + ::: + 0 + 0 + 4 + 6 4 sin(x ) sin(x ) sin(x ) ::: sin(x n ) sin(x n ) sin(x n+ ) La matriz de diferenciación [A i;j ] es una matríz singular, al aplicar las condiciones de frontera, (0) y() = 0 ()
Figura 6: Grá ca de la Ecuación [A i;j ] fy i g = sin(x i ) en el intervalo [0; ] : Figura : Grá ca de fy i g = [A i;j ] sin(x i ) en el intervalo [0; ]. la sigularidad se elimina de la forma, fy i g = [A i;j ] sin(x i ) fa i; N+ y N+ g i = :::N; j = :::N () donde, fy N+ g = f0g Una vez realizada la operación, se obtiene un vector desde y asta y N+ el cual es la solución numérica de la ecuación diferencial (ver Fig.(). y su solución numérica, la Ec.(9),... Técnica para la construcción de Matrices de Diferenciación. Es importante recalcar que la matriz de diferenciación [A i;j ] es independiente de la función que se desea resolver. La matriz de diferenciación [A i;j ], puede utilizarse tanto para obtener la derivada, fb i g, de una función cualquiera fu i g, o como para resolver una ecuación diferencial, y obtener la función fug, [A i;j ] fu i g = fb i g () fu i g = [A ij ] A continuación se muestran un par de ejemplos de matrices de diferenciación, a) n + = 6; fb i g (4) 8
b) n + = 8; F (x+) + 4F (x+) F (x) +O( ) =) A = F (x) F (x ) + 4F (x ) F (x ) +O( ) =) A = 6 4 6 4 4 0 0 0 0 4 0 0 0 0 4 0 0 0 0 4 0 0 4 0 0 0 0 4 4 0 0 0 0 0 4 0 0 0 0 0 4 0 0 4 0 0 0 0 0 4 0 0 0 0 0 4 0 0 0 0 0 4 0 0 0 0 0 4 Las siguientes tablas pueden ser utilizadas como guía en la contrucción de algunas matrices de diferenciación. Tipo: Adelante Derivada Error F (x) F (x+) F (x+) F (x+) F (x+4) F (x+) F (x+6) F (x+) Primera O() (=) 0 0 0 0 0 0 Primera O( ) (=) 4 0 0 0 0 0 Primera O( ) (=6) 8 9 0 0 0 0 Primera O( 4 ) (=) 48 6 6 0 0 0 Segunda O( ) = 4 0 0 0 0 Segunda O( ) = 04 4 6 0 0 0 Segunda O( 4 ) = 4 4 4 6 6 0 0 0 Tercera O( ) =4 8 98 4 0 0 Tercera O( 4 ) =8 49 46 496 0 04 0 Cuarta O( 4 ) =6 4 6 8 9 06 64 Cuando se construye el sistema de ecuaciones, y consecuentemente, al obtener la matriz de diferenciación, en el caso de diferencia acia adelante, a) Se aplica la formula de diferencia acia adelante desde el primer punto, y ; asta el nodo y (n+) jk maxj, donde n + es igual al numero de puntos de la malla, y donde jk max j es el numero de incremento máximo que contiene la formula de diferencia nita que se está utilizando, por ejemplo, para el caso de diferencia nita acia adelante con orden de error O( ), F 0 F (x + ) + 4F (x + ) F (x) (x) = + O( ) el valor correspondiente a jk max j sería k =, tomado del término F (x + ): a) Para completar la matriz, desde el punto y (n+) (jk maxj)+ asta el punto y n+ se utiliza la formula de diferencia acia atras, con el mismo orden de error. 9
Tipo: Atras Derivada Error F (x ) F (x 6) F (x ) F (x 4) F (x ) F (x ) F (x ) F (x) Primera O() (=) 0 0 0 0 0 0 Primera O( ) (=) 0 0 0 0 0 4 Primera O( ) (=6) 0 0 0 0 9 8 Primera O( 4 ) (=) 0 0 0 6 6 48 Segunda O( ) = 0 0 0 0 4 Segunda O( ) = 0 0 0 6 4 04 Segunda O( 4 ) = 0 0 0 6 6 4 4 4 Tercera O( ) =4 0 0 4 98 8 Tercera O( 4 ) =8 0 04 0 496 46 49 Cuarta O( 4 ) =6 4 64 06 9 8 6 Si se desea utilizar diferencia acia atras, b) Se aplica diferencia acia adelante al inicio de la malla, desde el punto y asta el punto y (jk maxj), y b) Se utiliza diferencia acia atras desde el nodo y (ji maxj+) asta el nodo y n+. Tipo: Centrada Derivada Error F (x ) F (x ) F (x ) F (x) F (x+) F (x+) F (x+) Primera (=) 0 0 0 0 0 Segunda = 0 0 0 0 Segunda 4 = 0 6 0 6 0 Finalmente, para el caso de diferencia centrada, se utilizan las dos técnicas anteriores para completar la matriz de diferenciación. c) Se utiliza diferencia acia adelante desde el punto y asta el punto y (jk maxj). c) Desde el nodo y (jk maxj+) asta el nodo y (n+) jk maxj se utiliza diferencia centrada. c) Finalmente desde el punto y (n+) (jk maxj)+ asta el punto y n+ se usa la formula de diferencia acia atras. Es importante recordar que para obtener el mayor grado de aproximación posible, todas las ecuaciones involucradas en la generación de la matriz de diferenciación deben ser del mismo orden de error.... Resumen fórmulas de diferencias nitas para aproximaciones de diferentes derivadas con diferentes órdenes de error. A continuación se presenta un resumén de varias fórmulas de diferencias nitas, para aproximar derivadas con diferentes órdenes de erro. Aproximación de la Primera Derivada: Error de Primer Orden: Error de Segundo Orden: F 0 F (x + ) (x) = F F (x) F (x ) F (x + ) + 4F (x + ) F (x) (x) + O() () + O() (6) + O( ) () 0
Centrada: Error de Tercer Orden: Error de Cuarto Orden: F (x ) 4F (x ) + F (x) F (x + ) F (x ) F (x + ) 9F (x + ) + 8F (x + ) F (x) 6 F (x) 8F (x ) + 9F (x ) F (x ) 6 + O( ) (8) + O( ) (9) F (x + 4) + 6F (x + ) 6F (x + ) + 48F (x + ) F (x) F (x) 48F (x ) + 6F (x ) 6F (x ) + F (x 4) Aproximación de la Segunda Derivada: Error de Segundo Orden: Centrada: Error de Tercer Orden: + O( ) (0) + O( ) () + O( 4 ) () + O( 4 ) () F (x + ) + 4F (x + ) F (x + ) + F (x) + O( ) (4) F (x) F (x ) + 4F (x ) F (x ) + O( ) () F (x ) F (x) + F (x + ) + O( ) (6) F (x + 4) 6F (x + ) + 4F (x + ) 04F (x + ) + F (x) + O( ) () F (x) 04F (x ) + 4F (x ) 6F (x ) + F (x 4) + O( ) (8) Error de Cuarto Orden: 0F (x + ) + 6F (x + 4) 6F (x + ) + 4F (x + ) 4F (x + ) + 4F (x) +O( 4 ) 4F (x) 4F (x ) + 4F (x ) 6F (x ) + 6F (x 4) 0F (x ) +O( 4 ) (9) (40)
Centrada: F (x ) + 6F (x ) 0F (x) + 6F (x + ) F (x + ) + O( 4 ) (4) Aproximación de la Tercera Derivada: Error de Tercer Orden: F () (x) = F () (x) = F (x + ) 4F (x + 4) + 98F (x + ) 8F (x + ) + F (x + ) F (x) 4 +O( ) F (x) F (x ) + 8F (x ) 98F (x ) + 4F (x 4) F (x ) 4 + O( ) Error de Cuarto Orden: F () (x) = 8 [ F (x + 6) + 04F (x + ) 0F (x + 4) + 496F (x + ) (44) 46F (x + ) + F (x + ) 49F (x)] + O( 4 ) (4) (4) F () (x) = 8 [49F (x) F (x ) + 46F (x ) 496F (x ) + (4) 0F (x 4) 04F (x ) + F (x 6)] + O( 4 ) Aproximación de la Cuarta Derivada: Error de Cuarto Orden: F (4) (x) = ( ) [ F (x + ) + 64F (x + 6) F (x + ) + 06F (x + 4) (46) 64 9F (x + ) + 8F (x + ) F (x + ) + 6F (x)] + O( 4 ) F (4) (x) = ( ) [6F (x) F (x ) + 8F (x ) 9F (x ) + (4) 64 06F (x 4) F (x ) + 64F (x + 6) F (x )] + O( 4 ) F (4) (x) = ( ) [6F (x) F (x ) + 8F (x ) 9F (x ) + (48) 64 06F (x 4) F (x ) + 64F (x + 6) F (x )] + O( 4 ) Referencias [] M. N. Sadiku. Numerical Tecniques in Electromagnetics. CRC Press, 00. [] L. N. Trefeten. Finite di erence and spectral metods for ordinary and partial di erential equations. No publicado, disponible en ttp://web.comlab.ox.ac.uk/oucl/work/nick.trefeten/pdetext.tml, 996. [] J. W. Tomas. Numerical Partial Di erential Equations: Finite Di erence Metods. Number in Texts in Applied Matematics. Springer-Verlag, New York, 99.