| | | | |

6.1 Equação de Poisson

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

Consideramos a equação de Poisson2828endnote: 28Siméon Denis Poisson, 1781 - 1840, matemático francês. Fonte: Wikipédia:Siméon Denis Poisson. (ou equação de Laplace2929endnote: 29Pierre-Simon Laplace, 1749 - 1827, matemático francês. Fonte: Wikipédia: Pierre-Simon Laplace. heterogênea) no domínio retangular D=(a,b)×(c,d) com condições de contorno de Dirichlet homogêneas

Δu=f(x,y),(x,y)D, (6.1a)
u(x,y)=0,D, (6.1b)

onde u=u(x,y) é a incógnita, Δu:=uxx+uyy e D é a fronteira do domínio D.

A aplicação do Método de Diferenças Finitas para resolver este problema consiste dos mesmos passos usados para resolver problemas de valores de contorno (consulte Seção 5.1), a saber: 1. discretização do domínio, 2. discretização das equações, 3. resolução do problema discreto.

1. Discretização do Domínio (Malha).

Tratando-se do domínio retangular D¯=[a,b]×[c,d], podemos construir uma malha do produto cartesiano de partições uniformes dos intervalos [a,b] e [c,d]. Ou seja, tomamos

xi :=a+(i1)hx, (6.2a)
yj :=c+(j1)hy, (6.2b)

com i=1,2,,nx+1, j=1,2,,ny+1, sendo nx e ny o número de subintervalos escolhidos para as partições, respectivamente, e os passos hx=(ba)/nx e hy=(dc)/ny. O tamanho da malha é definido por h:=max{hx,hy}.

Refer to caption
Figura 6.1: Malha bidimensional.

O produto cartesiano das partições em x e y nos fornece uma partição do domínio D¯ da forma

P(D¯)={(x1,y1),(x1,y2),,(xi,yj),,(xnx,yny)}, (6.3)

cujos nodos (xi,yj) podem ser enumerados (indexados) por k=i+(j1)(nx+1). Por simplicidade, no decorrer do texto, assumiremos nx=ny=:n e, por conseguinte, hx=hy=h e temos a enumeração

k=i+(j1)(n+1). (6.4)

Consulte a Figura 6.1.

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

Usando a fórmula de diferenças finitas central de ordem h2 para a segunda derivada, temos

uxx(x,y) =u(x+h,y)2u(x,y)+u(xh,y)h2+O(h2), (6.5)
uyy(x,y) =u(x,y+h)2u(x,y)+u(x,yh)h2+O(h2). (6.6)

Daí, denotando uiju(xi,yj) temos

uxx(xi,yj) =ui+1,j2ui,j+ui1,jh2+O(h2), (6.7)
uyy(xi,yj) =ui,j+12ui,j+ui,j1h2+O(h2). (6.8)

Então, da Eq. 6.1a temos

ui+1,j2ui,j+ui1,jh2 (6.9)
+ui,j+12ui,j+ui,j1h2+O(h2)=f(xi,yj).

Agora, com base na enumeração (6.4) denotamos uk:=ui+(j1)(n+1), desprezando o erro de truncamento e rearranjando os termos, obtemos

1h2ukn+1h2uk14h2uk+1h2uk+1+1h2uk+n=fk, (6.10)

para k=i+(j+1)(n+1) com i,j=2,3,,n (nodos internos). Isto é, esta última expressão nos fornece um sistema de (n1)2 equações para (n+1)2 incógnitas 𝒖=(uk)k=1(n+1)2. Para fechar o sistema, usamos as condições de contorno (6.1b)

uk=0 (6.11)

para k=i+(j+1)(n+1) com i=1,n+1 e j=1,2,,n+1, ou i=2,3,,n e j=1,n+1.

Com isso, o problema discreto obtido da aplicação do MDF consiste no sistema linear de (n+1)2×(n+1)2 (6.10)-(6.11).

3. Resolução do Problema Discreto.

O problema discreto (6.10)-(6.11) pode ser escrito na forma matricial

A𝒖=𝒃, (6.12)

onde o vetor da incógnitas é 𝒖=(uk)k=1(n+1)2. A matriz dos coeficientes A=[al,m]l,m=1(n+1)2,(n+1)2 e o vetor dos termos contantes 𝒃=(bk)k=1(n+1)2 têm elementos não nulos

i=1,n+1,j=1,2,,n+1: (6.13)
ak,k=1,
bk=0,
i=1,2,,n+1,j=1,n+1: (6.14)
ak,k=1,
bk=0,
i,j=2,3,,n : (6.15)
ak,kn=1h2,
ak,k1=1h2,
a+k,k=4h2,
ak,k+1=1h2,
ak,k+n=1h2,
bk=f(xi,yj).

Assim sendo, basta empregarmos um método apropriado para resolver o sistema linear (6.12) para obter a solução aproximada de u nos nodos (xi,yj).

Exemplo 6.1.1.

Consideramos o seguinte problema

Δu=2π2sen(πx)sen(πy),(x,y)(0,1)2, (6.16a)
u=0,(x,y)D. (6.16b)

A solução exata é u(x,u)=sen(πx)sen(πy).

