Você está na página 1de 11

Notas de Aula

Diferenças Finitas
1
Rodney Josué Biezuner
Departamento de Matemática
Instituto de Ciências Exatas (ICEx)
Universidade Federal de Minas Gerais (UFMG)

Notas de aula para o seminário Equações Diferenciais Parciais Numéricas: Diferenças Finitas.

17 de agosto de 2010

1
E-mail: rodney@mat.ufmg.br; homepage: http://www.mat.ufmg.br/∼rodney.
Sumário

0 Introdução: Diferenças Finitas 2

1 Equação do Calor 4
1.1 Esquemas de Diferenças Finitas Explı́citos para a Equação do Calor . . . . . . . . . . . . . . 5
1.1.1 Esquema FTCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.2 Esquema CTCS ou esquema do pulo do sapo (leapfrog) . . . . . . . . . . . . . . . . . 5
1.1.3 Esquema de Du Fort-Frankel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.4 Convergência, Consistência e Estabilidade . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Programas Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1
Capı́tulo 0

Introdução: Diferenças Finitas

Seja ∆x > 0. Considere as seguintes expansões de Taylor de uma função u em torno de um ponto ponto x0 ,
respectivamente à direita e à esquerda de x0 :

du 1 d2 u 2 1 d3 u
u(x0 + ∆x) = u(x0 ) + (x0 )∆x + (x0 )∆x + (x0 )∆x3 + . . .
dx 2! dx2 3! dx3
e
du 1 d2 u 2 1 d3 u
u(x0 − ∆x) = u(x0 ) − (x0 )∆x + (x0 )∆x − (x0 )∆x3 + . . .
dx 2! dx2 3! dx3
n
onde escolhemos denotar ∆xn = (∆x) . Isolando a derivada primeira nestas expressões, respectivamente,
temos:
du u(x0 + ∆x) − u(x0 ) 1 d2 u 1 d3 u
(x0 ) = − 2
(x0 )∆x − (x0 )∆x2 − . . . (1)
dx ∆x 2! dx 3! dx3
e
du u(x0 ) − u(x0 − ∆x) 1 d2 u 1 d3 u
(x0 ) = + (x 0 )∆x − (x0 )∆x2 + . . . (2)
dx ∆x 2! dx2 3! dx3
Imediatamente obtemos duas aproximações possı́veis para a primeira derivada de u em x0 :

du u(x0 + ∆x) − u(x0 )


(x0 ) ≈ (3)
dx ∆x
e
du u(x0 ) − u(x0 − ∆x)
(x0 ) ≈ . (4)
dx ∆x
A primeira é chamada diferença finita progressiva e a segunda é chamada diferença finita regressiva.
Pela Fórmula de Taylor com Resto, o erro desta aproximação é dado por

1 d2 u
²=± (ξ)∆x = O(∆x),
2 dx2
onde x0 6 ξ 6 x0 + ∆x no primeiro caso, e x0 − ∆x 6 ξ 6 x0 no segundo caso.
Por outro lado, se somarmos (1.15) e (1.17), obtemos

du u(x0 + ∆x) − u(x0 − ∆x) 1 d3 u 1 d5 u


(x0 ) = − 3
(x0 )∆x2 − (x0 )∆x4 − . . .
dx 2∆x 3! dx 5! dx5
o que dá uma outra aproximação possı́vel para a primeira derivada de u em x0 :

du u(x0 + ∆x) − u(x0 − ∆x)


(x0 ) ≈ (5)
dx 2∆x
2
Rodney Josué Biezuner 3

com erro
1 d3 u
²=− (ξ)∆x2 = O(∆x2 ),
6 dx3
para algum x0 − ∆x 6 ξ 6 x0 + ∆x. Esta aproximação por diferença finita é chamada diferença finita
centrada. Ela é uma melhor aproximação que as aproximações laterais (progressiva e regressiva).
Se, ao invés, subtrairmos (1.17) de (1.15), obtemos

d2 u u(x0 + ∆x) + u(x0 − ∆x) − 2u(x0 ) 2 d4 u 2 2 d6 u


(x0 ) = − (x0 )∆x − (x0 )∆x4 − . . .
dx2 ∆x2 4! dx4 5! dx6
o que dá uma aproximação para a derivada segunda de u em x0 :

d2 u u(x0 + ∆x) + u(x0 − ∆x) − 2u(x0 )


