| | | |

Matemática numérica II

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

5.1 Método de diferenças finitas

Consideramos o seguinte problema linear de valor de contorno (PVC)

u′′+α⁢(x)⁢u′+β⁢(x)⁢u=f⁢(x),a<x<b, (5.4)
u⁢(a)=g, (5.5)
u⁢(b)=h. (5.6)

onde a incógnita é u=u⁢(x) com dada fonte f=f⁢(x) e dados parâmetros g e h.

A aproximação pelo método de diferenças finitas (MDF) de (5.4)-(5.6) surge da substituição das derivadas por Fórmulas de Diferenças Finitas. De forma geral, o método pode ser dividido em três etapas: 1. discretização do domínio, 2. discretização das equações, 3. resolução do problema discreto.

1. Discretização do domínio.

A discretização do domínio é seu particionamento em subintervalos (células computacionais) e pontos (nodos computacionais). Por simplicidade, vamos considerar apenas o caso de um particionamento uniforme. Particionamos o domínio D=[a,b] em n de subintervalos de tamanho de malha

h=b−an, (5.7)

e os nodos da partição podem ser indexados da seguinte forma

xi=a+(i−1)⁢h, (5.8)

com i=1,2,3,…,n+1.

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

Começando por (5.4), em um nodo x=xi, i=2,3,…,n, temos

u′′⁢(xi)+α⁢(xi)⁢u′⁢(xi)+β⁢(xi)⁢u⁢(xi)=f⁢(xi). (5.9)

Podemos substituir a segunda derivada de u pela fórmula de diferenças finitas central de ordem h2

u′′⁢(xi)=u⁢(xi−h)−2⁢u⁢(xi)+u⁢(xi+h)h2⏟D0,h22⁢u⁢(xi)+O⁢(h2). (5.10)

A primeira derivada de u também pode ser substituída pela fórmula de diferenças finitas central de ordem h2

u′⁢(xi)=u⁢(xi+h)−u⁢(xi−h)2⁢h⏟D0,h2⁢u⁢(xi)+O⁢(h2). (5.11)

Agora, denotando ui≈u⁢(xi), temos ui−1≈u⁢(xi−h) e ui+1≈u⁢(xi+h). Substituindo as derivadas pelas fórmulas de diferenças finitas, temos de (5.9) que

(ui−1−2⁢ui+ui+1h2)+α⁢(xi)⁢(ui+1−ui−12⁢h)
+β⁢(xi)⁢ui+O⁢(h2)=f⁢(xi), (5.12)

Rearranjando os termos e desconsiderando o termo do erro de truncamento, obtemos o seguinte sistema de equações lineares

(1h2−αi2⁢h)⁢ui−1+(βi−2h2)⁢ui
+(1h2+αi2⁢h)⁢ui+1=fi, (5.13)

onde, usamos a notação αi=α⁢(xi), βi=β⁢(xi) e fi=f⁢(xi).

Observamos que este sistema consiste em n−1 equações envolvendo as n+1 incógnitas ui, i=1,2,…,n+1. Para fechá-lo, usamos as condições de contorno. De (5.5), temos

u1=g (5.14)

e de (5.6) temos

un+1=h, (5.15)

lembrando que u0≈u⁢(x0) e un≈u⁢(xn).

Por fim, as equações (5.13)-(5.15) formam o seguinte problema discretizado

u1=g, (5.16)
(1h2−αi2⁢h)⁢ui−1+(βi−2h2)⁢ui
+(1h2+αi2⁢h)⁢ui+1=fi, (5.17)
un+1=h, (5.18)

para i=2,3,…,n.

3. Resolução do problema discreto.

O problema discreto (5.16)-(5.18) consiste em um sistema linear de n+1 equações com n+1 incógnitas. Na forma matricial temos

(⁢LABEL:cap_pvc_sec_mdf:eq:sis_mdf⁢)⁢A⁢𝒖=𝒃 (5.19)

onde 𝒖=(u1,u2,…,un+1) é o vetor das incógnitas, 𝒃=(g,f2,f3,…,fn,h). A matriz dos coeficientes é A=[ai,j]i,j=1n+1,n+1 e seus elementos não nulos são

