DFC Tema 3.2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 4

Notas - DFC - Capı́tulo 3 - Introducción

Diferencias Finitas
José Miguel Pérez - (18-Marzo-2020)

Versión 1.0

I. Diferencias finitas
Existen distintos métodos numéricos de discretización espacial, los más importantes son: método de
diferencias finitas, método de volúmenes finitos, método de elementos finitos y métodos espectrales. Estos
métodos a su vez presentan distintas variantes. Durante este curso nos centraremos fundamentalmente en el
método de diferencias finitas aunque veremos algo del método de volúmenes finitos.
Una de las propiedades más representativas del método en diferencias finitas es que se basa en la formu-
lación diferencial de las ecuaciones. En dicho método el dominio se representa mediante una distribución de
puntos (nodos) en los que las variables están definidas. Las ecuaciones diferenciales también se evalúan en
los nodos, lo que implica que se necesita calcular la expresión de las derivadas espaciales en los nodos. Estas
derivadas se aproximan mediante combinaciones lineales de los valores de la variable que estamos derivando,
definidos entorno al nodo de estudio. El peso de cada uno de los términos en las combinaciones lineales
anteriores deben elegirse convenientemente para que dichas expresiones converjan a la derivada que estas
representan cuando los nodos se aproximan infinitesimalmente (condición de consistencia). Los esquemas
derivados de este método son sencillos de programar pero suelen utilizarse en geometrı́as simples (mallas
estructuradas).
Este método es precisamente el que se utilizó en la Introducción del Tema 3 (DFC Tema 3.1.pdf). En
dicho ejemplo nos quedo pendiente determinar la expresión de la derivada espacial en el nodo i, @x u i . El
cálculo de esta derivada, o derivadas superiores (dependerá del problema) es el objetivo de este documento.

Nota: Os aconsejo que volváis a leer lo anterior una vez hayáis estudiado el documento y veréis que todo
tiene sentido.

Para fijar ideas vamos a trabajar en una dimensión espacial. Suponemos el dominio de longitud L y la
discretización mostrada en la figura 1.
0 1 2 3 4 5 6 7 8 9 10 11 12 = N
x
x=0 x=L
Figure 1: Dominio computacional. Los números del 0 al 12 superiores son las etiquetas de los nodos de la
discretización espacial.

Dado un nodo genérico i su posición viene dada por xi = i x, donde x = L/N . Definimos los nodos
internos como aquellos que van de i = 1 a i = N 1, mientras que los nodos externos (o del contorno) son
i = 0 y i = N . Como se puede comprobar x0 = 0 y xN = L.
Suponiendo que queremos resolver una EDP (ecuación en derivadas parciales) donde u = u(x, t) es la
variable a resolver en espacio y tiempo, se definen como variables computacionales el valor de u obtenido

1 of 4
numéricamente en cada paso de tiempo en los nodos internos. Es decir, los valores u1 , u2 , . . . uN 1 para
cada paso de tiempo. Los valores u0 y uN son los valores de u en el contorno, y en principio no son calculados
a partir de la EDPa . Estos valores pueden ser (a) impuestos (condiciones de contorno) o (b) calculados a
partir del resultado en los nodos internos (por ejemplo mediante extrapolación).
Una extrapolación de primer orden en el contorno derecho asume que la solución es constante espacial-
mente en dicho contorno por lo que ũN = uN 1 , mientras que una extrapolación de segundo orden asume
una variación lineal de la solución con lo que ũN = 2uN 1 uN 2 . Nota: Utilizamos la tilde para indicar el
valor extrapolado. Nota: Podemos razonar igualmente con el valor de u en x0 .
Respecto al orden del que se habla en el párrafo anterior, éste nos dice como escala el error que se comete
en la aproximación (o extrapolación). En una aproximación de primer orden el error escala con O( x)
mientras que en una aproximación de segundo orden dicho error escala con O( x2 ). Es fácil ver que la
extrapolación ũN = 2uN 1 uN 2 es de segundo orden, para ello basta realizar desarrollos de Taylor de
uN 1 y uN 2 entorno a xN y ver qué sale,
✓ ◆
1
ũN = 2uN 1 uN 2 ⇡ 2 uN @x u x + @xx u x2 ...
✓ n ◆2 n
(1)
1
uN 2@x u x + @xx u (2 x) ... ⇡ uN O( x2 ) .
2
n 2 n

