Este documento apresenta o resumo de uma aula sobre formulações via diferenças finitas para resolver equações diferenciais parciais que descrevem a dinâmica de fluidos computacionalmente. A aula introduz como as derivadas nas equações podem ser aproximadas por diferenças finitas através da expansão em séries de Taylor, permitindo que os computadores resolvam numericamente os problemas.
Dicionário de Genealogia, autor Gilber Rubim Rangel
Resolução de EDPs via diferenças finitas
1. Universidade Federal do ABC
Aula 2
Formulações via diferenças finitas
EN3224 Dinâmica de Fluidos
Computacional
EN3224 Dinâmica de Fluidos Computacional
2. Pergunta do dia:
Como escrever um programa de
computador que resolva
v 0
t
v
v v p g
t
E
E v kT q pv v v : g v
t
?
EN3224 Dinâmica de Fluidos Computacional
3. Introdução
• Os computadores somente podem executar
operações aritméticas padrão e operações lógicas.
• As diferenciais de variáveis dependentes que
aparecem em EDPs precisam ser traduzidas para
expressões de diferenças finitas que as aproximam.
dy
y( x x) y( x)
lim
dx x0
x
EN3224 Dinâmica de Fluidos Computacional
4. Métodos de aproximação de diferenciais
1. Expansão em séries de Taylor
2. Expansão em polinômios de grau n
3. Equações de diferenças finitas
EN3224 Dinâmica de Fluidos Computacional
6. Expansão em séries de Taylor
Dada um função analítica f(x), a expansão em
série de Taylor de f(x+x) é dada por
f (x) f (x) f
f ( x x) f ( x) (x)
2
3
x
2! x
3! x
2
2
(x) n n f
f ( x x) f ( x)
n
n! x
n 1
EN3224 Dinâmica de Fluidos Computacional
3
3
7. A primeira diferencial
f (x) 2 2 f (x)3 3 f
f ( x x) f ( x) (x)
2
3
x
2! x
3! x
Isolando a primeira diferencial, obtemos
f
f ( x x) f ( x) x 2 f (x) 2 3 f
2
3
x
x
2! x
3! x
f
f ( x x) f ( x)
O(x)
x
x
EN3224 Dinâmica de Fluidos Computacional
Soma de todos
os termos com
potências
positivas de x
8. A primeira diferencial
para frente...
f
f(x)
f(x+x)
f
f ( x x) f ( x)
O(x)
x
x
x
EN3224 Dinâmica de Fluidos Computacional
x+x
x
9. A primeira diferencial
para trás...
f
f(x-x)
f(x)
f
f ( x) f ( x x)
O(x)
x
x
x-x
EN3224 Dinâmica de Fluidos Computacional
x
x
10. Intervalos discretos iguais
Introdução da indexação:
O índice i (discreto) indica
intervalos de valor x.
f
fi
fi+1
f i 1 f i
f
O(x)
x i
x
f i f i 1
f
O(x)
x i
x
xi
xi+1
x
EN3224 Dinâmica de Fluidos Computacional
x
11. O que isso quer dizer...
f i 1 f i
f
O(x)
x i
x
for ( i=imin; i<imax; i++ ) {
dfdx[i] = ( fx[i+1] – fx[i] ) / (x[i+1] – x[i]);
}
O erro O(x) faz parte do “risco” assumido por quem
está fazendo a modelagem.
EN3224 Dinâmica de Fluidos Computacional
12. A “diferença das diferenças”
f (x) f (x) f
f ( x x) f ( x) x
2
3
x
2! x
3! x
2
2
3
3
f (x) f (x) f
f ( x x) f ( x) x
2
3
x
2! x
3! x
2
2
3
3
(negativa apenas nas potências ímpares de x)
f
(x) f
f ( x x) f ( x x) 2x 2
3
x
3! x
3
EN3224 Dinâmica de Fluidos Computacional
3
13. Aproximação da diferença central
Isolando a primeira diferencial:
f
f ( x x) f ( x x)
2
O(x)
x
2x
ou
f i 1 f i 1
f
O(x) 2
x i
2x
EN3224 Dinâmica de Fluidos Computacional
Aproximação de
diferença central da
primeira derivada
14. A segunda derivada
Partindo da expansão em série de Taylor
f (x) f (x) f
f ( x x) f ( x) x
2
3
x
2! x
3! x
2
2
3
3
Calculamos a expansão para f(x+2x):
f (2x) 2 2 f (2x)3 3 f
f ( x 2x) f ( x) (2x)
2
3
x
2! x
3! x
EN3224 Dinâmica de Fluidos Computacional
15. A segunda derivada
Queremos calcular -2f(x+x) + f(x+2x):
f
(x) 2 2 f
(x)3 3 f
2 f ( x x) 2 f ( x) (2x) 2
2
2
3
x
2! x
3! x
f (2x) 2 2 f (2x)3 3 f
f ( x 2x) f ( x) (2x)
2
3
x
2! x
3! x
Resultado:
2 f
3 f
2 f ( x x) f ( x 2x) f ( x) (x) 2 2 (x)3 3
x
x
EN3224 Dinâmica de Fluidos Computacional
16. A segunda derivada
f
f ( x 2x) 2 f ( x x) f ( x)
O(x)
2
2
x
(x)
2
ou
f i 2 2 f i 1 f i
2 f
O(x)
2
2
x i
(x)
para frente
f i 2 f i 1 f i 2
2 f
O(x)
2
2
x i
(x)
para trás
EN3224 Dinâmica de Fluidos Computacional
17. Aproximação via diferença central
da segunda derivada
Somando
f (x) f (x) f
f ( x x) f ( x) x
2
3
x
2! x
3! x
2
e
2
3
3
f (x) f (x) f
f ( x x) f ( x) x
2
3
x
2! x
3! x
2
2
3
3
Resultado:
2 f
f ( x x) 2 f ( x) f ( x x)
O(x) 2
x 2
(x) 2
EN3224 Dinâmica de Fluidos Computacional
18. Aproximação via diferença central
da segunda derivada
2 f
f ( x x) 2 f ( x) f ( x x)
2
O(x)
2
2
x
(x)
f i 1 2 f i f i 1
f
O(x) 2
x 2 i
(x) 2
2
EN3224 Dinâmica de Fluidos Computacional
Aproximação de
diferença central da
segunda derivada
19. Derivadas de ordem superior
Introduzindo a notação:
x f i f i 1 f i
x f i f i f i 1
(diferença para frente)
(diferença para trás)
As diferenças de várias ordens podem ser
expressas por expressões recursivas:
nx f i nx1 x f i
n f i n 1 x f i
x
x
EN3224 Dinâmica de Fluidos Computacional
20. Derivadas de ordem superior
Fórmulas de recorrências derivadas das séries de Taylor:
nx f i
n f
Ox
n
n
x i x
(para frente)
n fi
n f
x n Ox
x n i x
(para trás)
f
n
x i
n
f
n
x i
n
nx f i n n f i n
x
2
2x
2
n
nx f
i ( n 1)
n f
x
2
2x
n
(diferença central,
n par)
Ox
i ( n 1)
2
2
Ox
EN3224 Dinâmica de Fluidos Computacional
2
(diferença central,
n ímpar)
21. Mais precisão?
Até aqui, foram considerados apenas os termos até a primeira
ordem da série de Taylor.
Pode-se aumentar a precisão (diminuir o erro) considerando-se
mais termos da expansão em série de Taylor.
Como resultado, obtém-se expressões mais trabalhosas, mas
mais precisas. Exemplo:
f f ( x 2x) 4 f ( x x) 3 f ( x)
O(x) 2
x
2x
Aproximação de segunda ordem para
frente da primeira derivada
EN3224 Dinâmica de Fluidos Computacional
23. Expansão em polinômios
Dada um função analítica f(x), pode-se
considerar que em um dado intervalo a
função possa ser aproximada por um
polinômio de grau n.
Por exemplo
f ( x) Ax Bx C
2
EN3224 Dinâmica de Fluidos Computacional
24. Exemplo
f ( x) Ax Bx C
2
xi 0
xi 1 x
xi 2 2x
f ( xi ) C
f ( xi 1 ) Ax Bx C
2
f ( xi 2 ) A2x B2x C
2
Aproximação via polinômio de segunda ordem.
EN3224 Dinâmica de Fluidos Computacional
25. A primeira derivada
C fi
fi C
f i 2 4 f i 1 3 f i
B
2x
f i 2 2 f i 1 f i
A
2
2x
f i 1 Ax Bx C
2
f i 2 A2x B2x C
2
Aproximação via polinômio de segunda ordem:
f
2 Ax B
x
xi=0
f f i 2 4 f i 1 3 f i
x
2x
EN3224 Dinâmica de Fluidos Computacional
26. A segunda derivada
C fi
fi C
f i 2 4 f i 1 3 f i
B
2x
f i 2 2 f i 1 f i
A
2
2x
f i 1 Ax Bx C
2
f i 2 A2x B2x C
2
Aproximação via polinômio de segunda ordem:
f
2A
2
x
2
f i 2 2 f i 1 f i
2 f
2
x
(x) 2
EN3224 Dinâmica de Fluidos Computacional
27. Espaçamento não uniforme
f ( x) Ax Bx C
2
xi 0
xi 1 x
xi 2 (1 )x
f ( xi ) C
f ( xi 1 ) Ax Bx C
2
f ( xi 2 ) A1 x B1 x C
2
EN3224 Dinâmica de Fluidos Computacional
2
28. A primeira derivada
fi C
f i 1 Ax Bx C
2
f i 2 A1 x B1 x C
2
2
C fi
Aproximação via
polinômio de
segunda
ordem:
f
2 Ax B
x
f i 2 1 f i 1 2 2 f i
B
1 x
f i 2 1 f i 1 f i
A
1 x 2
2
f i 2 (1 ) 2 f i 1 ( 2) f i
f
x i
(1 )x
EN3224 Dinâmica de Fluidos Computacional
29. A segunda derivada
fi C
f i 1 Ax Bx C
2
f i 2 A1 x B1 x C
2
2
C fi
Aproximação via
polinômio de
segunda
ordem:
f
2A
2
x
2
f i 2 1 f i 1 2 2 f i
B
1 x
f i 2 1 f i 1 f i
A
1 x 2
2
f i 2 (1 ) f i 1 f i
2 f
2
2
x
(1 )(x) 2
EN3224 Dinâmica de Fluidos Computacional
31. Equações de diferenças finitas
Usaremos as expressões apresentadas para
reescrever as EDPs da Mecânica dos Fluidos.
Nosso interesse é obter expressões que possam
ser incluídas em algoritmos e programas
escritos em linguagens de programação.
EN3224 Dinâmica de Fluidos Computacional
32. Um estudo de caso
Consideremos a EDP:
Dependência
no tempo
f f
f
2 2
x
t
y
2
é uma
constante
EN3224 Dinâmica de Fluidos Computacional
2
Duas
dependências
no espaço
34. Primeira derivada no tempo
f f
f
2 2
x
t
y
2
f
f
t
2
n 1
i, j
f
t
n
i, j
O(t )
Diferença para
frente de primeira
ordem
EN3224 Dinâmica de Fluidos Computacional
35. Segundas derivadas no espaço
f f
f
2 2
x
t
y
2
2
f
f
2
y
2
f
2
x
2
n
n
f i 1, j 2 f i ,nj f i 1, j
(x) 2
n
i , j 1
2f f
n
i, j
2
(y)
O(x)
EN3224 Dinâmica de Fluidos Computacional
2
n
i , j 1
O(y ) 2
Diferenças centrais
de segunda ordem
36. A expressão final
f f
f
2 2
x
t
y
2
2
EDP
Equação a
diferenças
finitas
f i ,nj1 f i ,nj
t
n
n
f i 1, j 2 f i ,nj f i 1, j f i ,nj 1 2 f i ,nj f i ,nj 1
2
2
(x)
(y )
O t , (x) 2 , (y ) 2
EN3224 Dinâmica de Fluidos Computacional
37. Para frente e para trás no tempo
Formulação explícita (avança no tempo):
f i ,nj1 f i ,nj
t
n
f i 1, j 2 f i ,nj in1, j f i ,nj 1 2 f i ,nj f i ,nj 1
2
2
(x)
(y )
O t , (x) 2 , (y ) 2
Formulação implícita (volta no tempo):
f i ,nj1 f i ,nj
t
n
f i 1,1j 2 f i ,nj1 in11, j f i ,nj11 2 f i ,nj1 f i ,nj11
2
2
(x)
(y )
O t , (x) 2 , (y ) 2
EN3224 Dinâmica de Fluidos Computacional
38. Explícita x implícita
Explícita
• Tem apenas uma incógnita
f
n 1
i, j
Implícita
• Tem cinco incógnitas
f
n 1
i 1, j
, f
f
n 1
i , j 1
n 1
i 1, j
,f
,f
n 1
i, j
,
n 1
i , j 1
• Simples e rápida
• A solução exige que toda a
matriz seja resolvida
simultaneamente
• Instável
• Estável
EN3224 Dinâmica de Fluidos Computacional
39. Exemplo 1
4 f
Ache uma estimativa para frente para
x 4
Solução:
nx f i
n f
Partindo de
Ox
n
n
x i x
Com n=4 obtemos
4 f
1
4x f i Ox
x 4 i x 4
EN3224 Dinâmica de Fluidos Computacional
40. Exemplo 1: resolução
n
n 1
Aplicando x f i x x f i
4x f i 3x x f i 3x f i 1 f i 2x x f i 1 x f i
2x f i 2 f i 1 f i 1 f i 2x f i 2 2 f i 1 f i
x x f i 2 2 x f i 1 x f i x f i 3 f i 2 2 f i 2 f i 1 f i 1 f i
x f i 3 3 f i 2 3 f i 1 f i x f i 3 3 x f i 2 3 x f i 1 x f i
( f i 4 f i 3 ) 3( f i 3 f i 2 ) 3( f i 2 f i 1 ) f i 1 f i
f i 4 4 f i 3 6 f i 2 4 f i 1 f i
4 f
1
fi4 4 fi 3 6 fi 2 4 fi1 fi Ox
4
4
x i x
EN3224 Dinâmica de Fluidos Computacional
41. Exemplo 2
Compare as expressões obtidas
para a representação de diferenças
finitas para frente
f quando calculadas via:
3
x
3
de
a) Séries de Taylor
b) Fórmulas de recorrência
c) Polinômio do terceiro grau
EN3224 Dinâmica de Fluidos Computacional
42. f
3
x
3
Exemplo 2: resolução
a) Expansão em série de Taylor
Precisaremos de três pontos:
1
f (x) 2 2 f (x)3 3 f
f ( x x) f ( x) x
O(x) 4
x
2! x 2
3! x 3
2
f (2x) 2 2 f (2x)3 3 f
f ( x 2x) f ( x) 2x
O(2x) 4
x
2! x 2
3! x 3
3
f (3x) 2 2 f (3x)3 3 f
f ( x 3x) f ( x) 3x
O(3x) 4
x
2! x 2
3! x 3
EN3224 Dinâmica de Fluidos Computacional
43. f
3
x
3
Exemplo 2: resolução
3 f
Podemos agora isolar
x 3
Somando a 1ª e
a 3ª expressão:
Somando a 1ª e
a 2ª expressão:
Somando estas
duas:
3 f i 1 f i 3
2 f
3 f
2 f i 3(x) 2 2 4(x)3 3 O(x) 4
x
x
2 f
3 f
f i 2 2 f i 1 f i (x) 2 2 (x)3 3 O(x) 4
x
x
f i 3 3 f i 2 3 f i 2 f i
3 f
O(x)
3
3
x
(x)
EN3224 Dinâmica de Fluidos Computacional
44. Exemplo 2: resolução
f
3
x
3
b) Usando fórmulas de recorrência:
f
f
Ox
n
x i x
n
n
x i
n
f
f
Ox
3
x
x
3
3
x i
3
3x f i 2x x f i 2x f i 1 f i x x f i 1 x f i
x f i 2 f i 1 f i 1 f i x f i 2 2 f i 1 f i
x f i 2 2 x f i 1 x f i f i 3 f i 2 2 f i 2 f i 1 f i 1 f i
f i 3 3 f i 2 3 f i 1 f i
f i 3 3 f i 2 3 f i 1 f i
3 f
Ox
3
3
x
x
EN3224 Dinâmica de Fluidos Computacional
45. f
3
x
3
Exemplo 2: resolução
c) Usando polinômio de terceiro grau
f ( x) Ax Bx Cx D
3
2
Precisaremos de quatro pontos:
xi 0
xi 1 x
xi 2 2x
xi 3 3x
EN3224 Dinâmica de Fluidos Computacional
46. Exemplo 2: resolução
f
3
x
3
f i 3 A3x B3x C 3x D
3
2
f i 2 A2x B2x C 2x D
3
2
f i 1 Ax Bx C x D
3
fi D
2
D fi
2 f i 3 9 f i 2 18 f i 1 11 f i
C
6x
3 f i 3 12 f i 2 15 f i 1 6 f i
B
2
6x
f i 3 3 f i 2 3 f i 1 f i
A
3
6x
EN3224 Dinâmica de Fluidos Computacional
47. f
3
x
3
Exemplo 2: resolução
As derivadas de f(x) são dadas por
f
3 Ax 2 2 Bx C
x
2 f
6 Ax 2 B
2
x
3 f
6A
3
x
f i 3 3 f i 2 3 f i 1 f i
3 f
Ox
3
3
x
x
Com os três métodos obtivemos o mesmo
resultado.
EN3224 Dinâmica de Fluidos Computacional
48. Exemplo 3
f
Obtenha uma expressão de
para trás
x
com ordem (x)3
Solução:
A série de Taylor de f(x-x) é
f (x) 2 2 f (x)3 3 f
4
f ( x x) f ( x) x
O(x)
2
3
x
2! x
3! x
EN3224 Dinâmica de Fluidos Computacional
49. Exemplo 3: resolução
f
Isolamos x :
x
2
2
3
3
f
(x) f (x) f
x
f ( x) f ( x x)
O(x) 4
x
2! x 2
3! x 3
Usaremos
2 f f i 3 4 f i 2 5 f i 1 2 f i
2
Ox
2
2
x
x
Diferença para trás de
segunda ordem da
segunda derivada
3 f f i 3 3 f i 2 3 f i 1 f i
Ox
3
3
x
x
Diferença para trás de
primeira ordem da
terceira derivada
EN3224 Dinâmica de Fluidos Computacional
50. Exemplo 3: resolução
Substituindo:
f
(x) 2 f i 3 4 f i 2 5 f i 1 2 f i
2
x
f i f i 1
Ox
2
x
2
x
(x)3 f i 3 3 f i 2 3 f i 1 f i
Ox O(x) 4
6
x 3
f
6x
2 f i 3 9 f i 2 18 f i 1 11 O(x) 4
x
f 2 f i 3 9 f i 2 18 f i 1 11
O(x)3
x
6x
EN3224 Dinâmica de Fluidos Computacional
52. Derivadas parciais mistas:
séries de Taylor
Considere a derivada parcial mista
2 f
xy
A expansão em série de Taylor para as duas variáveis x
e y de f(x+x,y+y) é dada pela expressão
f ( x x, y y ) f ( x, y ) x
f
f
y
x
y
x 2 2 f y 2 2 f
2!
x 2
y 2
2!
xy 2 f
3
3
2
O x , y
2! xy
EN3224 Dinâmica de Fluidos Computacional
53. Derivadas parciais mistas:
séries de Taylor
Usando os índices i e j para representar o ponto (x,y)
na grade, a mesma expressão pode ser reescrita
como
f
f
2 f
f i 1, j 1 f i , j x y xy
x
y
xy
x 2 2 f y 2 2 f
2
x
2
2
y
2
EN3224 Dinâmica de Fluidos Computacional
O x , y
3
3
54. Derivadas parciais mistas:
séries de Taylor
Pode-se aplicar o mesmo método e obter as
diferenciais em outras direções:
f
f
2 f x 2 f y 2 f
3
3
f i 1, j 1 f i , j x y xy
O x , y
x
y
xy
2 x 2
2 y 2
f
f
2 f x 2 f y 2 f
3
3
f i 1, j 1 f i , j x y xy
O x , y
x
y
xy
2 x 2
2 y 2
f
f
2 f x 2 f y 2 f
3
3
f i 1, j 1 f i , j x y xy
O x , y
x
y
xy
2 x 2
2 y 2
2
2
2
EN3224 Dinâmica de Fluidos Computacional
2
2
2
55. Derivadas parciais mistas:
séries de Taylor
2 f
Isolando
nestas expressões, obtém-se
xy
f i 1, j 1 f i 1, j 1 f i 1, j 1 f i 1, j 1
2 f
2
2
O x , y
xy
4(x)(y )
Diferenciais mistas de ordem superior podem ser
obtidas usando-se o mesmo método.
EN3224 Dinâmica de Fluidos Computacional
56. Diferenciais mistas com respeito a uma
variável independente
Considere a derivada parcial
2 f
f
xy x x
Usando a diferença central de ordem (y)2 para f
y
chega-se a
f i , j 1 f i , j 1
f
2
Oy
y
2y
Derivando em x:
2 f
f i , j 1 f i , j 1
2
Oy
xy x
2y
EN3224 Dinâmica de Fluidos Computacional
57. Diferenciais mistas com respeito a uma
variável independente
2 f
f i , j 1 f i , j 1
1 f
f
2
2
Oy
Oy
xy x
2y
2y x i , j 1 x i , j 1
2 para f
Aplicando-se diferença central de ordem (x)
x
chega-se a
2 f
1 f i 1, j 1 f i 1, j 1 f i 1, j 1 f i 1, j 1
2
2
O x , y
xy 2y
2x
2x
E finalmente:
f i 1, j 1 f i 1, j 1 f i 1, j 1 f i 1, j 1
2 f
2
2
O x , y
xy
4x y
EN3224 Dinâmica de Fluidos Computacional
58. Diferenciais mistas com respeito a uma
variável independente
Usando diferenças para frente, chega-se a
2 f
f f i , j 1 f i , j
Oy
y x
xy x
y
1 f
f
Oy
y x i , j 1 x i , j
1 f i 1, j 1 f i , j 1 f i 1, j f i , j
Ox, y
y
x
x
f i 1, j 1 f i , j 1 f i 1, j f i , j
2 f
xy
xy
EN3224 Dinâmica de Fluidos Computacional
59. Exercícios
• Problemas 2.8 do Hoffmann “Computational
Fluid Dynamics Vol.I”
EN3224 Dinâmica de Fluidos Computacional