Topico1-Diferencas_Finitas.pdf

43 

Full text

(1)

DCC008 - Cálculo Numérico

Métodos de Diferenças Finitas para Problemas de Valor Inicial e de Contorno

Iury Igreja

Departamento de Ciência da Computação Universidade Federal de Juiz de Fora

(2)

Equação diferencial Ordinária (EDO)

◮ Problema de Valor de Inicial (PVI): Acharu(t)∈R,t∈[0, T], tal que

du

dt =F(u, t),

mais condição inicial em u(0). Este problema é também conhecido comoproblema de evolução.

◮ Problema de Valor de Contorno (PVC):

Acharu(x)∈R,x∈[a, b], satisfazendo a EDO

d2u

dx2 =F(u, x),

(3)

Problema de Valor Inicial

PVI

(4)

Decaimento radioativo

Estima o tempo necessário para desintegração de elementos radioativos.

dQ

dt =−krQ(t),

(5)

Crescimento Populacional

Estima a variação de uma população de certo local ou ambiente após determinado tempo.

Modelo de Malthus

dP

dt =kpP(t), ◮ Modelo logístico (Verhulst-Pearl)

dP dt =kpP

1−

P L

,

P(t)é a população,kpuma constante (kp>0crescimento oukp<0 decaimento populacional) eLo limite máximo para a população.

(6)

Lei do resfriamento de Newton

Mede a troca de calor entre um corpo e o meio ambiente.

dt =−kt(θ−θm),

(7)

Outros exemplos de problemas de evolução

◮ Sistemas de equações lineares de primeira ordem

du

dt +Au=g(t); u(0) =α.

onde u,g e α são vetores e Auma matriz.

◮ Equações lineares de segunda ordem

d2u

dt2 +ω 2

u=f(t); du

dt(0) =β.

◮ Equação não linear de primeira ordem

du

dt =u

2

; u(0) =α.

(8)

Problema de Valor Inicial (PVI)

Acharu(t)∈R,t∈[0, T], tal que

du

dt =F(u, t) u(0) =α

(9)

Método de Diferenças Finitas

Define-se o intervalo de tempo finito∆t=T /N, e uma malha de pontostn=n∆t;n= 0,1,2, ..., N. A solução aproximada é dada por um conjunto de valores discretosun.