Como se puede ver el término de la izquierda (que era nuestra aproximación numérica en xN (o N )) es igual
a uN más un error que escala con la segunda potencia de x, es decir, la aproximación es de segundo orden.
También se dice que la aproximación ũN = 2uN 1 uN 2 es consistente puesto que si tomamos el lı́mite
cuando x tiende a cero veremos que ũN converge al valor exacto uN . Esto es fácil de ver, tomando el lı́mite
cuando x tiende a cero en (1) se tiene que,

lim ũN = lim (2uN 1 uN 2) = lim uN O( x2 ) = uN .


x!0 x!0 x!0

Normalmente en la literatura en vez de escribir ũN = 2uN 1 uN 2 se suele escribir uN = 2uN 1 uN 2


asumiendo que el valor de uN que aparece en la última expresión es el valor extrapolado. Puse la tilde por
razones pedagógicas pero a partir de ahora dejaré de hacerlo.

Obtención de la derivada segunda centrada: Buscamos una aproximación numérica de la derivada


segunda u00i como combinación de valores de u en nodos definidos en el entorno de xi .
Partimos de los siguientes desarrollos de Taylor,

( x)2 00 ( x)3 000 ( x)4 0000


ui+1 = ui + xu0i + ui + ui + ui + ...
2! 3! 4!
( x)2 00 ( x)3 000 ( x)4 0000
ui 1 = ui xu0i + ui ui + ui + ...
2! 3! 4!
Si sumamos ambas expresiones conseguimos eliminar la derivada primera, manteniendo la derivada segunda
que es precisamente lo que estamos buscando,
2
ui+1 + ui 1 = 2ui + ( x)2 u00i + ( x)4 u0000
i + ...
4!
con lo que obtenemos la siguiente expresión,
ui+1 2ui + ui 1 1
u00i = ( x)2 u0000
i + ... (2)
( x)2 12
Por lo tanto, podemos aproximar la derivada segunda de u en el nodo i de la siguiente manera,
ui+1 2ui + ui 1
D 2 ui = . (3)
( x)2

Notar que u00i es la derivada segunda analı́tica de u en xi mientras que D2 ui es la derivada segunda numérica
de u en xi . Ambas expresiones son distintas, siendo la diferencia el error que se comete en D2 ui al tratar de
a En verdad esto es algo más complicado pero ya llegaremos a ello.

2 of 4
aproximar u00i . En este caso el término dominante del error escala con x2 , lo cual es obvio si comparamos
(2) con (3) Es decir, la aproximación es de segundo orden. Como consecuencia de lo anterior, es fácil ver
que (3) es una aproximación consistente de u00i , dado que D2 ui tiende a u00i cuando x tiende a cero.
Como ejercicio podéis demostrar que la siguiente expresión representa una aproximación de la derivada
segunda de cuarto orden,
ui+2 + 16ui+1 30ui + 16ui 1 ui 2
D 2 ui = .
12 x2
Lo único que tenéis que hacer es desarrollar en Taylor ui+2 , ui+1 , ui 1 y ui 2 entorno a xi , operar y ver
cuál es el término dominante del error (el que tiene una potencia en x menor).
Nota: En los libros, transparencias de la asignatura,... se suele escribir u00i en vez de D2 ui a la hora de
representar la derivada numérica. En estas notas estoy haciendo la distinción por razones pedagógicas pero
en los próximos documentos en vez de escribir la expresión anterior pondré directamente que la derivada
segunda numérica es
ui+2 + 16ui+1 30ui + 16ui 1 ui 2
u00i = .
12 x2
Que dicha derivada es la numérica se deduce de forma clara del contexto.
Para finalizar, las expresiones anteriores se denominan diferencias finitas centradas puesto que para
calcular el valor en el nodo i utilizamos información a ambos lados del nodo de estudio (nodo i). Por ejemplo
en la expresión anterior utilizamos valores en los nodos xi 2 , xi 1 , xi , xi+1 y xi+2 . Sin embargo existen
esquemas en los que se utiliza más información de un lado que de otro. Una posibilidad a la hora de definir
una derivada serı́a utilizar información en nodos aguas abajo (con ı́ndices mayores o iguales a i). De eso
trata el siguiente punto.