2
(x0 ) ≈ (6)
dx ∆x2
com erro
1 d4 u
²=− (ξ)∆x2 = O(∆x2 ),
12 dx4
onde x0 − ∆x 6 ξ 6 x0 + ∆x. Esta aproximação é também chamada uma diferença finita centrada para
a derivada segunda.
Capı́tulo 1

Equação do Calor

Considere o problema de Dirichlet para a equação do calor unidimensional



 ut = Kuxx (x, t) ∈ (0, L) × (0, T ) ,
u(0, t) = T1 , u(L, t) = T2 t ∈ [0, T ], (1.1)

u(x, 0) = f (x) x ∈ [0, L],

onde K é uma constante positiva. Utilizando uma malha uniforme, dividimos o intervalo [0, L] em n
subintervalos de mesmo comprimento ∆x = L/n escolhendo os pontos x0 = 0, x1 = ∆x, x2 = 2∆x, ...,
xn−1 = (n − 1)∆x, xn = L; similarmente, dividimos o intervalo [0, T ] em m subintervalos de mesmo com-
primento ∆t = T /m escolhendo os pontos t0 = 0, t1 = ∆t, t2 = 2∆t, ..., tm−1 = (m − 1)∆t, tm = T .
Denotamos a solução discretizada por

uji = u (i∆x, j∆t) = u (xi , tj ) ,

para i = 1, . . . , n − 1, j = 1, . . . , m − 1; a condição inicial discretizada por

u0i = f (xi ) = fi , (1.2)

para i = 0, . . . , n; e a condição de fronteira discretizada por

uj0 = u (0, tj ) = T1 ,
(1.3)
ujn = u (L, tj ) = T2 ,

para j = 0, . . . , m.
Na verdade, se quisermos, podemos considerar o problema de Dirichlet mais geral:

 ut = c2 uxx (x, t) ∈ [0, L] × [0, T ],
u(0, t) = g(t), u(L, t) = h(t) t ∈ [0, T ], (1.4)

u(x, 0) = f (x) x ∈ [0, L],

de modo que a condição de fronteira é discretizada por

uj0 = u (0, tj ) = g (tj ) = gj ,


(1.5)
ujn = u (L, tj ) = h (tj ) = hj ,

para j = 0, . . . , m.

4
Rodney Josué Biezuner 5

1.1 Esquemas de Diferenças Finitas Explı́citos para a Equação do


Calor
1.1.1 Esquema FTCS
No esquema FTCS (forward-time, central-space) aproximamos a derivada parcial de primeira ordem no
tempo ut por uma diferença finita progressiva e a derivada parcial de segunda ordem no espaço uxx por uma
diferença finita centrada:
∂u u (xi , tj + ∆t) − u (xi , tj ) uj+1 − uji
(xi , tj ) ≈ = i ,
∂t ∆t ∆t
∂2u u (xi − ∆x, tj ) − 2u (xi , tj ) + u (xi + ∆x, tj ) uji−1 − 2uji + uji+1
(xi , t j ) = = ,
∂x2 ∆x2 ∆x2
obtendo o esquema de diferenças finitas explı́cito
j j j
uj+1 − uji u − 2ui + ui+1
i
= K i−1 (1.6)
∆t ∆x2
ou
∆t ³ j ´
uj+1
i = uji + K ui+1 − 2uj
i + uj
i−1 , (1.7)
∆x2
para i = 1, . . . , n − 1, j = 1, . . . , m − 1. Este é um esquema de primeira ordem em t e de segunda ordem em
x.
Denotando
∆t
σ=K , (1.8)
∆x2
ele pode ser escrito na forma mais compacta
³ ´
uj+1
i = (1 − 2σ)uj
i + σ u j
i+1 + u j
i−1 . (1.9)

1.1.2 Esquema CTCS ou esquema do pulo do sapo (leapfrog )