A Figura 6.2 mostra o gráfico de superfície da solução aproximada obtida pelo MDF com h=101. A Figura 6.3 mostra a comparação entre os gráficos de contorno das soluções numérica e exata (linhas brancas).

Refer to caption
Figura 6.2: Solução aproximada do problema de Poisson do Exemplo 6.1.1.
Refer to caption
Figura 6.3: Comparação das soluções numérica e exata (isolinhas brancas) do Exemplo 6.1.1.
Código 20: mdf_poisson.py
1import numpy as np
2import numpy.linalg as npla
3
4# malha
5n = 10
6h = 1./n
7xx = np.linspace(0., 1., n+1)
8yy = np.linspace(0., 1., n+1)
9
10# rhs
11def f(x,y):
12    return -2*np.pi**2*np.sin(np.pi*x)*np.sin(np.pi*y)
13
14# problema discreto
15A = np.zeros(((n+1)**2, (n+1)**2))
16b = np.empty((n+1)**2)
17
18# c.c.
19for j in range(n+1):
20    # i = 0
21    k = j*(n+1)
22    A[k,k] = 1.
23    b[k] = 0.
24    # i = n
25    k = n + j*(n+1)
26    A[k,k] = 1.
27    b[k] = 0.
28
29for i in range(1,n):
30    # j = 0
31    k = i
32    A[k,k] = 1.
33    b[k] = 0.
34    # j = n
35    k = i + n*(n+1)
36    A[k,k] = 1.
37    b[k] = 0.
38
39# pts internos
40for i in range(1,n):
41    for j in range(1,n):
42        k = i + j*(n+1)
43        A[k,k-n-1] = 1./h**2
44        A[k,k-1] = 1./h**2
45        A[k,k] = -4./h**2
46        A[k,k+1] = 1./h**2
47        A[k,k+n+1] = 1./h**2
48        b[k] = f(xx[i],yy[j])
49
50# resol p.d.
51u = npla.solve(A, b)

6.1.1 Exercícios

E. 6.1.1.

Use o MDF para encontrar uma solução aproximada do seguinte problema de Poisson

Δu=2π2sen(πx)sen(πy),(x,y)D=(1,1)2, (6.17a)
u=0,(x,y)D. (6.17b)

A solução exata é u(x,y)=sen(πx)sen(πy). Faça uma comparação gráfica entre as soluções numérica e exata no caso de h=101 (malha uniforme). Compare o erro εh:=𝒖~h𝒖2 para n=10,20,40,80,160 (número de subintervalos na malha uniforme). A taxa de convergência é a esperada? Justifique sua resposta.

E. 6.1.2.

Use o MDF para encontrar uma solução aproximada do seguinte problema de Laplace

Δu=0,(x,y)(0,1)2, (6.18a)
u(0,y)=u(1,y)=y2y, 0y1, (6.18b)
u(x,0)=u(x,1)=xx2, 0x1. (6.18c)

A solução exata é u(x,y)=xx2+y2y. Faça uma comparação gráfica entre as soluções numérica e exata no caso de h=101. Compare o erro εh:=𝒖~h𝒖2 para n=10,20,40,80,160 (número de subintervalos na malha uniforme).

E. 6.1.3.

Considere o problema

Δu=2π2sen(πx)sen(πy),(x,y)(0,1)2, (6.19a)
u(0,y)=0, 0y1, (6.19b)
ux(1,y)=0, 0y1, (6.19c)
u(x,0)=u(x,1)=0, 0x1. (6.19d)

A solução exata é u(x,y)=sen(πx)sen(πy). Com uma malha uniforme, obtenha uma solução aproximada com o MDF empregando, na fronteira com condições de Neumann3030endnote: 30Carl Gottfried Neumann, 1832 - 1925, matemático alemão. Fonte: Wikipédia: Carl Neumann.:

  1. a)

    D,h fórmulas diferença regressiva de ordem h.

  2. b)

    D,h2 diferença regressiva de ordem h2.

Compare a taxa de convergência do erro εh:=𝒖~h𝒖2 entre essas duas formulações.

E. 6.1.4.

Considere o problema

Δu=2π2sen(πx)sen(πy),(x,y)(0,1)2, (6.20a)
u(0,y)=u(1,y)=0, 0y1, (6.20b)
uy(x,0)=uy(x,1)=0, 0x1. (6.20c)

A solução exata é u(x,y)=sen(πx)sen(πy). Com uma malha uniforme, obtenha uma solução aproximada com o MDF empregando, nas fronteiras com condições de Neumann:

  1. a)

    fórmulas de diferenças finitas de O(h).

  2. b)

    fórmulas de diferenças finitas de O(h2).

Compare a taxa de convergência do erro εh:=𝒖~h𝒖2 entre essas duas formulações.

E. 6.1.5.

Use o MDF para encontrar uma solução aproximada do seguinte problema de Poisson

Δu=1,(x,y)D=(1,1)2, (6.21a)
u=0,(x,y)D. (6.21b)

Usando uma malha uniforme, obtenha soluções para n=10,20,40,80,160 (número de subintervalos). Sua solução está correta? Justifique sua resposta.


Envie seu comentário

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. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!