Obtención de la derivada segunda adelantada: En este caso queremos calcular la derivada segunda
utilizando valores de la solución en nodos adelantados (definidos aguas abajo) con respecto al nodo de estudio,
i. Partiendo de los siguientes desarrollos de Taylor,

(2 x)2 00 (2 x)3 000


ui+2 = ui + 2 xu0i + ui + ui + ...
2! 3!
2 3
( x) 00 ( x) 000
ui+1 = ui + xu0i + ui + ui + ...
2! 3!
queremos combinar estas expresiones para recuperar la derivada segunda y que ésta no dependa de la derivada
primera. Para conseguir esto tenemos que restar a la primera expresión 2 veces la segunda, con lo que se
obtiene,
ui+2 2ui+1 = ui + ( x)2 u00i + ( x)3 u000i + ...

Despejando la derivada segunda en la expresión anterior se obtiene que,


ui+2 2ui+1 + ui
u00i = xu000
i + ... (4)
( x)2

Es decir, definimos la siguiente aproximación de la derivada segunda con valores adelantados,


ui+2 2ui+1 + ui
D 2 ui = . (5)
( x)2

Es obvio, comparando (4) y (5) que la aproximación (5) es de primer orden. Podéis comprobar que la
siguiente expresión,
2ui 5ui+1 + 4ui+2 ui+3
D 2 ui = ,
x2
representa una derivada segunda adelantada de segundo orden.
Actuando de forma similar se pueden encontrar expresiones para las derivadas primeras, segundas,... A
continuación os muestro algunas de las expresiones más usadas en la literatura para la derivada primera y
segunda. Algunas de las expresiones para la derivada segunda ya han sido vistas en este documento.

3 of 4
Derivada Primera: A continuación mostramos las expresiones de menor orden para las derivadas primeras
utilizando esquemas de discretización centrados, adelantados y atrasados.
Atrasadas ✓ ◆ ✓ ◆
@u ui ui 1 x @2u
⇡ +
@x i x 2 @x2 i
Dui Ti

Adelantadas ✓ ◆ ✓ ◆
@u ui+1 ui x @2u

@x i x 2 @x2 i
Dui Ti

Centradas ✓ ◆ ✓ ◆
@u ui+1 ui 1 ( x)2 @3u

@x i 2 x 6 @x3 i
Dui Ti

El término Dui representa la derivada numérica mientras que Ti es el término dominante del error numérico.
Como podemos ver la primera y segunda expresiones son de primer orden y la tercera es de segundo. Se
deja como ejercicio demostrar las expresiones anteriores.

Derivada Segunda: En cuanto a la derivada segunda, dos de las siguientes relaciones ya han sido de-
mostradas. La otra se deja como ejercicio. Al igual que antes, D2 ui representa la derivada numérica mientras
que Ti es el término dominante del error.
Atrasadas ✓ 2 ◆ ✓ 3 ◆
@ u ui 2ui 1 + ui 2 @ u
⇡ + x
@x2 i x2 @x3 i
D 2 ui Ti

Adelantadas ✓ ◆ ✓ ◆
@2u ui+2 2ui+1 + ui @3u
⇡ x
@x2 i x2 @x3 i
D 2 ui Ti

Centradas ✓ ◆ ✓ ◆
@2u ui+1 2ui + ui 1 ( x)2 @4u

@x2 i x2 12 @x4 i
D 2 ui Ti

A partir de este momento representaremos las derivadas numéricas sin utilizar el sı́mbolo D. Es decir, en
vez de escribir Dui escribiremos u0i , en vez de escribir D2 ui escribiremos u00i ,... teniendo en cuenta el contexto
deberéis interpretar u0i , u00i como las derivadas numéricas primera, segunda,... o las derivadas analı́ticas.
Nota: A lo largo del curso a las derivadas adelantadas o atrasadas se les suele llamar derivadas o esquemas
upwinding (siguiendo la notación anglosajona).
Nota: En https://es.wikipedia.org/wiki/Coeficiente_de_diferencias_finitas tenéis muchas
más expresiones de derivadas primera, segunda, tercera,... centradas o upwinding de distintos órdenes.

4 of 4

También podría gustarte