No esquema CTCS (central-time, central-space), também popularmente conhecido como esquema do pulo
do sapo (leapfrog scheme), aproximamos ambas as derivadas parciais, de primeira ordem no tempo ut e de
segunda ordem no espaço uxx por diferenças finitas centradas:
∂u u (xi , tj + ∆t) − u (xi , tj − ∆t) uj+1 − uj−1
(xi , tj ) ≈ = i i
,
∂t 2∆t 2∆t
∂2u u (xi − ∆x, tj ) − 2u (xi , tj ) + u (xi + ∆x, tj ) uji−1 − 2uji + uji+1
(xi , t j ) = = ,
∂x2 ∆x2 ∆x2
obtendo o esquema de diferenças finitas explı́cito
j j j
uj+1 − uj−1 u − 2ui + ui+1
i i
= K i−1 (1.10)
2∆t ∆x2
ou
∆t ³ j ´
uj+1
i = uj−1
i + 2K ui+1 − 2uj
i + u j
i−1 , (1.11)
∆x2
para i = 1, . . . , n − 1, j = 1, . . . , m − 1. Este é um esquema de segunda ordem em ambos t e x.
Definindo σ como antes, ele pode ser escrito mais compactamente como
³ ´
uj+1
i = uj−1
i + 2σ uj
i+1 − 2uj
i + uj
i−1 . (1.12)

Observe que o esquema CTCS é um esquema de três nı́veis no tempo. Para iniciá-lo, pode-se usar no
primeiro passo o esquema FTCS.
Rodney Josué Biezuner 6

1.1.3 Esquema de Du Fort-Frankel


O esquema Du Fort-Frankel pode ser visto com uma modificação do esquema do pulo do sapo:
³ ´
j j+1 j−1
j+1
ui − ui j−1 u i−1 − ui − u i + uji+1
=K (1.13)
2∆t ∆x2
ou ³ ´
(1 + 2σ) uj+1
i = (1 − 2σ) uij−1 + 2σ uji+1 + uji−1 . (1.14)
¡ ¢ ¡ ¢ ¡ ¢
Ele é da ordem de O ∆t2 + O ∆x2 + O ∆t2 /∆x2 .

1.1.4 Convergência, Consistência e Estabilidade


Denotaremos por v = v (x, t) a solução exata do problema de Dirichlet para a equação do calor e por u = uji a
solução aproximada dada por um esquema de diferenças finitas. Observe que a solução exata v está definida
para todos os pontos do domı́nio [0, L] × [0, T ], enquanto que a solução aproximada só existe em pontos da
malha {x0 , x1 , . . . , xn−1 , xn } × {t0 , t1 , . . . , tm }. Portanto, só faz sentido comparar a solução aproximada com
a solução exata nos pontos da malha. Para efetuar esta comparação, denotaremos também

vij = v (xi , tj ) .

Dizer que a solução aproximada é uma boa aproximação para a solução exata é equivalente a dizer que

kv − uk∞ < ε

onde ε é uma tolerância pequena especificada e a norma do sup (ou norma do máximo) é definida por
n¯ ¯ o
¯ ¯
kzk∞ = max ¯zij ¯ : 0 6 i 6 n e 0 6 j 6 m .

1.1 Definição. Dizemos que um esquema de diferenças finitas é (puntualmente) convergente se, para
todos (x, t), uji converge para v (x, t) quando (i∆x, j∆t) → (x, t) à medida que ∆x, ∆t convergem para
0.
1.2 Proposição. O esquema FTCS é convergente se
1
σ6 .
2

Prova: Sejam v a solução exata do problema de Dirichlet para a equação do calor e u a solução aproximada
dada pelo esquema de diferenças finitas FTCS. Da série de Taylor (veja a Introdução), segue que

vij+1 − vij
vt (xi , tj ) = + O (∆t) ,
∆t
v j − 2vij + vi+1
j
¡ ¢
vxx (xi , tj ) = i−1 2
+ O ∆x2 ,
∆x
de modo que
j j j
vij+1 − vij v − 2vi + vi+1 ¡ ¢
vt (xi , tj ) − Kvxx (xi , tj ) = − K i−1 2
+ O (∆t) + O ∆x2 .
∆t ∆x
Mas v é solução da equação do calor, logo vt (xi , tj ) − Kvxx (xi , tj ) = 0.Multiplicando a equação resultante
por ∆t temos
∆t ³ j ´ ¡ ¢ ¡ ¢
0 = vij+1 − vij − K v i−1 − 2v j
i + v j
i+1 + O ∆t2 + O ∆t∆x2 ,
∆x2
Rodney Josué Biezuner 7

