Topico1-Diferencas_Finitas.pdf

Livre

0
0
43
1 year ago
Preview
Full text

  

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

iuryigreja@ice.ufjf.br

  ◮

  Problema de Valor de Inicial (PVI): Achar u(t) ∈ R, t ∈ [0, T ], tal que du

  = F (u, t), dt mais condição inicial em u(0). Este problema é também conhecido como problema de evolução.

  Problema de Valor de Contorno (PVC): Achar u(x) ∈ R, x ∈ [a, b], satisfazendo a EDO

  2 Problema de Valor Inicial PVI

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

  = −k Q(t),

  r

  dt Q(t) é a quantidade presente de certo elemento radioativo no instante t e k uma constante que depende do elemento radioativo.

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

  Modelo de Malthus dP

P

= k p (t),

dt Modelo logístico (Verhulst-Pearl) dP P

= k p P ,

  1 − dt L P > < (t) é a população, k p uma constante (k p crescimento ou k p decaimento populacional) e L o limite máximo para a população. Mede a troca de calor entre um corpo e o meio ambiente. dθ

  = −k (θ − θ ) ,

  

t m

  dt θ a temperatura do corpo, θ m a temperatura do meio e k t uma constante

  ◮

  Sistemas de equações lineares de primeira ordem du

  • Au = g(t); u (0) = α. dt onde u, g e α são vetores e A uma matriz. Equações lineares de segunda ordem

  2

  d u du

  2 + ω u = f (t); (0) = β.

  2 dt dt

  Equação não linear de primeira ordem Achar u(t) ∈ R, t ∈ [0, T ], tal que du = F (u, t) dt (1) u(0) = α

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

  n n

  por um conjunto de valores discretos u .

  T

  {

  Δt Método de Euler

  n+1 n  n u − u

  = F (u , t )

  n

  , n = 0, 1, 2, ..., N (2) ∆t A consistência representa o mínimo de fidelidade do problema contínuo

  Todavia

  a própria definição de derivada, u(t + ∆t) − u(t ) du

  n n

  lim = (t n ) = F (u(t n ), t n ),

  ∆ t→0

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

  

2

  2

  du ∆t d u donde conclui-se que

  2

  u(t + ∆t) − u(t ) du ∆t d u

  n n

  = (t ) + (ξ )

  n n

  2

  ∆t dt 2! dt du O que implica que a derivada (t ) pode ser aproximado por

  

n

  dt u(t + ∆t) − u(t )

  n n

  com erro da ordem de ∆t. Portanto a solução ∆t exata u(t) satisfaz a seguinte equação de diferenças u(t + ∆t) − u(t )

  n n

  = F (u(t n ), t n ) + τ n ∆t Tomando F (u, t) = −au, onde a > 0 é uma constante, define-se a seguinte equação diferencial ordinária du

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

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

  − at

  u(t) = be A aproximação pelo método de Euler correspondente ao exemplo

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

  n+1 n

  u = u (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.

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

  n+1 n

  u − u

  n+1 + au = 0 com u = b.

  ∆t logo,

  

n+1 n

  (1 + a∆t)u = u ou ainda

  1

  n+1 n

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

  1 a = 0.1 o que implica em N > 10 para garantir a estabilidade do método de

  Euler explícito

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

y

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1 Euler Explícito Euler Implícito Solução exata x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y 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 x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y 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

n n+1/2 n+1 u u u Δt 2 Δt 2

  { {

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

  n+1/2 n

  u − u

  n

  • au = 0 (4) ∆t/2

  n+1 n+1/2

  u − u

  n+1 A consistência deste método pode ser comprovada facilmente ao tomar a integral do exemplo que estamos tratando, ou seja, Z t +∆ t n du

  ( + au)dt = 0, dt

  t n

  ou ainda Z +∆

  t n t

  u(t + ∆t) − u(t ) = − au dt,

  n n t n

  usando a regra de integração do trapézio, obtemos u(t n + ∆t) − u(t n ) a = − (u(t + ∆t) + u(t )) − τ ,

  n n n

  ∆t

  2 n+1 n

  u − u a

  n+1 n

  • (u + u ) = 0 ∆t

  2 ou ainda

  n+1 n

  u (2 + a∆t) = u (2 − a∆t) Assim, 2 − a∆t

  n+1 n

  u = u 2 + a∆t tomando 2 − a∆t

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

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

  2 a = 0.2 para Crank-Nicolson.

  y 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

y

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 x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y 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 x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y 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

x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y 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 x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y 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

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

  n+1

  − u

  n

  • a (1 − θ)u
  • θu

  ∆t

  n+1

  n = 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 O método de diferença central pode ser escrito como:

  n+1 n−1

  u − u

  n + au = 0.

  2∆t

  1 Neste caso, necessitamos de duas condições iniciais u e ,u .

  Tomando u = b,

  1

  a condição u pode ser obtida utilizando os métodos de Euler Explícito, Implícito ou Crank-Nicolson. Utilizando Euler Explícito,

  Expandindo em série de Taylor os termos u(t n + ∆t) e u(t n − ∆t), u(t n + ∆t) = u(t n ) + ∆t du dt (t n ) +

  

∆t

2 2! d 2 u dt 2 (t n ) +

  ∆t 3 3! d 3 u dt 31 ) (6) u(t n − ∆t) = u(t n ) − ∆t du dt

  (t n ) +

∆t

2 2! d 2 u dt 2 (t n ) −

  ∆t 3 3! d 3 u dt 31 ) (7) Fazendo

  obtemos: u(t n + ∆t) − u(t n − ∆t) = 2∆t du dt

(t n ) +

  ∆t 3 3! d 3 u dt 31 ) + d 3 u dt 32 ) ou ainda du (t n ) =