{

0 T

Δt

Método de Euler

un+1un

∆t =F(u

n, t n)

u0 =α

, n= 0,1,2, ..., N (2)

Para a Convergência dos métodos de diferenças finitas, ou seja, quandon→ ∞então unu(t

n).

(10)

Consistência/Erro de truncamento

A consistência representa o mínimo de fidelidade do problema contínuo (1) com a aproximação por diferenças finitas (2). Todavia a própria definição de derivada,

lim

∆t→0

u(tn+ ∆t)−u(tn)

∆t =

du

dt(tn) =F(u(tn), tn),

expressa a consistência do método de Euler. Ou ainda por série de Taylor

u(tn+∆t) =u(tn)+∆t

du dt(tn)+

∆t2

2!

d2u

(11)

Consistência/Erro de truncamento

donde conclui-se que

u(tn+ ∆t)−u(tn)

∆t =

du dt(tn) +

∆t

2!

d2u

dt2(ξn)

O que implica que a derivada du

dt(tn) pode ser aproximado por u(tn+ ∆t)−u(tn)

∆t com erro da ordem de∆t. Portanto a solução

exatau(t)satisfaz a seguinte equação de diferenças

u(tn+ ∆t)−u(tn)

∆t =F(u(tn), tn) +τn

com

τn= 1 2!

d2u

dt2(ξn)∆t

que é chamadoerro de truncamento.

(12)

Exemplo

TomandoF(u, t) =−au, ondea >0é uma constante, define-se a seguinte equação diferencial ordinária

du

dt +au= 0, u(0) =b. (3)

A solução exata pra este problema é dada por

u(t) =be−at

A aproximação pelo método de Euler correspondente ao exemplo (3), é dada por

un+1un

∆t +au

n= 0 com u0

(13)

Método de Euler explícito

O método de Euler, como definido anteriormente, pode ser reescrito como

un+1=un(1−a∆t)

para que a solução não tenda ao infinito o fator de amplificação (1−a∆t) deve respeitar

|1−a∆t|<1.

Além disso, para que não gere oscilações no método 1−a∆t >0.

Estas restrições tornam o método acimacondicionalmente estável, sendo necessário cumprir

∆t < 1 a,

a condição acima assegura a estabilidade do método.

(14)

Método de Euler implícito

Por outro lado, o método de Euler, pode ser escrito como

un+1un

∆t +au

n+1

= 0 com u0=b.

logo,

(1 +a∆t)un+1=un

ou ainda

un+1 =

1 1 +a∆t

un

(15)

Resultados numéricos método de Euler

Em um domínio[0,1]tomandoa= 10.0e condição inicialb= 1.0, de acordo com a análise necessitamos respeitar∆t < 1

a = 0.1o

que implica emN >10 para garantir a estabilidade do método de Euler explícito

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

y 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Euler Explícito Euler Implícito Solução exata

(a) N= 10e∆t= 0.1000

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

y 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Euler Explícito Euler Implícito Solução exata

(b)N = 11e∆t= 0.0909

(16)

Resultados numéricos método de Euler

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

y 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Euler Explícito Euler Implícito Solução exata

(c) N= 25e∆t= 0.040

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

y 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Euler Explícito Euler Implícito Solução exata

(17)

Método de segunda ordem Crank-Nicolson

{

Δt

{

2

Δt 2

u

n n+1/2 n+1

u u

A partir do método de Euler, dividindo o intervalo∆tem 2 partes, define-se no primeiro intervalo∆t/2 o método explícito e no segundo o método implícito, como segue

un+1/2un ∆t/2 +au

n= 0 (4)

un+1un+1/2

∆t/2 +au

n+1

= 0 (5)

Somando (4) com (5) derivamos o método de Crank-Nicolson

un+1un

∆t +

a

2(u n+1

+un) = 0

(18)

Consistência Método de Crank-Nicolson

A consistência deste método pode ser comprovada facilmente ao tomar a integral do exemplo que estamos tratando, ou seja,

Z tn+∆t

tn

(du

dt +au)dt= 0,

ou ainda

u(tn+ ∆t)−u(tn) =−

Z tn+∆t

tn

au dt,

usando a regra de integração do trapézio, obtemos

u(tn+ ∆t)−u(tn)

∆t =−

a

2(u(tn+ ∆t) +u(tn))−τn, ondeτn denota o erro de integração da regra do trapézio, que é dado por

τn=−

1 12

d3u

dt3(ξn)∆t 2

(19)

Condicionalidade do método de Crank-Nicolson

un+1un

∆t +

a

2(u n+1

+un) = 0

ou ainda

un+1(2 +a∆t) =un(2−a∆t) Assim,

un+1=

2−a∆t

2 +a∆t

un

tomando

γ=

2−a∆t

2 +a∆t

Observa-se queγ <1, porém

γ >0⇒∆t < 2 a

Logo o método de Crank-Nicolson écondicionalmente estável. Todavia esta condição é menos restritiva que para o método de Euler explicito que requisita que o intervalo∆tseja menor que 1

(20)

Resultados numéricos

Para testar o método de Crank-Nicolson repetimos o experimento numérico anterior adotando um domínio[0,1],a= 10.0e condição inicialb= 1.0, de acordo com a análise necessitamos respeitar ∆t < 1

a = 0.1para Euler explícito e ∆t <

2

a = 0.2para

Crank-Nicolson.

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

y 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Euler Explícito Euler Implícito Crank-Nicolson Solução exata

(e) N= 5e∆t= 0.2000

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

y 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Euler Explícito Euler Implícito Crank-Nicolson Solução exata

(21)

Resultados numéricos

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

y 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Euler Explícito Euler Implícito Crank-Nicolson Solução exata

(g)N= 10e∆t= 0.1000

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

y 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Euler Explícito Euler Implícito Crank-Nicolson Solução exata

(h)N = 11e∆t= 0.0909

(22)

Resultados numéricos

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

y 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Euler Explícito Euler Implícito Crank-Nicolson Solução exata

(i)N = 25e∆t= 0.040

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

y 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Euler Explícito Euler Implícito Crank-Nicolson Solução exata

(23)

Conclusões

De uma forma geral, os três métodos podem ser escritos como

un+1−un

∆t +a

(1−θ)un+1+θun

= 0.

com

◮ θ= 1.0 método de Euler Explícito

◮ Método de primeira ordem de convergência ◮ Condicionalmente estável (∆t <1/a)

◮ θ= 0.0 método de Euler Implícito

◮ Método de primeira ordem de convergência

◮ Incondicionalmente estável (não depende da escolha de∆t

para convergir)

◮ θ= 0.5 método de Crank-Nicolson

◮ Método de segunda ordem de convergência ◮ Condicionalmente estável (∆t <2/a)

(24)

Método de Diferença Central (

leap frog

)

O método de diferença central pode ser escrito como:

un+1un−1

2∆t +au

n= 0.

Neste caso, necessitamos de duas condições iniciaisu0 e ,u1.

Tomando

u0=b,

a condiçãou1 pode ser obtida utilizando os métodos de Euler

Explícito, Implícito ou Crank-Nicolson. Utilizando Euler Explícito, obtemos:

(25)

Consistência - Diferença Central

Expandindo em série de Taylor os termosu(tn+ ∆t)eu(tn−∆t),

u(tn+ ∆t) =u(tn) + ∆t

du dt(tn) +

∆t2 2!

d2

u dt2(tn) +

∆t3 3!

d3

u

dt3(ξ1) (6)

u(tn−∆t) =u(tn)−∆t

du dt(tn) +

∆t2 2!

d2

u dt2(tn)−

∆t3 3!

d3

u

dt3(ξ1) (7)

Fazendo (6) – (7), obtemos: u(tn+ ∆t)−u(tn−∆t) = 2∆t

du dt(tn) +

∆t3 3!

d3

u dt3(ξ1) +

d3

u dt3(ξ2)

ou ainda

du dt(tn) =

u(tn+ ∆t)−u(tn−∆t) 2∆t +τn com

τn=− ∆t2

12

d3

u dt3(ξ1) +

d3

u dt3(ξ2)

, ξ1∈(tn, tn+∆t) e ξ2∈(tn, tn−∆t)

Logo, o método converge com a mesma ordem do Crank-Nicolson∆t2

.

(26)

Convergência dos Métodos

Para se obter a taxa de convergência dos métodos, primeiramente calculamos o erro, confrontando a solução exata com a aproximada, utilizando a norma do máximo, que pode ser definida como:

kek∞=kun−u(tn)k∞= max

0≤i≤N|u iu(t

i)|.

Assim, a taxa de convergência do método pode ser obtida através do refinamento progressivo da malha, escolhendo, por exemplo,

Nj = 4j elementos. Logo, para cada duas execuções do código utilizando valores consecutivos deN, podemos calcular a ordem p

de convergência do método, como segue:

(27)

Taxa de convergência

Resultados paraN = 4,16,64,256,1024elementos.

2 4 6

−log(h)

-15 -10 -5 0 lo g( e r r o ) Expl´ıcito Impl´ıcito CN DC 1 2 1 1

(k)a= 1

2 4 6

−log(h)

-10 -5 0 5 10 15 lo g( e r r o ) Expl´ıcito Impl´ıcito CN DC 1 2 1 1

(l) a= 10

(28)

Métodos de alta ordem (Runge-Kutta)

Outro método de segunda ordem pode ser apresentado na seguinte forma explícita para o problema modelo (3):

un+1=un

1−a∆t+a

2t2

2

detalhes desta metodologia pode ser encontrado na página 101 da seguinte referência:

https://edisciplinas.usp.br/pluginfile.php/41896/mod_ resource/content/1/LeVeque%20Finite%20Diff.pdf

Além disso, na página 103, desta mesma referência, são

apresentados métodos de Runge-Kutta de quarta ordem (∆t4) e de ordemn.

(29)

Problema de Valor de Contorno

PVC

(30)

Problema do Calor

Dada a condutividade térmica do materialKc, a função θe o

termo fontef : Ω→R, achar o campo de temperatura θ: Ω→R, tal que:

−Kc

d2θ

dx2 =f Ω

(31)

Problema da difusão de concentração

Dado o coeficiente de difusão de determinada espécieD, a função

ce o termo fontef : Ω→R, encontrar o campo de concentração

c: Ω→R, tal que:

−Dd

2c

dx2 =f Ω

c=c ∂Ω

(32)

Problema do Escoamento em meios porosos

Dada a condutividade hidraúlica do meioKp, a função pe o termo

fontef : Ω→R, determinar o campo de presão p: Ω→R, tal que:

−Kp

d2p

dx2 =f Ω

(33)

Problema de Valor de Contorno (PVC)

Seja o domínioΩ = [a, b], dados α,β ef(x), encontraru(x), com

x∈[a, b], tal que:

−d

2u

dx2 =f(x) (8)

u(a) =α u(b) =β

(34)

Discretização do problema

Particionando o domínioΩ = [a, b]em partes iguaish, onde

h= (b−a)/N el é a dimensão do elemento,N el =J−1 o

número de elementos da malha eJ o número de nós da malha que podem ser localizados porxj =jh, comj= 1,2, ..., J −1,x0=a

exJ =b, introduzimos a seguinte aproximação por diferenças finitas central:

d2u

dx2 ≈

uj+1−2uj+uj−1

h2

ou ainda, para o problema elíptico (8):

−uj+1−2uj+uj−1

h2 =f(xj)

(35)

Consistência

Expandindo em série de Taylor os termosu(xj+h) eu(xj −h) e truncando no termo de derivada quarta:

u(xj+h) =u(xj)+h

du dx(xj)+

h2

2!

d2u

dx2(xj)+

h3

3!

d3u

dx3(xj)+

h4

4!

d4u

dx4(ξ 1

j)

u(xj−h) =u(xj)−h

du dx(xj)+

h2

2!

d2u

dx2(xj)−

h3

3!

d3u

dx3(xj)+

h4

4!

d4u

dx4(ξ 2

j)

comξj1∈(xj, xj+h)eξ2j ∈(xj−h, xj). Somando as expansões e rearrumando os termos, geramos:

d2u

dx2(xj) =

u(xj +h)−2u(xj) +u(xj−h)

h2 +τj

onde

τj =−

h2

4!

d4u

dx4(ξ 1

j) +

d4u

dx4(ξ 2

j)

De acordo com o erro de truncamento, este método apresenta convergência de ordem 2.

(36)

Estratégia de Resolução

Problema: achar uj, com j= 1,2, ..., J−1, tal que:

−uj+1−2uj+uj−1

h2 =f(xj)

com condições de contorno

u0=α uJ =β

O sistema de equações para cadaj pode ser montado como:

paraj= 1,

−u2−2u1+α

h2 =f(x1)

ou ainda

−u2−2u1

h2 =f(x1) +

α h2 paraj= 2,

(37)

Cont....

paraj= 3,

−u4−2u3+u2

h2 =f(x3)

.. .

paraj=J −1,

−β−2uJ−1+uJ−2

h2 =f(xJ−1)

ou ainda

−−2uJ−1+uJ−2

h2 =f(xJ−1) +

β h2

(38)

Cont....

A partir das equações para cada indicej, podemos gerar o seguinte sistema linear: 1 h2           

2 −1 0 0 0 . . . 0

−1 2 −1 0 0 . . . 0

0 −1 2 −1 0 . . . 0

0 0 −1 2 −1 . . . 0

..

. ... ... . .. ... ... ...

0 0 0 . . . −1 2 −1

0 0 0 . . . 0 −1 2

                      u1 u2 u3 u4 .. . uJ2

uJ−1

           =           

f(x1) +hα2

f(x2)

f(x3)

f(x4)

.. . f(xJ2)

f(xJ−1) +

β h2           

(39)

Resultados Numéricos - Exemplo 1

Em um domínioΩ = [a, b] = [0,1], escolhendo f(x) = 1, estamos interessados em resolver o seguinte problema:

−d

2u

dx2 = 1

u(0) = 1 u(1) = 0

O problema em questão apresenta a seguinte solução exata:

u(x) =−1 2(x

2

+x) + 1

que satisfaz as condições de contornou(0) = 1 eu(1) = 0

(40)

Resultados Numéricos - Exemplo 1

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

u 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Aproximada exata

(m)N el= 4eh= 0.25

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

u 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Aproximada exata

(n)N el= 16eh= 0.0625

(41)

Resultados Numéricos - Exemplo 2

Em um domínioΩ = [a, b] = [0,1], escolhendo f(x) =π2sin(πx),

estamos interessados em resolver o seguinte problema:

−d

2u

dx2 =π

2

sin(πx)

u(0) =u(1) = 0

O problema em questão apresenta a seguinte solução exata:

u(x) = sin(πx)

que satisfaz as condições de contornou(0) =u(1) = 0. Adotando refinamentos sucessivos de malha comN el= 4i (i= 1,2,3,4,5), são gerados resultados comparando solução exata com aproximada e testes de convergência com o intuito de validar a metodologia e o código computacional.

(42)

Resultados Numéricos - Exemplo 2

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

u

0 0.2 0.4 0.6 0.8 1 1.2

Aproximada exata

(o)N el= 4eh= 0.25

x

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

u

0 0.2 0.4 0.6 0.8 1 1.2

Aproximada exata

(p)N el= 16eh= 0.0625

(43)

Taxa de convergência - Exemplo 2

Resultados paraN el= 4,16,64,256,1024elementos.

2 4 6

−log(h)

-14 -12 -10 -8 -6 -4

lo

g(

e

r

r

o

)

1 2

Figure

Updating...

Download now (43 pages)