donde ³ ´ ¡ ¢ ¡ ¢
vij+1 = (1 − 2σ)vij + σ vi+1
j j
+ vi−1 + O ∆t2 + O ∆t∆x2 . (1.15)
Denote
zij = vij − uji . (1.16)
Como ³ ´
uj+1
i = (1 − 2σ)uj
i + σ uj
i+1 + uj
i−1 , (1.17)
subtraindo (1.17) de (1.15) obtemos
³ ´ ¡ ¢ ¡ ¢
zij+1 = (1 − 2σ)zij + σ zi+1
j j
+ zi−1 + O ∆t2 + O ∆t∆x2 .

Se σ 6 12 , então 1 − 2σ > 0 e podemos escrever


¯ ¯ ¯ ¯ ³¯ ¯ ¯ ¯´ ¡ ¢
¯ j+1 ¯ ¯ j¯ ¯ j ¯ ¯ j ¯
¯zi ¯ 6 (1 − 2σ) ¯zi ¯ + σ ¯zi+1 ¯ + ¯zi−1 ¯ + C ∆t2 + ∆t∆x2
¡ ¢
6 (1 − 2σ) kzk∞ + σ (kzk∞ + kzk∞ ) + C ∆t2 + ∆t∆x2
° ° ¡ ¢
= °z j ° + C ∆t2 + ∆t∆x2 ,

onde C é uma constante positiva. Mas i é arbitrário, logo concluı́mos que


° j+1 ° ° ° ¡ ¢
°z ° 6 °z j ° + C ∆t2 + ∆t∆x2 . (1.18)
∞ ∞

Aplicando esta desigualdade iterativamente, obtemos


° j+1 ° ° ° ¡ ¢
°z ° 6 °z j ° + C ∆t2 + ∆t∆x2
∞ ∞
° ° ¡ ¢
6 °z j−1 °∞ + 2C ∆t2 + ∆t∆x2
° ° ¡ ¢
6 °z j−2 °∞ + 3C ∆t2 + ∆t∆x2
..
.
° ° ¡ ¢
6 °z 0 °∞ + C (j + 1) ∆t2 + ∆t∆x2 .
Como z 0 = 0 (v e u satisfazem a mesma condição inicial nos pontos da malha), temos
° j+1 ° ¡ ¢
°z ° 6 C (j + 1) ∆t ∆t + ∆x2

Mas
(j + 1) ∆t → t
quando ∆t → 0, portanto concluı́mos que ° j+1 °
°z ° → 0

quando ∆t, ∆x → 0. ¥
1.3 Definição. Dizemos que um esquema de diferenças finitas é consistente se a solução exata da EDP
satisfaz o esquema no limite quando ∆x, ∆t convergem para 0.
1.4 Proposição. O esquema FTCS é consistente.
Prova: Já vimos na demonstração da proposição anterior que se v é a solução exata, então
³ ´ ¡ ¢ ¡ ¢
vij+1 = (1 − 2σ)vij + σ vi+1
j j
+ vi−1 + O ∆t2 + O ∆t∆x2 .

Tomando o limite quando ∆x, ∆t → 0 segue que (fixado σ)


³ ´
vij+1 = (1 − 2σ)vij + σ vi+1
j j
+ vi−1 .

¥
Rodney Josué Biezuner 8

1.5 Definição. Dizemos que um esquema de diferenças finitas é estável se pequenas mudanças na condição
inicial implicam em pequenas mudanças na solução.
1.6 Teorema. (Teorema da Equivalência de Lax) Um esquema de diferenças finitas é convergente se e
somente se ele é consistente e estável.
1.7 Proposição. O esquema FTCS é condicionalmente estável. Mais precisamente, o esquema FTCS é
estável se e somente se
1
σ6 . (1.19)
2
Prova: (Análise de Estabilidade de Von Neumann) Usando séries de Fourier, podemos escrever

X kπ
uji = bjk sen i∆x. (1.20)
L
k=1
Note que

X kπ
u0i = fi = b0k sen i∆x. (1.21)
L
k=1
Escrevendo o esquema FTCS na forma
³ ´
uj+1
i = uji + σ uji+1 − 2uji + uji−1 (1.22)
e usando séries de Fourier, segue que
X∞

bj+1
k sen i∆x
L
k=1

Ã∞ ∞ ∞
!
X j kπ X j kπ X j kπ X j kπ
= bk sen i∆x + σ bk sen (i − 1) ∆x − 2 bk sen i∆x + bk sen (i + 1) ∆x ,
L L L L
k=1 k=1 k=1 k=1
donde, para cada k,