u(t n + ∆t) − u(t n − ∆t)

  • τ n
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:

  n i kek ∞ = ku − u(t )k ∞ = max |u − u(t )|. n i 0≤ i≤N

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

  j

  elementos. Logo, para cada duas execuções do código N j = 4 utilizando valores consecutivos de N , podemos calcular a ordem p de convergência do método, como segue: Resultados para N = 4, 16, 64, 256, 1024 elementos.

  • 5

  lo g( e r r o) Expl´ıcito Impl´ıcito CN DC

  • 15
  • 10
  • 5

  1

  2

  1

  1

  5

  10

  15

lo

g(

e

r

r

o)

  Expl´ıcito Impl´ıcito CN DC

  2

  1

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

  

  2

  2

  a ∆t

  n+1 n

  u = u 1 − a∆t +

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

  

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

  4

  apresentados métodos de Runge-Kutta de quarta ordem (∆t ) e de

  Problema de Valor de Contorno PVC Dada a condutividade térmica do material K , a função θ e o

  c

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

  2

  d θ −K = f Ω

  c

  2

  dx θ = θ ∂Ω Dado o coeficiente de difusão de determinada espécie D, a função c e o termo fonte f : Ω → R, encontrar o campo de concentração c : Ω → R, tal que:

  2

  d c −D = f Ω

  2

  dx c = c ∂Ω Dada a condutividade hidraúlica do meio K , a função p e o termo

  p

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

  2

  d p −K = f Ω

  p

  2

  dx p = p ∂Ω Seja o domínio Ω = [a, b], dados α, β e f (x), encontrar u(x), com x ∈ [a, b], tal que:

  − d

  2

  u dx

  2

  = f (x) (8) u(a) = α u(b) = β Particionando o domínio Ω = [a, b] em partes iguais h, onde h = (b − a)/N el é a dimensão do elemento, N el = J − 1 o número de elementos da malha e J o número de nós da malha que podem ser localizados por x = jh, com j = 1, 2, ..., J − 1, x = a

  j

  e x = b, introduzimos a seguinte aproximação por diferenças

  J

  finitas central:

  2

  d u u − 2u + u

  j+1 j j−1

  ≈

  2

  2

  dx h ou ainda, para o problema elíptico

  

Expandindo em série de Taylor os termos u(x + h) e u(x − h) e

  j j

  truncando no termo de derivada quarta:

  2

  

2

  3

  3

  4

  4

  du h d u h d u h d u

  1

  u(x +h) = u(x )+h (x )+ (x )+ (x )+ (ξ )

  j j j j j j

  

2

  3

  4

  dx 2! dx 3! dx 4! dx

  2

  

2

  3

  3

  4

  4

  du h d u h d u h d u

  2

  u(x −h) = u(x )−h (x )+ (x )− (x )+ (ξ )

  j j j j j j

  

2

  3

  4

  dx 2! dx 3! dx 4! dx

  1

  2

  com ξ ∈ (x , x + h) e ξ ∈ (x − h, x ). Somando as expansões e

  j j j j j j

  rearrumando os termos, geramos:

  2

  d u u(x j + h) − 2u(x j ) + u(x j − h) (x ) = + τ

  

j j

  2

  2

  dx h Problema : achar u , com j = 1, 2, ..., J − 1, tal que:

  j

  u j+1 − 2u j + u j−1 − = f (x )

  j

  2

  h com condições de contorno u = α u = β

  J

  O sistema de equações para cada j pode ser montado como: para j = 1, u

  2 − 2u 1 + α

  − = f (x

  1 )

  2

  h para j = 3, u

  4 − 2u 3 + u

  

2

  − = f (x

  3 )

  2

  h ..

  . para j = J − 1,

  β − 2u + u

  J−1 J−2

  − = f (x )

  J−1

  2

  h A partir das equações para cada indice j, podemos gerar o seguinte sistema linear:

  1 h 2 2 −1 . . .

  −1 2 −1 . . .

  −1 2 −1 . . .

  −1 2 −1 . . . .. .

  .. .

  .. .

  . .. ... ...

  

..

.

  . . . −1 2 −1 . . . −1

2

u 1 u 2 u 3 u 4 ..

  . u

  J −2 u

  J −1 = f (x 1 ) + α h 2 f (x 2 ) f (x 3 ) f (x 4 ) ..

  . f (x

  J −2 ) f (x

  J −1 ) + β h 2

  Obs.: Por se tratar de um sistema linear tridiagonal, podemos Em um domínio Ω = [a, b] = [0, 1], escolhendo f (x) = 1, estamos interessados em resolver o seguinte problema:

  2

  d u − = 1

  2

  dx u(0) = 1 u(1) = 0 O problema em questão apresenta a seguinte solução exata:

  1

  

2

  u(x) = − (x + x) + 1 x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 u 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Aproximada exata (m) N el = 4 e h = 0.25 x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

u

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Aproximada exata (n) N el = 16 e h = 0.0625

  Observação:

  2

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

  2

  d u

  

2

  − = π sin(πx)

  2

  dx 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 contorno u(0) = u(1) = 0. Adotando x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 u 0.2 0.4 0.6 0.8 1 1.2 Aproximada exata (o) N el = 4 e h = 0.25 x 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

u

0.2

0.4

0.6

0.8

1

1.2

Aproximada exata (p) N el = 16 e h = 0.0625

Resultados para N el = 4, 16, 64, 256, 1024 elementos.

  • 4 e r r -8 o)
  • 6

  g( lo -10

  

2

  • 12

  1

Novo documento