a1,1=1,
ai,i−1=1h2−αi2⁢h, (5.20)
ai,i=βi−2h2, (5.21)
ai,i+1=1h2+αi2⁢h, (5.22)
an+1,n+1=1, (5.23)

para i=2,3,…,n.

A resolução do problema discreto se resume, a resolver o sistema A⁢𝒖=𝒃, o que pode ser feito por qualquer método numérico apropriado.

Exemplo 5.1.1.

Consideramos o seguinte PVC

−u′′=π2⁢sen⁡(π⁢x)⁢, 0<x<1, (5.24)
u⁢(0)=0, (5.25)
u⁢(1)=0. (5.26)
Refer to caption
Figura 5.1: Resultado referente ao Exemplo 5.1.1.

A solução analítica deste problema é u⁢(x)=sen⁡(π⁢x). Usando o MDF como acima, encontramos o problema discreto

u1=0, (5.27)
−1h2⁢ui−1+2h2⁢ui−1h2⁢ui+1=π2⁢sen⁡(π⁢xi), (5.28)
un+1=0, (5.29)

com tamanho de malha h=1/n e nodos xi=(i−1)⁢h indexados por i=1,2,…,n+1.

Tabela 5.1: Resultados referentes ao Exemplo 5.1.1.
h ‖u~−u‖L2
1.0⁢e−1 1.8⁢e−2
5.0⁢e−2 6.5⁢e−3
2.5⁢e−2 2.3⁢e−3
1.0⁢e−3 5.8⁢e−4

Resolvendo este sistema com h=10−1 obtemos a solução numérica apresentada na Figura 5.1. Ainda, na Tabela 5.1 temos a comparação na norma L2 da solução numérica 𝒖~ com a solução analítica 𝒖=(u⁢(xi))i=1n+1 para diferentes escolhas de h.

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

5.1.1 Exercícios

E. 5.1.1.

Considere o PVC

−u′′=π2⁢cos⁡(π⁢x)⁢, 0<x<1, (5.30)
u⁢(0)=1, (5.31)
u⁢(1)=−1. (5.32)

A solução analítica deste problema é u⁢(x)=cos⁡(π⁢x). Use o MDF 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 εabs:=‖𝒖~h−𝒖‖.


h ‖u~−u‖L2
10−1 3.9⁢e−3
10−2 1.2⁢e−4
10−3 3.9⁢e−6
10−4 1.2⁢e−7
E. 5.1.2.

Considere o PVC

−u′′=2,−1<x<1, (5.33)
u⁢(−1)=0, (5.34)
u⁢(1)=0. (5.35)

A solução analítica deste problema é u⁢(x)=1−x2. Use o MDF com n=20 subintervalos na malha e verifique o erro absoluto εabs:=‖𝒖~h−𝒖‖. Por que o erro está próximo precisão de máquina? Justifique sua resposta.


εabs=3.1⁢e−14.

E. 5.1.3.

Considere o seguinte PVC

−u′′+u′=f⁢(x),−1<x<1, (5.36)
u⁢(−1)=0, (5.37)
u′⁢(1)=0, (5.38)

onde

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

Use uma aproximação adequada pelo método de diferenças finitas para obter o valor aproximado de u⁢(0) com precisão de 2 dígitos significativos.


2,7⁢e−1

E. 5.1.4.

Considere o PVC

−u′′=π2⁢cos⁡(π⁢x)⁢, 0<x<1, (5.40)
u⁢(0)=1, (5.41)
u′⁢(1)=0. (5.42)

A solução analítica deste problema é u⁢(x)=cos⁡(π⁢x). Aplique o MDF para computar aproximações numéricas usando a:

  1. a)

    fórmula de diferenças finitas D−,h⁢u⁢(x) no contorno x=1.

  2. b)

    fórmula de diferenças finitas D−,h2⁢u⁢(x) no contorno x=1.

Quais das duas produz o resultado mais preciso? Justifique sua resposta.


b) resultado mais preciso.


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
| | | |