bj+1
k sen i∆x
· L µ ¶¸
kπ kπ kπ kπ
= bjk sen i∆x + σ sen (i − 1) ∆x − 2 sen i∆x + sen (i + 1) ∆x
L L L L
e daı́   
kπ kπ kπ
sen (i − 1) ∆x − 2 sen i∆x + sen (i + 1) ∆x
  L L L 
bj+1
k = bjk 1 + σ   .

sen i∆x
L
Mas
kπ kπ kπ
sen (i − 1) ∆x − 2 sen i∆x + sen (i + 1) ∆x
L L L
kπ kπ kπ kπ
= sen i∆x cos ∆x − sen ∆x cos i∆x
L L L L

− 2 sen i∆x
L
kπ kπ kπ
+ c cos ∆x + sen ∆x cos i∆x
µ L L¶ L
kπ kπ
= −2 1 − cos ∆x sen i∆x
L L
kπ kπ
= −2 sen2 ∆x sen i∆x,
2L L
Rodney Josué Biezuner 9

logo obtemos · ¸
2 kπ
bj+1
k = 1 − 4σ sen ∆x bjk . (1.23)
2L
Iterando esta equação, concluı́mos que
· ¸j

bjk = 1 − 4σ sen2 ∆x b0k . (1.24)
2L

A condição de estabilidade implica portanto que o esquema é estável se e somente se


¯ ¯
¯ ¯
¯1 − 4σ sen2 kπ ∆x¯ 6 1,
¯ 2L ¯

(caso contrário a solução explode quando j → ∞) isto é, se e somente se


1 − 4σ sen2 ∆x > −1,
2L
o que é equivalente a
kπ 1
σ sen2 ∆x 6
2L 2
que por sua vez é equivalente a (já que |sen| 6 1)
1
σ6 .
2
¥

1.8 Corolário. O esquema FTCS é convergente se e somente se


1
σ6 . (1.25)
2

Consequentemente, ao usarmos o esquema FTCS, não podemos escolher ∆x e ∆t independentemente. Pior


que isso: como a priori precisamos escolher ∆x relativamente pequeno para obter uma boa aproximação e a
condição necessária para o esquema convergir é
1
∆t 6 ∆x2 ,
2K
segue que ∆t será muito pequeno. Precisaremos de percorrer muitos passos temporais (muitas iterações do
método) para calcular a solução aproximada em qualquer instante de tempo finito.

1.9 Proposição. O esquema BTCS é instável.

1.10 Proposição. O esquema Du Fort-Frankel é incondicionalmente estável, mas é consistente somente se


∆t/∆x → 0 quando ∆x, ∆t → 0.
1.11 Teorema. Um esquema explı́cito de diferenças finitas para a equação do calor é convergente somente
se ∆t/∆x → 0 quando ∆x, ∆t → 0.
Rodney Josué Biezuner 10

1.2 Programas Matlab


Programa 1.1. Fórmula dos 3 pontos para a Equação de Poisson com condição de Dirichlet
homogênea.

%Resolve a Equaç~ao de Poisson com condiç~ ao de Dirichlet homog^enea através da fórmula dos 3
pontos.
function [] = Poisson(N)
%Inicializaç~ao de variáveis.
u = zeros(N+2,1); %Soluç~ ao aproximada.
e = zeros(N+2,1); %Soluç~ ao exata.
f = zeros(N,1); %-Laplacian u = f.
A = sparse(N,N); %Matriz de discretizaç~ ao do laplaciano.
h = 1/(N+1); %Espaçamento da malha.
%Atribuiç~ao de variáveis
%Definiç~
ao de A.
A(1:N+1:end) = 2;
A(2:N+1:end) = -1;
A(N+1:N+1:end) = -1;
%Definiç~
ao de f.
for i = 1:N
f(i,1) = h*h*(pi*pi)*sin(i*pi*h);
end
%Cálculo da soluç~
ao aproximada nos pontos interiores da malha.
v = A\f;
%Atribuiç~ao da soluç~
ao aproximada.
u(1,1) = 0;
u(N+2,1) = 0;
for i = 1:N
u(i+1,1) = v(i,1);
end
%Atribuiç~ao da soluç~
ao exata.
for i = 1:N+2
e(i,1) = sin((i-1)*pi*h);
end
%Plotando as soluç~ oes aproximada e exata (para comparaç~ ao).
x = 0:h:1;
plot(x,u,x,e);

Você também pode gostar