| | | |

Matemática numérica II

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

5.3 Método de Volumes Finitos

O Método de Volumes Finitos (MVF) é um método de discretização apropriado para problemas conservativos. Consideramos o seguinte problema linear de valor de contorno (PVC)

−ux⁢x=f⁢(x),a<x<b, (5.100)
u⁢(a)=0, (5.101)
u⁢(b)=0. (5.102)

onde a incógnita é u=u⁢(x) com dada fonte f=f⁢(x). A Eq. (LABEL:cap_pvc_sec_mvf:eq:pvc) pode ser reescrita na forma conservativa

div⁡(𝑭)=f, (5.103)

onde 𝑭=−ux

1. Discretização Espacial.

Assumimos uma malha do domínio [a,b] da forma

a=x12<x1<x32<⋯<xi−12<xi<xi+12<⋯<xn<xn+12=b, (5.104)

onde h=(b−a)/n, xi−12=a+(i−1)⁢h, h−=h+=h/2, i=1,2,…,n. Também denotamos Ki=(xi−12,xi+12) a i-ésima célula da malha.

2. Discretização das Equações.

No MVF, as incógnitas ui, i=1,2,…,n, são as aproximações para o valor médio de u nas células Ki, i.e.

ui=1|Ki|⁢∫abu⁢(x)⁢𝑑x. (5.105)

O problema discreto para ui é obtido tomando a média da Eq.  na célula Ki, donde temos

−1h⁢∫xi−12xi+12ux⁢x⁢𝑑x=1h⁢∫Kif⁢𝑑x, (5.106)
1h⁢[−ux⁢(xi+12)+ux⁢(xi−12)]=1h⁢∫Kif⁢𝑑x (5.107)

Por fórmula de diferenças finitas central, temos

ux⁢(xi+12)=ui−ui−1h+O⁢(h) (5.108)

e

ux⁢(xi−12)=ui+1−uih+O⁢(h) (5.109)

Com isso, obtemos as equações

1h⁢(−ui+1−uih+ui−ui−1h)=1h⁢∫Kif⁢𝑑x, (5.110)

Rearranjando os termos e aproximando a integral de f pela regra do ponto médio, obtemos

−1h2⁢ui−1+2h2⁢ui−1h2⁢ui+1=fi, (5.111)

onde fi:=f⁢(xi) e i=2,3,…,n−1.

Na célula K1, tomamos a aproximação

ux⁢(x12)=u1−u12h/2+O⁢(h), (5.112)
=u1h/2+O(h). (5.113)

Aplicando na Eq. (5.107), obtemos

1h⁢(−u2−u1h+u1h/2)=1h⁢∫Kif⁢𝑑x, (5.114)

Analogamente, integrando na célula Kn de fronteira, obtemos

1h⁢(unh/2+un−un−1h)=1h⁢∫Kif⁢𝑑x. (5.115)

Por fim, obtemos o problema discreto

3h2⁢u1−1h2⁢u2=f1, (5.116)
−1h2⁢ui−1+2h2⁢ui−1h2⁢ui+1=fi, (5.117)
−1h2⁢un−1+3h2⁢un=fn, (5.118)

para i=2,3,…,n−1.

3. Resolução do problema discreto.

A resolução do problema discreto se resume a computar a solução do sistema linear (5.116)-(5.118). Sua forma matricial é A⁢𝒖=𝒃, onde a matriz de coeficientes A=[ai,j]i,j=1n,n tem elementos da diagonal são

a1,1=3h2, (5.119)
ai,i=2h2⁢, 2≤i≤n−1, (5.120)
an,n=3h2, (5.121)

e os demais ai,j para i≠j

ai,j={−1h2,j=i−1ouj=i+1,0,noutros casos (5.122)

O vetor dos termos constantes é 𝒃=(bi=fi)i=1n, fi=f⁢(xi) e o vetor das incógnitas é u=(ui)i=1n, sendo ui a aproximação do valor médio de u na célula Ki, i=1,2,…,n.

Exemplo 5.3.1.

Consideramos o seguinte PVC

−u′′=π2⁢sen⁡(π⁢x)⁢, 0<x<1, (5.123)
u⁢(0)=0, (5.124)
u⁢(1)=0. (5.125)

A solução analítica deste problema é u⁢(x)=sen⁡(π⁢x).

Refer to caption
Figura 5.3: Resultado referente ao Exemplo 5.3.1.

Resolvendo este sistema com h=10−1 obtemos a solução numérica apresentada na Figura 5.3.

Código 18: pvc_mvf.py
1import numpy as np
2
3# fonte
4def f(x):
5 return np.pi**2*np.sin(np.pi*x)
6
7# malha
8n = 10
9h = 1./n
10xx = np.linspace(h/2, 1.-h/2, n)
11
12# prob. discreto
13A = np.zeros((n,n))
14b = np.empty(n)
15
16# c.c. x = 0
17A[0,0] = 3./h**2
18A[0,1] = -1./h**2
19b[0] = f(xx[0])
20
21# pts internos
22for i in range(1,n-1):
23 A[i,i-1] = -1./h**2
24 A[i,i] = 2./h**2
25 A[i,i+1] = -1./h**2
26 b[i] = f(xx[i])
27
28# c.c. x = 1
29A[n-1,n-2] = -1./h**2
30A[n-1,n-1] = 3./h**2
31b[n-1] = f(xx[n-1])
32
33# resol prob disc
34u = npla.solve(A, b)
35
36xx = np.concatenate(([0.],xx,[1.]))
37u = np.concatenate(([0.],u,[0.]))

5.3.1 Exercícios

E. 5.3.1.

Considere o PVC

−u′′=π2⁢cos⁡(π⁢x)⁢, 0<x<1, (5.126)
u⁢(0)=1, (5.127)
u⁢(1)=−1. (5.128)

A solução analítica deste problema é u⁢(x)=cos⁡(π⁢x). Use o MVF para computar aproximações numéricas 𝒖~h com tamanhos de malha h=10−1, 10−2, 10−3, 10−4 e verifique o erro absoluto εh,abs:=‖𝒖~h−𝒖‖.

E. 5.3.2.

Considere o PVC

−u′′=2,−1<x<1, (5.129)
u⁢(−1)=0, (5.130)
u⁢(1)=0. (5.131)

A solução analítica deste problema é u⁢(x)=1−x2. Use o MVF com n=20 subintervalos na malha e verifique o erro absoluto εabs:=‖𝒖~h−𝒖‖.

E. 5.3.3.

Considere o seguinte PVC

−u′′+u′=f⁢(x),−1<x<1, (5.132)
u⁢(−1)=0, (5.133)
u′⁢(1)=0, (5.134)

onde

f⁢(x)={1,x≤00,x>0 (5.135)

Use uma aproximação adequada pelo MVF para obter o valor aproximado de u⁢(0) com precisão de 2 dígitos significativos.


7,2⁢e−1

E. 5.3.4.

Considere o PVC

−u′′=π2⁢cos⁡(π⁢x)⁢, 0<x<1, (5.136)
u⁢(0)=1, (5.137)
u′⁢(1)=0. (5.138)

A solução analítica deste problema é u⁢(x)=cos⁡(π⁢x). Aplique o MVF para computar uma aproximação numérica com erro absoluto de no máximo 10−3 na norma L2.


Envie seu comentário

Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Opcional. Preencha seu nome para que eu possa lhe contatar.
Opcional. Preencha seu e-mail para que eu possa lhe contatar.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a política de uso de dados para mais informações.

Licença Creative Commons
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.

Pedro H A Konzen
| | | |