Você está na página 1de 80

Capítulo 9

Elementos Finitos

9.0.8 Introdução
Método de Rayleigh-Ritz
Método de Galerkin
Método dos Elementos Finitos
Equações Integrais
Método dos momentos

9.0.9 Equação Diferenciais Ordinárias


A maneira mais simples de explorar novos horizontes em matemática é iniciar
com um exemplo elementar, como motivação para idéias mais profundas.
Dentro deste espírito, vamos começar, então, com o seguinte problema de
fronteira.
Dadas a equação diferencial não-homogênea
µ ¶ µ ¶
d2 u 3πx 27π 2 3πx
− 2 +u = −6x2 +20x+13−3 sin − sin , 0<x<1
dx 2 4 2
(9.1)
e as condições de fronteira não-homogênea u (0) = 1 e u (1) = −2 vamos
determinar uma solução aproximada pelos métodos de Rayleigh-Ritz, de
Galerkin e dos elementos finitos. Primeiro vamos determinar a solução exata
para servir de comparação com as soluções aproximadas a serem calculadas.
Nem sempre isto é possível. Aqui porque o problema é muito simples.De
fato, há várias maneiras de solucioná-lo. A mais popular é determinar a
solução da equação homogênea e uma solução particular da equação não-
homogênea em seguida adicioná-las para se obter a solução geral.

563
564 CAPÍTULO 9. ELEMENTOS FINITOS

Assim, a solução da equação homogênea


d2 u0
− + u0 = 0
dx2
é
u0 (x) = Aex + Be−x ,
e uma solução particular da equação diferencial (9.1) é
µ ¶
2 3πx
up = −6x + 20x + 1 − 3 sin
2
Portanto a solução geral da equação (9.1) é
µ ¶
x −x 2 3πx
u (x) = u0 + up = Ae + Be − 6x + 20x + 1 − 3 sin
2
Para se determinar as constantes A e B substitui-se as duas condições
de fronteiras u (0) = 1 e u(1) = −2 resultando no seguinte sistema linear

A + B = 0,
Ae + Be−1 = −20.

Resolvendo o sistema tem-se


−20 20
A= e B= .
e − e−1 e − e−1
Substituindo estes valores de A e B na solução geral, resulta
µ ¶
ex − e−x 2 3πx
u (x) = −20 − 6x + 20x + 1 − 3 sin
e − e−1 2
ou equivalentemente
µ ¶
2 3πx
u (x) = −6x + 20x + 1 − 3 sin − 20 csch 1 sinh x (9.2)
2
Note que as condições de fronteira não-homogênea foram aplicadas após
a obtenção da solução geral da equação diferencial.
Em muitas situações, principalmente quando se procura soluções aprox-
imadas por métodos numéricos, é preferível substituir o problema original,
com condições de fronteiras não-homogêneas, por um outro problema equiv-
alente com condições de fronteiras homogêneas. Vejamos, então, como pro-
ceder. Escolhemos de antemão uma função auxiliar ua (x) cuja única exigên-
cia é que satisfaça as condições de fronteiras não homogêneas ua (0) = 1 e
565

ua (1) = −2. A função ua (x) = −3x2 + 1 é uma delas Outras funções pode-
riam ser adotadas, mas vamos ficar com esta que é uma das mais simples.
Tomando-se uh (x) = u (x) − ua (x), o problema original (9.1) se reduz à
equação diferencial
µ ¶ µ ¶
d2 uh 2 3πx 27π 2 3πx
− 2 +uh = −3x +20x+6−3 sin − sin , 0<x<1
dx 2 4 2
(9.3)
com as condições de fronteiras homogêneas uh (0) = 0 e uh (1) = 0. Uma vez
resolvido este problema com condições de fronteira homogênea, a solução do
problema original é alcançada facilmente por meio de u (x) = ua (x)+uh (x).
Repetindo o mesmo método usado acima podemos ver que a função
µ ¶
2 3πx
uhp = −3x + 20x − 3 sin
2

é uma solução particular da equação não homogênea e

uh0 (x) = Aex + Be−x

é a solução da equação homogênea. Logo a solução geral da equação difer-


encial não homogênea (9.3) tem a forma
µ ¶
x −x 2 3πx
uh0 (x) = Ae + Be − 3x + 20x − 3 sin
2

Empregando nesta expressão as condições de fronteira, uh0 (0) = uh0 (1) =


0, chega-se ao sistema

A+B = 0
Ae + Be−1 = −20

cuja solução é

B = −A
−20
A =
e − e−1
Substituindo estes valores de A e B na solução geral, obtém-se a solução
u0 (x) do problema com condições de fronteira homogêneas,
µ ¶
2 3πx
uh (x) = −3x + 20x − 3 sin − 20 Csch (1) Sinh (x) (9.4)
2
566 CAPÍTULO 9. ELEMENTOS FINITOS

que adicionada à função auxiliar ua (x) = −3x2 + 1 resulta na solução do


problema original com condições de fronteiras não-homogêneas. Portanto,
podemos escrever,
µ ¶
2 3πx
u (x) = −6x + 20x + 1 − 3 sin − 20 csch 1 sinh x (9.5)
2
Como não podia ser diferente, as soluções (9.2) e (9.4) são absolutamente
idênticas.
A figura abaixo ilustra os gráficos das três funções: a auxiliar ua (x), a
intermediária uh (x) e a função final u (x) .

In[188]:=
ua = -3 x^2 + 1;
uh = -3 x^2 + 20 x-3 Sin[3 Pi x/2] -20 Csch[1] Sinh[x];
u = uh + ua;
Plot[{ua, uh, u}, {x, 0, 1},
PlotRange -> {-3, 2}, TextStyle -> {FontSize -> 9},
PlotStyle -> {Dashing[{0.03, 0.03}],
Dashing[{0.01, 0.01}], Dashing[{0.0, 0.0}]},
Epilog -> {Text[’’u(x)’’, {0.99, -1}],
Text[’’u (x)’’, {0.5, 0.6}], Text[’’a’’, {0.48, 0.52}],
Text[’’u (x)’’, {0.94, 1}], Text[’’h’’, {0.918, 0.92}]}];

Todo este trabalho que acabamos de realizar tem duas finalidades. A


primeira é convencer o leitor que não há perda de generalidade em substi-
tuir um problema com condições de fronteira não-homogênea por um outro
equivalente com condições de fronteira homogênea. A segunda, é dispor da
solução exata de um problema piloto que servirá de padrão para testes de
soluções aproximadas por meio de métodos numéricos.
Dito isto, vamos iniciar com o método numérico conhecido como o método
de Rayleigh-Ritz.

9.0.10 Método de Rayleigh-Ritz


Em virtude da observação feita acima acima, vamos nos limitar ao prob-
lema piloto com condições de fronteira homogênea. Assim, dadas a equação
diferencial
µ ¶ µ ¶
d2 u 3πx 27π 2 3πx
− 2 + u = −3x2 + 20x − 3 sin − sin , 0<x<1
dx 2 4 2
(9.6)
567

1 uo (x)
ua (x)

0.2 0.4 0.6 0.8 1

-1 u(x)

-2

-3

Figura 9.1:

e as condições de fronteira u (0) = u (1) = 0, nosso objetivo agora é deter-


minar uma solução aproximada para este problema.
Na linguagem dos operadores lineares podemos reescrever a equação
diferencial (9.6) da seguinte maneira
Lu = h,
em que o operador linear
d2
L=− + 1, (9.7)
dx2 © ª
é simétrico e positivo definido no espaço euclidiano E = u (x) ∈ C 2 [0, 1] : u (0) = u (1) = 0
em conformidade com o Exemplo 7.43 e h designa a função
µ ¶ µ ¶
2 3πx 27π 2 3πx
h (x) = −3x + 20x − 3 sin − sin .
2 4 2
Sendo L um operador positivo definido, ele induz em E, de acordo com
o Exemplo 7.47, un novo produto
Z 1
£ 0 ¤
hLu, vi = hu, viL = u (x) v 0 (x) + u (x) v (x) dx
0
O método numérico de Rayleigh-Ritz nada mais é do uma aplicação
direta do Teorema da Projeção
n
X ­ ®
φi , φj αj = < φi , h >L (9.8)
j=1
568 CAPÍTULO 9. ELEMENTOS FINITOS

em termo deste novo produto interno. Geometricamente podemos dizer que


o vetor un = α1 φ1 + α2 φ2 + . . . + αn φn é a projeção da solução u (x) num
subespaço WL ⊂ E de dimensão finita n.
A implementação computacional do método de Raylaigh-Ritz por meio
do sistema Mathematica é muito simples como pode ser vista nos exemplos
a seguir.
Para começar devemos definir os n vetores linearmente independentes
φi que geram o subespaço WL de dimensão finita n, no qual se busca a
solução aproximada uh (x) Note que φi formam uma base de WL . A única
exigência na definição desses vetores é que eles devem, necessariamente, sat-
isfazer a seguinte condição: φi (0) = 0 e φi (1) = 0. Isto garante que o vetor
identicamente zero pertença ao subespaço WL . Note que se as condições de
fronteira não fossem homogêneas, não haveria garantia do vetor zero per-
tencer ao conjunto WL e conseqüentemente este poderia deixar de ser um
subespaço. Isto impossibilitaria a aplicação do Teorema da Projeção. Com
essas observações, espero que agora esteja claro ao leitor porque investimos
tanto tempo com esta questão de fronteira homogênea e não-homogênea no
início desta seção.
O vetores φi = xi (1 − x), ı́ = 1, 2 . . . n, satisfazem as condições φi (0) = 0
e φi (1) = 0 e portanto geram o subespaço WL ⊂ E.
De posse dos vetores φi da base, vamos traduzir em linguagem Mathe-
matica a fórmula (9.8). Assim,

In[1]:= phi[i_] = x^i (1.0 - x);


dphi[i_] = D[phi[i], {x, 1}];
mGramm[n_, phi_, dphi_]:= Module[{},
Table[NIntegrate[dphi[i] dphi[j] + phi[i] phi[j], {x, 0, 1}], {i,
n},{j, n}]];
vh[n_, phi_, h]:= Module[{},
Table[NIntegrate[phi h[i], {x, 0, 1}], {i, n}]]

Sabendo-se que o vetor (função) fonte h (x) é expresso por

In[1]:= h[x_]:= -3x^2 + 20x + 6 - 3 Sin[3 Pi x/2] - 27Pi^2/4 Sin[3Pi x/2];

vamos calcular α1 e α2 e un2 = α1 φ1 + α2 φ2 , isto é, uma aproximação


da solução com apenas dois vetores da base. Assim,
In[3]:=
h[x_]:= -3x^2 + 20x + 6 - 3 Sin[3 Pi x/2] - 27Pi^2/4 Sin[3Pi
x/2];
569

4
phi
2

0.2 0.4 0.6 0.8 1

-2 phi
1

-4

-6

Figura 9.2:

n = 2;
alpha = LinearSolve[mGramm[n, phi, dphi], vh[n, phi, h]]
un2 = Apply[Plus, alpha.Table[phi[i], {i, n}]];

Out[142]= {-19.1565, 27.682}

Para efeito de comparação com a solução exata uh (x) , (9.4), vamos


traçar os dois vetores da base e a proximação obtida com este dois vetores.

In[4]:= uh[x_]:= -3x^2 + 20x - 3 Sin[3 Pi x/2] - 20 Csch[1] Sinh[x];


Plot[{alpha[[1]] phi[1],alpha[[2]] phi[2],
un2, uh[x]}, {x, 0, 1},
PlotStyle -> {Dashing[{0.03, 0.03}],
Dashing[{0.03, 0.03}], Dashing[{0.01, 0.01}],
Dashing[{0, 0}]},
Epilog ->
{Text[\[Phi], {0.94, -2}],Text[1, {0.96, -2.3}],
Text[\[Phi], {0.88, 3.3}],Text[2, {0.9, 3}]},
PlotRange ->{-6, 6}]

Repetindo, agora com três vetores da base,

In[142]:=
In[3]:= n = 3;
570 CAPÍTULO 9. ELEMENTOS FINITOS

phi
2 3

0.2 0.4 0.6 0.8 1

-1 phi
2

-2 phi
1

-3

-4

Figura 9.3:

h[x_]:= -3x^2 + 20x + 6 - 3 Sin[3 Pi x/2] - 27Pi^2/4 Sin[3Pi


x/2];
alpha = LinearSolve[mGramm[n, phi, dphi], vh[n, phi, h]]
un3 = Apply[Plus, alpha.Table[phi[i], {i, n}]];
Out[142]= {-12.6933, -4.42516, 32.1071}

CD - ROM
In[4]:=
Finalmente usando-se quatro vetores da base,.

In[3]:= n = 4;
h[x_]:= -3x^2 + 20x + 6 - 3 Sin[3 Pi x/2] - 27Pi^2/4 Sin[3Pi
x/2];
alpha = LinearSolve[mGramm[n, phi, dphi], vh[n, phi, h]]
un4 = Apply[Plus, alpha.Table[phi[i], {i, n}]];
Out[144]= {-10.4277, -24.7546, 79.5016, -31.5963}

CD - ROM
In[4]:=
Note que com quatro vetores a aproximação da solução já é execelente.
É claro que aumentando o número de vetores da base a solução aproximada
torna-se cada vez mais próxima da solução exata.
571

10

4
phi
3
2

0.2 0.4 0.6 0.8 1

-2
phi1 phi
4
-4 phi2

-6

Figura 9.4:

9.0.11 Método dos Resíduos Ponderados


Seja W ⊂ E o subespaço euclidiano, munido do produto interno de E, gerado
por n vetores linearmente independentes φi 1 . E seja un = α1 φ1 + α2 φ2 +
. . . + αn φn um vetor arbitrário de W.
O nosso objetivo é fazer com que a função un seja uma aproximação
da solução (exata) do problema. É óbvio que sendo un uma aproximação
da solução, a sua substituição em (9.6) resulta num erro (resíduo) (x) .
Simbolicamente,
d2 un
− 2 + un (x) − h (x) = (x) . (9.9)
dx
A função aproximada un será tanto melhor quanto menor for o resíduo
(x). Para minimizá-lo vamos considerar um outro conjunto de n funções
linearmente independentes ψ i , denominadas de funções peso, pertencentes
ao subespaço W. A idéia por trás do método dos resíduos ponderados, con-
hecido também como método dos momentos [?], é impor que cada um desses
vetores peso seja perpendiculares ao resíduo (x) .Isto significa, então que,

h , ψ i i = 0, i = 1, 2 . . . n,
1
U 1 Note que o produto interno de W é o mesmo produto interno de E, isto é hf, gi =
f (x) g (x) dx enquanto que o produto interno de WL é o produto interno definido por
0 U1
hf, giL = 0 [f 0 (x) g0 (x) + f (x) g (x)] dx.
572 CAPÍTULO 9. ELEMENTOS FINITOS

ou ainda, em virtude de (9.9),


Z 1∙ 2 ¸
d un
− 2 + un (x) − h (x) ψ i (x) dx = 0, (9.10)
0 dx
¡ ¢
em que h (x) = −3x2 + 20x − 3 sin (3πx/2) − 27π 2 /4 sin 3πx/2.
Ao fazermos h , ψ i i = 0 estamos efetivamente forçando o resíduo (x) se
anular, pois o único vetor normal a todos os vetores ψ i é o vetor nulo. Em
conseqüência, o vetor un tende para a solução exata.
Antes de prosseguirmos, vamos reescrever esta integral numa forma mais
apropriada. Aplicando duas vezes a fórmula da integração por partes,
Z b Z b
udv = uv|ba − vdu,
a a

no primeiro termo de (9.10), podemos escrever


Z 1 2 Z 1
d un
− ψ (x) dx =
2 i
u0n ψ 0i (x) dx.
0 dx 0

e por conseqüência a integral (9.10) se escreve como,


Z 1
£ 0 0 ¤
un ψ i (x) + un (x) − h (x) ψ i (x) dx = 0.
0

Substituindo un = α1 φ1 + α2 φ2 + . . . + αn φn nesta integral, obtém-se um


sistema de equações lineares de ordem n assim especificado
n
X Z 1£ Z 1
¤
αj φ0j (x) ψ 0i (x) + φj (x) ψ i (x) dx = h (x) ψ i (x) dx, i = 1, 2 . . . n
j=1 0 0
(9.11)
Resolvendo este sistema de equações obtém-se os αi e por conseguinte a
aproximação da solução un = α1 φ1 + α2 φ2 + . . . + αn φn .
Continuando com o mesmo problema piloto e a mesma base {φi } usados
no método de Rayleigh-Ritz, vamos agora encontrar uma solução aproxi-
mada pelo método dos resíduos ponderados. Usaremos o conjunto de vetores
linearmente independentes ψ i = x(i−1)/2 sin πx, pertencentes a W, para con-
struir o sistema de equações lineares (9.11), assim implementado no sistema
Mathematica,

In[97]:=
phi[i_] = x^i (1.0 - x);
573

4
phi
2

0.2 0.4 0.6 0.8 1

-2 phi
1

-4

-6

Figura 9.5:

psi[i_] = Sqrt[x]^(i-1) Sin[Pi x];


dphi[i_] = D[phi[i], {x, 1}];
dpsi[i_] = D[psi[i], {x, 1}];
mRP[n_, phi_, dphi_, psi_, dpsi_]:= Module[{},
Table[NIntegrate[dphi[j] dpsi[i] + phi[j] psi[i], {x, 0, 1}], {i, n},
{j, n}]];
vh[n_, psi_,h_]:=
Module[{}, Table[NIntegrate[psi[i] h[x], {x, 0, 1}], {i, n}]]

A exemplo do que fizemos no método de Rayleigh-Ritz, vamos agora


calcular uma aproximação da solução com apenas dois vetores da base

In[59]:=
h[x_]:= -3x^2 + 20x + 6 - 3 Sin[3 Pi x/2] - 27Pi^2/4 Sin[3Pi x/2];
n = 2;
alpha = LinearSolve[matRP[n, phi, dphi, psi, dpsi], vh[n, psi, h]]
un2 = Apply[Plus, alpha.Table[phi[i], {i, n}]];
Out[59]= {-18.5248, 25.4817}

Os gráficos dos vetores α1 φ1 e α2 φ2 , da solução aproximada un2 (x) =


α1 φ1 + α2 φ2 e da solução são exibidos a seguir

CD - ROM
In[4]:=
574 CAPÍTULO 9. ELEMENTOS FINITOS

phi
2 3

0.2 0.4 0.6 0.8 1

-1
phi
2
-2 phi
1

-3

-4

Figura 9.6:

Repetindo com três vetores da base,

CD - ROM
In[4]:=

Finalmente, com quatro vetores da base,

CD - ROM
In[4]:=

Observando esses gráficos nota-se que os dois métodos fornecem prati-


camente os mesmos resultados.

9.0.12 Método de Galerkin


O Método de Galerkin é um caso especial do método dos resíduos ponder-
ados, em que as funções peso ψ i são as próprias funções base φi . Assim o
sistema de equações lineares (9.11) se converte para
n
X Z 1£ Z 1
¤
αj φ0j (x) φ0i (x) + φj (x) φi (x) dx = h (x) φi (x) dx, i = 1, 2 . . . n.
j=1 0 0
(9.12)
Observe que este sistema de equações lineares é absolutamente idêntico
ao sistema de equações associado ao método de Rayleigh-Ritz. Prova-se que
se o operador L é simétrico e positivo definido os métodos de Rayleigh-Ritz
e Galerkin produzem o mesmo sistema de equações lineares [?], [74]. Este
575

10

4
phi3
2

0.2 0.4 0.6 0.8 1

-2 phi4
phi
1
-4 phi2

-6

Figura 9.7:

x0 x1 x2 xj x n -2 xn -1 xn
Figura 9.8:

é exatamente o caso do operador L (9.7) em questão. Se por outro lado o


operador L for não simétrico ou positivo indefinido o método de Rayleigh-
Ritz não faz sentido enquanto que o método de Galerkin é perfeitamente
válido. Neste sentido, o método de Galerkin é mais amplo do que o de
Rayleigh-Ritz.[?], [74].
Para mostrar a funcionalidade do método de Galerkin retornemos ao
nosso problema piloto, mas desta feita, empregando uma nova base do sube-
spaço W. Não teria sentido usar a mesma base φi (x) = xi (x − 1) pois
os resultados seriam absolutamente idênticos os já obtidos pelo método de
Rayleigh-Ritz. Assim vamos escolher uma nova base.
Para defini-la vamos subdividir o domínio [0, 1] em n subintervalos não
necessariamente iguais.

Tomando dois a dois (contíguos) desses subintervalos vamos construir as


576 CAPÍTULO 9. ELEMENTOS FINITOS

1 1 1 1
0.8 0.8 0.8 0.8
0.6 0.6 0.6 0.6
0.4 0.4 0.4 0.4
0.2 0.2 0.2 0.2
0.2 0.4 0.6 0.8 1 0.2 0.4 0.6 0.8 1 0.2 0.4 0.6 0.8 1 0.2 0.4 0.6 0.8 1

Figura 9.9:

(n − 1) funções φi (x) da seguinte maneira.




⎪ 0 x ≤ xi−1

(x − xi−1 ) / (xi − xi−1 ) xi−1 ≤ x ≤ xi
φi (x) = , i = 1, 2, . . . n − 1

⎪ (x − x) / (xi+1 − xi ) xi ≤ x ≤ xi+1
⎩ i+1
0 xi+1 ≤ x
(9.13)

Em linguagem Mathematica essas funções bases são expressas do seguinte


modo,
In[68]:= phi[xi_, xj_, xk_, x_]:= Module[{},
Which[xi <= x <= xj, (x - xi)/(xj - xi),
xj <= x <= xk, (xk - x)/(xk - xj), True, 0.0]]

Vejamos, então, o formato dessas funções base. Por exemplo, subdi-


vidindo o intervalo [0, 1] em cinco subintervalos, as quatro funções base são
representadas graficamente por

In[67]:= phiPlot[x1_, x2_, x3_]:= Module[{},


Plot[phi[x1, x2, x3, x], {x, 0, 1},
TextStyle -> {FontSize -> 9.0},
PlotStyle -> {{Thickness[0.03]}},
DisplayFunction -> Identity]];
Show[GraphicsArray[{phiPlot[0, 1/5, 2/5],
phiPlot[1/5, 2/5, 3/5], phiPlot[2/5, 3/5, 4/5]},
phiPlot[3/5, 4/5, 5/5]}],
DisplayFunction->$DisplayFunction];

Analogamente, subdividindo em nove subintervalo, ter-se-ia,


577

1 1 1 1
0.8 0.8 0.8 0.8
0.6 0.6 0.6 0.6
0.4 0.4 0.4 0.4
0.2 0.2 0.2 0.2
0.20.40.60.8 1 0.20.40.60.8 1 0.20.40.60.8 1 0.20.40.60.8 1

1 1 1 1
0.8 0.8 0.8 0.8
0.6 0.6 0.6 0.6
0.4 0.4 0.4 0.4
0.2 0.2 0.2 0.2
0.20.40.60.8 1 0.20.40.60.8 1 0.20.40.60.8 1 0.20.40.60.8 1

Figura 9.10:

CD - ROM
In[4]:=

Não é de se estranhar que estas funções base são denominadas de funções


chapéu (hat functions).
De posse das funções base vamos agora aplicar o método de Galerkin
para determinar uma solução aproximada do nosso problema piloto. Para
iniciar, vamos subdividir o intervalo [0, 1] em sete subintervalos conforme a
seguinte partição: {0, 1/6, 1/3, 1/2, 2/3, 3/4, 5/6, 11/12, 1}
Nossa próxima etapa é substituir as funções base (9.13) e suas derivadas



⎪ 0 x ≤ xi−1

1/ (xi − xi−1 ) xi−1 ≤ x ≤ xi
φ0i (x) = , i = 1, 2, . . . n − 1

⎪ −1/ (x i+1 − xi ) xi ≤ x ≤ xi+1

0 xi+1 ≤ x

na expressão (9.12). A esta altura poderíamos evocar o Mathematica


para construir e resover o sistema de equações lineares, a exemplo do que
foi feito nos casos anteriores. Entretanto, por razões pedagógicas, é mais
instrutivo construir o sistema de equações.passo a paaso. Assim, podemos
578 CAPÍTULO 9. ELEMENTOS FINITOS

escrever
n
X Z 1£ ¤
αj φ0j (x) φ0i (x) + φj (x) φi (x) dx
j=1 0
⎛ ⎞⎛ ⎞
a11 a12 0 0 0 0 0 α1
⎜ a21 a22 a23 0 0 0 0 ⎟⎜ α2 ⎟
⎜ ⎟⎜ ⎟
⎜ 0 a32 a33 a34 0 0 0 ⎟⎜ α3 ⎟
⎜ ⎟⎜ ⎟
= ⎜
⎜ 0 0 a43 a44 a45 0 0 ⎟⎜
⎟⎜ α4 ⎟
⎟ (9.14)
⎜ 0 0 0 a54 a55 a56 0 ⎟⎜ α5 ⎟
⎜ ⎟⎜ ⎟
⎝ 0 0 0 0 a65 a66 a67 ⎠⎝ α6 ⎠
0 0 0 0 0 a76 a77 α7
em que os elementos da diagonal principal são
Z xi µ ¶2 Z xi+1 µ ¶2
1 −1
aii = dx + dx
xi−1 xi − xi−1 xi xi+1 − xi
Z xi µ ¶ Z xi+1 µ ¶
x − xi−1 2 xi+1 − x 2
+ dx + dx
xi−1 xi − xi−1 xi xi+1 − xi
µ ¶ µ ¶
1 1 xi − xi−1 xi+1 − xi
= + + + , i = 1, 2 . . . 7
xi − xi−1 xi+1 − xi 3 3
e os elementos das duas diagonais laterais são
Z xi+1 µ ¶µ ¶
−1 1
ai,i+1 = ai+1,i = dx
xi xi+1 − xi xi+1 − xi
Z xi+1 µ ¶µ ¶
xi+1 − x x − xi
+ dx
xi xi+1 − xi xi+1 − xi
−1 xi+1 − xi
= + , i = 1, 2 . . . 6
xi+1 − xi 6
Procedendo do mesmo modo, podemos escrever o lado direito de (9.12)
como segue,
Z 1
h (x) φi (x) dx (9.15)
Z0 xi µ ¶ Z xi+1 µ ¶
x − xi−1 xi+1 − x
= h (x) dx + h (x) dx, i = 1, (9.16)
2...7
xi−1 xi − xi−1 xi xi+1 − xi
Os elementos da matriz (9.14) são quase todos iguais a zero, com exceção
da diagonal principal e das duas diagonais que ficam acima e a baixo da di-
agonal principal. Matrizes deste tipo são conhecidas como matrizes tridiag-
onais. O pacote LinearAlgebra‘Tridiagonal‘ do Standard Add-on Packages
579

trata matrizes tridiagonais com bastante eficiência. Apenas as três diag-


onais, em forma de lista, precisam ser conhecidas para qualquer tipo de
cálculo com matrizes tridiagonais. O código Galerkin1D[expr], a seguir, im-
plementa a matriz (9.14) e o vetor (9.16) de maneira apropriada para os
cálculos a serem efetuados mais adiante.

In[95]:= << LinearAlgebra‘Tridiagonal‘

In[5]:= Galerkin1D[x_]:= Module[{n = Length[x]},


a = Table[1./(x[[i + 1]] - x[[i]]) +
1./(x[[i + 2]] - x[[i + 1]]) +
(x[[i + 1]] - x[[i]])/3. +
(x[[i + 2]] - x[[i + 1]])/3.,
{i, n - 2}];
b = Table[-1./(x[[i + 2]] - x[[i + 1]]) +
(x[[i + 2]] - x[[i + 1]])/6.,
{i, n - 3}];
c = Table[NIntegrate[h[y](y - x[[i]])/(x[[i + 1]] - x[[i]]),
{y, x[[i]], x[[i + 1]]}] +
NIntegrate[h[y](x[[i + 2]] - y)/(x[[i + 2]] - x[[i + 1]]),
{y, x[[i + 1]], x[[i + 2]]}],
{i, n - 2}];]

In[95]:= h[y_]:= -3 y^2 + 20 y + 6 - 3 Sin[3 Pi y/2] - 27 Pi^2/4 Sin[3 Pi y/2]


x = {0, 1, 2, 3, 4, 4.5, 5, 5.5, 6}/6;
Galerkin1D[x, h]
alpha = TridiagonalSolve[b, a, b, c];
alpha = Prepend[Append[alpha, 0], 0]
Out[96]= {0,-1.72522, -2.4517, -1.74535, -0.208271, 0.463883, 0.822154, 0.705174,
0}

In[134]:= Clear[x]
uh[x_]:= -3 x^2 + 20 x - 3 Sin[3 Pi x/2] - 20 Csch[1] Sinh[x];
plotAlpha[i_, x_]:= Module[{ },
Plot[alpha[[i + 1]] phi[x[[i]], x[[i + 1]], x[[i + 2]], y],
{y, 0, 1},
PlotStyle -> {Dashing[{0.01, 0.01}]},
DisplayFunction -> Identity]]
x = {0, 1, 2, 3, 4, 4.5, 5, 5.5, 6}/6;
Show[{Plot[uh[x], {x, 0, 1},
580 CAPÍTULO 9. ELEMENTOS FINITOS

0.5

0.2 0.4 0.6 0.8 1

-0.5

-1

-1.5

-2

-2.5

-3

Figura 9.11:

PlotRange -> {-3,1},


TextStyle -> {FontSize -> 7.0},
DisplayFunction -> Identity],
Table[plotAlpha[i, x], {i, 1, 7}],
ListPlot[Transpose[{x, alpha}],
PlotJoined -> True,
PlotStyle -> {Dashing[{0.01, 0.01}]},
DisplayFunction -> Identity],
ListPlot[Transpose[{x, alpha}],
PlotStyle -> PointSize[0.015],
DisplayFunction -> Identity]},
DisplayFunction -> $DisplayFunction];

x = {0, 1, 2, 3, 4, 5, 6, 7, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12}/ 12;


CD - ROM
In[4]:=

x = Table[i, {i, 0, 48}]/48;

CD - ROM
In[4]:=
581

0.5

0.2 0.4 0.6 0.8 1

-0.5

-1

-1.5

-2

-2.5

-3

Figura 9.12:

0.5

0.2 0.4 0.6 0.8 1

-0.5

-1

-1.5

-2

-2.5

-3

Figura 9.13:
582 CAPÍTULO 9. ELEMENTOS FINITOS

9.0.13 Método dos Elementos Finitos


O método dos elementos finitos é simplesmente um algoritmo numérico efi-
ciente, baseado no método de Galerkin, para se calcular soluções aproxi-
madas de equações diferenciais. Grosso modo, o método dos elementos fini-
tos é uma aplicação do método de Galerkin restrita a uma classe de funções
base bem específicas, resultando num algoritmo computacionalmente sim-
ples e eficiente no computador. Sem o computador, o método dos elementos
finitos não existiria.
Seguindo a mesma metodologia empregada nas subseções anteriores, é
conveniente introduzir o método dos elementos finitos com a ajuda de um
problema piloto simples, últil e interessante. Para tanto vamos escolher
um problema de fronteira um pouquinho mais sofisticado do que o usado
anteriormente. Seja, portanto, a equação diferencial elíptica
µ ¶
d du du
− k (x) + p (x) + q (x) u = h (x) , 0 < x < L, (9.17)
dx dx dx
com as condições de Dirichlet não-homogêneas,
u (0) = u0, u (L) = uL , (9.18)
em que k (x) dudx é contínua em todo x ∈ (0, L). Esta última hipótese é
fundamental para o funcionamento do método dos elementos finitos.
A função k (x) é considerada positiva em 0 ≤ x ≤ L.Se b (x) for identica-
mente nula a equação (9.17) pode ser interpretada como sendo a equação do
potencial elétrico unidimensional, em que k (x) representa ou a permissivi-
dade ou a condutividade elétrica do meio. Por isso k (x) é uma função pos-
itiva. Propriedades físicas sempre são funções positivas. No oitavo capítulo
veremos várias aplicações desse problema de fronteira em eletromagnetismo.
Note que o problema piloto empregado nas quatro seções anteriores é um
caso especial deste, em que k (x) ≡ 1 e b (x) ≡ 1 com condições de Dirichlet
homogêneas.
O primeiro passo para implementar o algoritmo dos elementos finitos
é subdividir o domínio [0, L] em N subintervalos Ωe não necessariamente
iguais, como ilustra a Figura ()

1 2 e N

x 11 = 0 x 21 x e1 x e2 x 1N x 2N = L
Figura 9.14:
583

1 2

1 1


x e1 e x e2

Figura 9.15:

Se fossemos usar diretamente o método de Galerkin, como no caso ante-


rior, o próximo passo seria definir N −2 funções base do tipo funções chapéu
(9.13). No método dos elementos finitos não vamos fazer isto. Ao contrário,
vamos nos concentrar num único subintervalo, escolhido arbitrariamente, e
definir duas funções bases muito simples restritas apenas a este subinter-
valo. Portanto, seja o subintervalo arbitrário Ωe de comprimento xe2 − xe1
juntamente com as duas funções base assim definidas,

ξ − xe1
ψ e1 (ξ) = 1 − , (9.19)
xe2 − xe1

ξ − xe1
ψ e2 (ξ) = (9.20)
xe2 − xe1

e cujos gráficos têm o seguinte formato


Note que as funções base ψ e1 e ψ e2 são funções lineares que variam de
zero a um. O subintervalo Ωe junto com as funções base ψ e1 e ψ e2 são de-
nominados conjuntamente de elemento. Assim, um elemento não é apenas
o subintervalo, isolado, mas os três, o subintervalo e as duas funções base.
Para simplificar a notação vamos denominar, também, o elemento por Ωe .
De posse das funções base podemos adiantar que no elemento Ωe a função
u (x), suposta solução de (9.17 - 9.18), será aproximada por

2
X
u (ξ) = uej ψ ej (9.21)
j=1

O nosso objetivo final é calcular ue1 e ue2 para todos os N elementos que
compõem o domínio [0, L] e assim, obter uma boa aproximação de u (x).
Mas antes vamos nos concentrar num elemento genérico Ωe .
584 CAPÍTULO 9. ELEMENTOS FINITOS

Aplicando o método de Galerkin no elemento Ωe vem


Z xe2 µ µ ¶ ¶
e d du du
ψi − k (ξ) + p (ξ) + q (ξ) u − h (ξ) dξ = 0, i = 1, 2
xe1 dξ dξ dξ
(9.22)
ou ainda, separando as integrais,
Z xe µ ¶ Z xe Z xe
e d du du
2 2 2
e
− ψi k (ξ) dξ + ψ i p (ξ) dξ + ψ ei q (ξ) udξ
x1e dξ dξ e
x1 dξ e
x1
Z xe
2
= ψ ei h (ξ) dξ, i = 1, 2, (9.23)
xe1

Usando-se a identidade
µ ¶ µ ¶
e d du dψ ei du d e du
ψi k (ξ) = −k (ξ) + ψ i k (ξ) , (9.24)
dξ dξ dξ dξ dξ dξ
podemos escrever a primeira integral de (9.23) assim,
Z xe µ ¶ Z xe Z xe µ ¶
2
e d du 2 dψ ei du 2 d
e du
− ψi k (ξ) dξ = k (ξ) dξ − ψ i k (ξ) dξ
xe1 dξ dξ xe1 dξ dξ xe1 dξ dξ
(9.25)
ou melhor ainda, assim
Z xe µ ¶ Z xe ¯ e
2
e d du 2 dψ ei du e du ¯¯x2
− ψi k (ξ) dξ = k (ξ) dξ − ψ i k (x) ¯ (9.26)
xe1 dξ dξ xe1 dξ dξ dx xe
1

em que foi empregado o Teorema Fundamental do Cálculo


Z xe µ ¶ ¯ e
2 d
e du e du ¯¯x2
ψ i k (ξ) dξ = ψ i k (ξ) ¯ . (9.27)
xe1 dξ dξ dξ xe
1

Voltando à equação (9.23) e substituindo a primeira integral por (9.26)


obtemos
Z xe Z xe Z xe
2 dψ ei du 2
e du 2
k (ξ) dx + ψ i p (ξ) dξ + ψ ei q (ξ) udξ
xe1 dξ dξ xe1 dξ xe1
Z xe ¯ e
2 du ¯x2
= ψ ei h (ξ) dξ + ψ ei k (ξ) ¯¯ , i = 1, 2 (9.28)
xe1 dξ xe
1

Antes de prosseguirmos vamos parar um pouco e refletir sobre essas


últimas etapas de cálculo que acabamos de efetuar. A equação2 (9.22) rep-
resenta, simplesmente, h , ψ i i = 0, i = 1, 2, que, por sua vez, corresponde
2
Na verdade são duas equações, uma para cada ψ i , i = 1, 2.
585

à minimização do resíduo, com respeito à base {ψ 1 , ψ 2 }, pelo método de


Galerkin. A equação (9.23) logo em seguida, nada mais é que o desdo-
bramento da integral (9.22) em três integrais separadas.A próxima etapa é
crucial para o método dos elementos finitos. Eu diria até que ela é a essência
do método dos elementos finitos. Aplicando-se a integração por partes (9.25)
e o Teorema Fundamental do Cálculo (9.27) a primeira integral de (9.22) se
desdobra em duas parcelas (9.26) . Na primeira, a função k (x) passa para
fora da derivada, um expediente muito importante como veremos mais adi-
ante.A segunda parcela se resume a dois termos isolados, na fronteira ∂Ωe
do elemento. Esses dois termos, um para cada extremidade do elemento,
servirão de cola para colar elementos adjacentes e com isso proporcionar a
juntção de todos os elementos para resolver o problema como um todo. Com
essas observações a equação (9.22) é substituída por (9.28).
Note que (9.28) são, na realidade, duas equações. Substituindo (9.21)
em (9.28) obtém-se o seguinte sistema de duas equações lineares
2
ÃZ e Z xe Z xe !
X x2
dψ ei dψ j
e 2 dψ e
j 2
k (ξ) dξ + p (ξ) ψ ei dξ + q (ξ) ψ ei ψ ej dξ uj
e
x1 dξ dξ x1e dξ e
x1
j=1
Z xe ¯xe
2 du ¯ 2
= ψ ei h (ξ) dξ + ψ ei k (ξ) ¯¯ , i = 1, 2
xe1 dξ xe
1

Na forma matricial, podemos reescrever


2
X ¯ e
du ¯¯x2
meij uj = fie + ψ ei k (ξ) , i = 1, 2 (9.29)
dξ ¯xe
j=1 1

em que os termos da matriz meij do elemento Ωe são expressos por


Z xe2 e Z xe2 Z xe2
dψe dψ j dψ ej
meij = k (ξ) i dx + p (ξ) ψ ei dξ + q (x) ψ ei ψ ej dx (9.30)
xe1 dx dx xe1 dξ xe1

e o vetor fonte fie por


Z xe2
¯ e
du ¯¯x2
fie = ψ ei h (x) dx + ψ ei k (ξ) (9.31)
xe1 dξ ¯xe
1

Empregando-se na matriz meij (9.30) as funções base ψ e1 e ψ e2 , (9.19 -


9.20), e suas derivadas,
dψ e1 −1
= e
dξ x2 − xe1
586 CAPÍTULO 9. ELEMENTOS FINITOS

e
dψ e2 1
= e ,
dξ x2 − xe1
podemos escrever
meij = kij
e
+ peij + qij
e
,
em que Z xe ∙ ¸
e 1 2 1 −1
kij
= e k (ξ) dξ , (9.32)
(x2 − xe1 )2 xe1 −1 1
⎡ R e ³ ´ R xe2 ³ ´ ⎤
x2 ξ−xe1 ξ−xe1
1 − e
x1 p (ξ) 1 − e e dξ x1e p (ξ) 1 − e e dξ
peij = e ⎣ R xe2 ³ x2e−x´1 R xe2 ³ x2e−x´1 ⎦,
x2 − x1 e ξ−x ξ−x1
− xe p (ξ) xe −xe dξ 1
x1e p (ξ) e
x2 −x1 e dξ
1 2 1
(9.33)
⎡ R xe2 ³ ´ R xe2 ³ ´³ ´ ⎤
ξ−xe1 2 ξ−xe1 ξ−xe1
xe q (ξ) 1 − e
x −x e dξ x1e q (ξ) 1 − e
x2 −x1 e e
x −x e dξ
e
qij =⎣ R e 1 ³ ´³2 1 ´ R xe2 ³ ´ 2 1 ⎦
x2 ξ−xe1 ξ−xe1 ξ−xe1 2
x1e q (ξ) e
x2 −x1e 1 − e
x2 −x1 e dξ x1e q (ξ) e
x2 −x1 e dξ
(9.34)
Eu disse a pouco que o método dos elementos finitos é uma das aplicações
maravilhosas da tecnologia do computador na área científica. Com isto em
mente, o próximo passo seria encarregar o computador a tarefa de calcular
as integrais da matriz e do vetor fonte de cada elemento, compor todas
essas matrizes e vetores na matriz e vetor globais, incorporar as condições
de fronteira e, por fim, resolver o sistema global de equações lineares.
Para facilitar a compreensão do programa, em Mathematica, que execu-
tará todas estas tarefas é conveniente, primeiro, mostrar passo a passo um
exemplo simples feito à mão.
Para se ter realmente um problema elementar, vamos considerar na
equação (9.17) as seguintes funções: k (x) = 1, p (x) = 0 e q (x) = 1 e
¡ ¢ 27π2 ¡ ¢
h (x) = −3x2 + 20x + 6 − 3 sin 3πx 2 − 4 sin 3πx 2 e as condições de fron-
teira tipo Dirichlet u(0) = 0 e u(L = 1) = 0. Note que este é exatamente o
problema piloto usado, a pouco, para ilustrar o método de Galerkin..
Para fixar idéia vamos subdividir o domínio [0, 1] em 8 elementos de
acordo com a seguinte partição: x0 = 0, x1 = 1/6, x2 = 1/3, x3 = 1/2,
x4 = 2/3, x5 = 3/4, x6 = 5/6, x7 = 11/12 e x8 = 1. Estes pontos da
partição são denominados de nós. No caso são nove nós. Cada elemento
tem dois nós.
Como k (x) e q (x) são funções constantes, as matriz kij e (9.32),e q e (9.33)
ij
se rezumem a ∙ ¸
e 1 1 −1
kij = e e (9.35)
x2 − x1 −1 1
587

e
∙ ¸
e xe − xe1 2 1
qij = 2 (9.36)
6 1 2

Note que p (x) = 0, logo, peij é matriz nula 2 por 2. Observe que as
matrizes (9.35) e (9.36) dependem apenas do comprimento, xe2 − xe1 , do
elemento.
Substituindo x0 = 0 e x1 = 1/6 em (9.35) e (9.36), a matriz m1ij do
primeiro elementos torna-se

∙ ¸
1 218 −215
m1ij = 1
kij 1
+ qij = (9.37)
36 −215 218

A esta altura é importante atentar para um detalhe muito importante.


Há dois sistemas de numeração de nós. O primeiro sistema é dito global que
corresponde à numeração dos nós distribuído ao longo de todo o domínio.
No caso em análise vai de 0 a 8, ou seja, é o número de elementos mais um.
O segundo sistema de numeração é o sistema local que corresponde aos dois
nós de cada elemento. A matriz (9.37) se refere a este segundo sistema de
numeração de nós. Por isso ela é denominada de matriz local. No sistema
global, a matriz local toma-se

⎡ ⎤
218 −215 0 0 0 0 0 0 0
⎢ −215 218 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
1 1 ⎢⎢


kij = 0 0 0 0 0 0 0 0 0
36 ⎢



⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎣ 0 0 0 0 0 0 0 0 0 ⎦
0 0 0 0 0 0 0 0 0

Em virtude da distribuição uniforme dos cinco primeiros nós, as matrizes


locais associadas aos segundo,.terceiro e quarto elementos são todas idênticas
à matriz (9.37), pois eles têm o mesmo comprimento, xe2 − xe1 . No sistema
588 CAPÍTULO 9. ELEMENTOS FINITOS

global de nós, a matriz do segundo elemento se escreve assim,


⎡ ⎤
0 0 0 0 0 0 0 0 0
⎢ 0 218 −215 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 −215 218 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
2 1 ⎢⎢

⎥,
kij = 0 0 0 0 0 0 0 0 0
36 ⎢



⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎣ 0 0 0 0 0 0 0 0 0 ⎦
0 0 0 0 0 0 0 0 0

a do terceiro elemento, assim


⎡ ⎤
0 0 0 0 0 0 0 0 0
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 218 −215 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 −215 218 0 0 0 0 0 ⎥
3 1 ⎢



kij = 0 0 0 0 0 0 0 0 0
36 ⎢



⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎣ 0 0 0 0 0 0 0 0 0 ⎦
0 0 0 0 0 0 0 0 0

e por fim a do quarto elemento, assim


⎡ ⎤
0 0 0 0 0 0 0 0 0
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 218 −215 0 0 0 0 ⎥
4 1 ⎢



kij = 0 0 0 −215 218 0 0 0 0
36 ⎢



⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎣ 0 0 0 0 0 0 0 0 0 ⎦
0 0 0 0 0 0 0 0 0

Apicando o mesmo raciocínio, as matrizes locais meij dos quatro últimos


elemetos têm a seguinte forma
∙ ¸
k 1 866 −863
kij = , k = 5, 6, 7, 8
72 −863 866
589

No sistema numeração global, elas aparecem assim,


⎡ ⎤
0 0 0 0 0 0 0 0 0
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
5 1 ⎢
⎢ 0

⎥,
kij = 0 0 0 866 −863 0 0 0
72 ⎢
⎢ 0


⎢ 0 0 0 −863 866 0 0 0 ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎣ 0 0 0 0 0 0 0 0 0 ⎦
0 0 0 0 0 0 0 0 0
⎡ ⎤
0 0 0 0 0 0 0 0 0
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
1 ⎢ ⎥
6
kij = ⎢ 0 0 0 0 0 0 0 0 0 ⎥,
72 ⎢
⎢ 0


⎢ 0 0 0 0 866 −863 0 0 ⎥
⎢ 0 0 0 0 0 −863 866 0 0 ⎥
⎢ ⎥
⎣ 0 0 0 0 0 0 0 0 0 ⎦
0 0 0 0 0 0 0 0 0
⎡ ⎤
0 0 0 0 0 0 0 0 0
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
7 1 ⎢
⎢ 0


kij = 0 0 0 0 0 0 0 0
72 ⎢
⎢ 0


⎢ 0 0 0 0 0 0 0 0 ⎥
⎢ 0 0 0 0 0 0 866 −863 0 ⎥
⎢ ⎥
⎣ 0 0 0 0 0 0 −863 866 0 ⎦
0 0 0 0 0 0 0 0 0
e para concluir,
⎡ ⎤
0 0 0 0 0 0 0 0 0
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
8 1 ⎢⎢


kij = 0 0 0 0 0 0 0 0 0
72 ⎢



⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ 0 0 0 0 0 0 0 0 0 ⎥
⎢ ⎥
⎣ 0 0 0 0 0 0 0 866 −863 ⎦
0 0 0 0 0 0 0 −863 866
590 CAPÍTULO 9. ELEMENTOS FINITOS

A soma de todas estas sete matrizes resulta na global Gij ,


⎡ ⎤
436 −430 0 0 0 0 0 0 0
⎢ −430 872 −430 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 −430 872 −430 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 −430 872 −430 0 0 0 0 ⎥
1 ⎢⎢ 0


Gij = 0 0 −430 1302 −863 0 0 0
72 ⎢
⎢ 0


⎢ 0 0 0 −863 1732 −863 0 0 ⎥
⎢ 0 0 0 0 0 −863 1732 −863 0 ⎥
⎢ ⎥
⎣ 0 0 0 0 0 0 −863 1732 −863 ⎦
0 0 0 0 0 0 0 −863 866
(9.38)
De posse da matriz global Gij , resta construir o vetor fonte global. Para
isso é preciso, primeiro, calcular os vetores fontes de cada elemento, ou seja,
o vetor fonte local. De (9.31) podemos escrever
⎡ R xe ³ ´ ⎤
2 ξ−xe1 e e e du e
x1e h (ξ) 1 − x2 −x1 dξ + ψ 1 (x2 ) k (x2 ) dξ (x2 )
e e
⎢ ⎥
⎢ −ψ e1 (xe1 ) k (xe1 ) du (xe1 ) ⎥
⎢ dξ ⎥
e
fi = ⎢⎢ ⎥
³ ´ ⎥
⎢ R x12 ξ−x1 e
e e ) k (xe ) du (xe ) ⎥
⎣ x11
h (ξ) e
x2 −x1 e dξ + ψ 2 (x 2 2 dξ 2 ⎦
e e e du e
−ψ 2 (x1 ) k (x1 ) dξ (x1 )

Como, por definição, ψ e1 (xe1 ) = 1, ψ e1 (xe2 ) = 0, ψ e2 (xe1 ) = 0 e ψ e2 (xe2 ) = 1,


segue imediatamente que
⎡ R xe ³ ´ ⎤
2 ξ−xe1 e ) du (xe )
e h (ξ) 1 − e e dξ − k (x1 dξ 1
⎢ x1 x2 −x1 ⎥
fie = ⎢
⎣ R 1 ³ ´

⎦ (9.39)
x2 ξ−x1 e
e du e
x1
h (ξ) xe −xe dξ + k (x2 ) dξ (x2 )
1 2 1

Para poupar tempo e trabalho no cálculo destas integrais vamos pedir


ajuda ao sistema Mathematica. Logo,

In[1]:= vecF[funH_, x1_, x2_] :=


Module[{}, {Integrate[funH[y] (1 - (y - x1)/(x2 - x1)), {y, x1,
x2}],
Integrate[funH[y] ( y - x1)/(x2 - x1), {y, x1, x2}]}]

Lebrando-se que a função fonte do ¡ lado


¢ direito da equação
¡ 3πx ¢ diferencial
27π 2
(9.3) é h (x) = −3x2 + 20x + 6 − 3 sin 3πx
2 − 4 sin 2 e que a partição
591

do intervalo [0, 1] é (0, 1/6, 1/3, 1/2, 2/3, 3/4, 5/6, 11/12, 1), vamos calcular,
simultaneamente, as duas integrais (9.39) para todos os oito elementos. Por-
tanto,

In[1]:= x = {0, 1/6, 1/3, 1/2, 2/3, 3/4, 5/6, 11/12, 1};
funH[y_] = -3 y^2 + 20 y + 6 - 3 Sin[3 Pi y/2] - 27/4 Pi^2 Sin[3 Pi y/2];
Table[vecF[funH, x[[i]], x[[i + 1]]], {i, 8}] // N

Out[1]= {{-0.88127, -2.17272}, {-4.07952, -4.5662},


{-4.39953, -3.74618}, {-1.50606, -0.047937},
{1.14517, 1.53439}, {2.26651, 2.59866},
{3.16626, 3.39348}, {3.71544, 3.80572}}

De posse dos valores numéricos das integrais, podemos escrever os vetores


fontes (9.39) de cada elemento, no sistema global de nós. Assim,

⎡ ¡ ¢ ¡ 1¢ ⎤ ⎡ ⎤
−0.88127 − k x11 dudξ ¡x1 ¢
0¡ ¢ ¡ ¢
⎢ ¡ 1 ¢ du ⎥ ⎢ ⎥
⎢ −2.17272 + k x2 dξ x12 ⎥ ⎢ −4.07952 − k x21 du 2
dξ ¡x1 ¢ ⎥
⎢ ⎥ ⎢ ¡ 2 ¢ du ⎥
⎢ 0 ⎥ ⎢ −4.56620 + k x2 dξ x22 ⎥
⎢ ⎥ ⎢ ⎥
⎢ 0 ⎥ ⎢ 0 ⎥
1 ⎢ ⎥ 2 ⎢ ⎥
f =⎢ 0 ⎥, f = ⎢ 0 ⎥,
⎢ ⎥ ⎢ ⎥
⎢ 0 ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢ 0 ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥
⎣ 0 ⎦ ⎣ 0 ⎦
0 0

⎡ ⎤ ⎡ ⎤
0 0
⎢ 0¡ ¢ ¡ ¢ ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢ −4.39953 − k x31 du 3 ⎥ ⎢ 0¡ ¢ ⎥
⎢ dξ ¡x1 ¢
¡ 3 ¢ du ⎥ ⎢ ⎥
⎢ ⎥ ⎢ −1.50606 − k x41 du ⎥
⎢ −3.74618 + k x2 dξ x32 ⎥ ⎢ ¡ 4 ¢ dξ
(x4)
¡ ¢ ⎥
⎢ ⎥ ⎢ ⎥
f3 = ⎢ 0 ⎥ , f4 = ⎢ du
−0.047937 + k x2 dξ x42 ⎥,
⎢ ⎥ ⎢ ⎥
⎢ 0 ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢ 0 ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥
⎣ 0 ⎦ ⎣ 0 ⎦
0 0
592 CAPÍTULO 9. ELEMENTOS FINITOS
⎡ ⎤ ⎡ ⎤
0 0
⎢ 0 ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢ 0 ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢ 0¡ ¢ ¡ ¢ ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢ 1.14517 − k x51 du 5 ⎥ ⎢ ⎥
f5 = ⎢ dξ ¡x1 ¢
¡ 5 ¢ du ⎥ , f6 = ⎢ 0¡ ¢ ¡ ¢ ⎥,
⎢ ⎥ ⎢ 2.26651 − k x61 du 6 ⎥
⎢ 1.53439 + k x2 dξ x52 ⎥ ⎢ dξ ¡x1 ¢
¡ 6 ¢ du ⎥
⎢ ⎥ ⎢ ⎥
⎢ 0 ⎥ ⎢ 2.59866 + k x2 dξ x62 ⎥
⎢ ⎥ ⎢ ⎥
⎣ 0 ⎦ ⎣ 0 ⎦
0 0
e finalmente, os dois últimos vetores,
⎡ ⎤ ⎡ ⎤
0 0
⎢ 0 ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢ 0 ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢ 0 ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥
7 ⎢ 0 ⎥ 8 ⎢ 0 ⎥
f =⎢ ⎥ , f = ⎢ ⎥
⎢ 0¡ ¢ ¡ ¢ ⎥ ⎢ 0 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ 3.16626 − k x71 du 7
dξ ¡x1 ¢ ⎥ ⎢ 0¡ ¢ ¡ ¢ ⎥
⎢ ¡ 7 ¢ du ⎥ ⎢ ⎥
⎣ 3.39348 + k x2 dξ x72 ⎦ ⎣ 3.71544 − k x81 du 8
dξ ¡x1 ¢ ⎦
¡ 8 ¢ du
0 3.80572 + k x2 dξ x82

Somando todos eles obtêm-se o vetor fonte global,


⎡ ¡ ¢ ¡ 1¢ ⎤
−0.88127 − k x11 du x
⎢ ¡ ¢ ¡ 1 ¢ dξ ¡ 12 ¢ du ¡ 2 ¢ ⎥
⎢ −6.25224 + k x12 du x
dξ ¡ 2 ¢ − k x dξ x1 ⎥
⎢ ¡ 2 ¢ du ¡ 13 ¢ du ¡ ¢ ⎥
⎢ −8.96574 + k x2 dξ x2 − k x1 dξ x31
2 ⎥
⎢ ¡ ¢ ¡ 3¢ ¡ ¢ ⎥
⎢ −5.25224 + k x32 du x2 − k x41 du (x4) ⎥
⎢ ¡ 4 ¢ du ¡ 4 ¢
dξ ¡ 5 ¢ dudξ¡ 5 ¢ ⎥
⎢ ⎥
fg = ⎢ 1.09724 + k x2 dξ x2 − k x1 dξ x1 ⎥
⎢ ¡ ¢ ¡ 5¢ ¡ 6 ¢ du ¡ 6 ¢ ⎥

⎢ 3.80090 + k x52 du x 2 − k x dξ x1 ⎥

¡ ¢ dξ ¡ 6 ¢ ¡ 17 ¢ du ¡ ¢
⎢ 5.76493 + k x62 du x − k x1 dξ x71 ⎥
⎢ ¡ ¢ ¡ 7¢
dξ 2 ¡ 8 ¢ du ¡ 8 ¢ ⎥
⎢ 7.10892 + k x72 du ⎥
⎣ dξ ¡x2 ¢− k¡ x1¢ dξ x1 ⎦
3.80572 + k x82 du dξ x2
8

Agora, chegamos ao ponto crucial do método dos elementos finitos. Sabe-


mos, por hipótese, que o produto k (x) dudx é contínuo em todo x ∈ (0, 1)
e que as funções base (9.19) e (9.20) também são, por construção,
¡ ¢ ¡ icon- ¢
tínuas entre os elementos, dai conclui-se que as parcelas k xi2 dudξ x2 −
¡ ¢ du ¡ i+1 ¢
k xi+1
1 dξ x1 , i = 1, 6 se anulam mutuamente. Assim, o vetor fonte
593

global se reduz a
⎡ ¡ ¢ ¡ 1¢ ⎤
−0.88127 − k x11 du
dξ x1
⎢ −6.25224 ⎥
⎢ ⎥
⎢ −8.96574 ⎥
⎢ ⎥
⎢ ⎥
⎢ −5.25224 ⎥
⎢ ⎥
fg = ⎢ 1.09724 ⎥ (9.40)
⎢ ⎥
⎢ 3.80090 ⎥
⎢ ⎥
⎢ 5.76493 ⎥
⎢ ⎥
⎣ 7.10892
¡ ¢ ¡ 7¢ ⎦
3.80572 + k x72 du
dξ x2
Para concluir falta apenas levar em consideração as condições de fron-
teiras u (0) = 0 e u (1) = 0. Isto é feito, observando que a primeira equação
do sistema global de equações lineares é simplesmente u0 = 0 e a última
equação, ou seja, a oitava equação é obviamente u8 = 0. Este é um vínculo
muito forte. Em última análise, isto corresponde em substituir a primeira
linha da matriz global (9.38) por (1, 0, 0, 0, 0, 0, 0, 0, 0) e a primeira compo-
nente do vetor fonte global (9.40) por 0. Analogamente, a última linha da
matriz global é substituída por (0, 0, 0, 0, 0, 0, 0, 0, 1) e do mesmo modo a
última componente do vetor fonte global é substituída por 0. Logo,
⎡ ⎤
72 0 0 0 0 0 0 0 0
⎢ −432 872 −432 0 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 −432 872 −432 0 0 0 0 0 ⎥
⎢ ⎥
⎢ 0 0 −432 872 −432 0 0 0 0 ⎥
1 ⎢⎢

⎥,
Gij = 0 0 0 −432 1302 −863 0 0 0
72 ⎢⎢ 0


⎢ 0 0 0 −863 1732 −863 0 0 ⎥
⎢ 0 0 0 0 0 −863 1732 −863 0 ⎥
⎢ ⎥
⎣ 0 0 0 0 0 0 −863 1732 −863 ⎦
0 0 0 0 0 0 0 0 72
(9.41)
e ⎡ ⎤
0
⎢ −6.25224 ⎥
⎢ ⎥
⎢ −8.96574 ⎥
⎢ ⎥
⎢ −5.25224 ⎥
⎢ ⎥
fg = ⎢
⎢ 1.09724 ⎥
⎥ (9.42)
⎢ 3.80090 ⎥
⎢ ⎥
⎢ 5.76493 ⎥
⎢ ⎥
⎣ 7.10892 ⎦
0
594 CAPÍTULO 9. ELEMENTOS FINITOS

Para concluir resta apenas resolver o sistema tri-diagonal fornecido por


(9.41) e (9.42). Com o Mathematica esta é uma tarefa trivial. Com efeito,
chamando de a, b e c as três diagonais (inferior, principal e superior) da
matriz Gij e d o vetor fonte fg , temos,

In[5]:= << LinearAlgebra‘Tridiagonal‘

In[5]:= a = {-430, -430, -430, -430, -863, -863, -863, 0}/72;


b = {72, 872, 872, 872, 1302, 1732, 1732, 1732, 72}/72;
c = {0, -430, -430, -430, -863, -863, -863, -863}/72;
d = {0, -6.25224, -8.96574, -5.25224, 1.09724, 3.8009,
5.76493, 7.10892, 0};
uEF = TridiagonalSolve[a, b, c, d];

In[5]:= uEF
Out[5]:= {0., -1.72522, -2.4517, -1.74535, -0.20827, 0.463884,
0.822155, 0.705174, 0.}

Comparando este resultado com o calculado para o mesmo modelo pelo


método de Galerkin, Out[5] na página 530 nota-se que eles são absolutamente
idênticos. Por conseguinte, é claro que os gráficos apresentados nas Figura
() e () também são análogos. Entretanto, do ponto de vista conceitual há
uma pequena diferença entre eles. No primeiro caso, as funções base são as
funções chapéu, φi , i = 1, 7, abrangendo todo o intervalo [0, 1] e no segundo
caso as funções base ψ i , i = 1, 2 são definidas localmente. As funções base
ψ i são denominadas de shape functions pelos praticantes do método dos
elementos finitos Os gráficos da Figura () foram gerados por,.

In[5]:= x = {0, 1, 2, 3, 4, 4.5, 5, 5.5, 6}/6;


uExata[y_] := -3y^2 + 20y - 3Sin[3Pi y/2] - 20 Csch[1] Sinh[y];
psi1[y_, x1_, x2_] := Module[{}, 1 - (y - x1)/(x2 - x1)]
psi2[y_, x1_, x2_] := Module[{}, (y - x1)/(x2 - x1)]
plotPsi[i_, x_] := Module[{ }, Plot[{uEF[[i]] psi1[y, x[[i]], x[[i + 1]]],
uEF[[i + 1]]psi2[y, x[[i]], x[[i + 1]]]}, {y, x[[i]], x[[i + 1]]},
PlotStyle -> {Dashing[{0.01, 0.01}]},
DisplayFunction -> Identity]]
Show[{Plot[uExata[x], {x, 0, 1},
PlotRange -> {-3, 1},
TextStyle -> {FontSize -> 8.0},
DisplayFunction -> Identity],
595

0.5

0.2 0.4 0.6 0.8 1

-0.5

-1

-1.5

-2

-2.5

-3

Figura 9.16:

Table[plotPsi[i, x], {i, 1, 8}],


ListPlot[Transpose[{x, uEF}],
PlotJoined -> True,
PlotStyle -> {Dashing[{0.02, 0.02}]},
DisplayFunction -> Identity],
ListPlot[Transpose[{x, uEF}],
PlotStyle -> PointSize[0.018],
DisplayFunction -> Identity]},
DisplayFunction -> $DisplayFunction];

Provavelmente, o leitor está fazendo a seguinte pergunta. Se o método


de Galerkin com suas funções chapéu apresentou o mesmo resultado do
método dos elementos finitos, por que substituir um algoritmo simples como
o de Galerkin por um outro aparentemente mais complicado? A resposta
é simples. O método de Galerkin com as funções chapéu só funciona para
problemas com condições de fronteira de Dirichlet homogêneas, ao passo
que o método dos elementos finitos se aplica a qualquer tipo de condições
de fronteira, Dirichlet. Newman e mista, homogêneas ou não. Há outra
razão mais importante ainda. A propriedade física do meio k(x), sendo
contínua ou não, não faz nenhuma diferença para o método dos elementos
finitos, enquanto que com qualquer um dos métodos clássicos (Ritz-Raylegh,
Resíduos ponderados, Galerkin) isto traz sérias complicações, podendo até
596 CAPÍTULO 9. ELEMENTOS FINITOS

inviabilizar o emprego do método. É importante enfatizar que nas aplicações


práticas as propriedades físicas dos meios, normalmente, variam bastante.
Por fim, a terceira razão, talvez a mais importante, é que o método dos
elementos finitos pode ser totalmente implementado pelo computador o que
não acontece com os demais métodos clássicos. Neste sentido o método dos
elementos finitos é muito mais simples e versátil que os demais.
Eu disse que o método dos elementos finitos se aplica a problemas com
condições de fronteira não-homogêneas. Vamos, então, mostrar um exemplo.
No início desta seção resolvemos a equação diferencial,(9.1)

µ ¶ µ ¶
d2 u 3πx 27π 2 3πx
− +u = −6x2 +20x+13−3 sin − sin , 0 < x < 1,
dx2 2 4 2

sujeita às condições de fronteira tipo Dirichlet não-homogêneas u (0) = 1 e


u (1) = −2 e encontramos a seguinte solução (9.2)
µ ¶
2 3πx
u (x) = −6x + 20x + 1 − 3 sin − 20 csch 1 sinh x. (9.43)
2

Agora vamos computar uma solução aproximada pelo método dos ele-
mentos finitos e comparar com esta solução exata. Vamos manter a mesma
partição do intervalo, ou seja, x = {0, 1/6, 1/3, 1/2, 2/3, 3/4, 5/6, 11/12, 1}.
Como não houve nenhuma alteração no lado esquerdo da equação difer-
encial, podemos usar, sem nenhum problema, a mesma matriz global (9.38).
Entretanto, o lado direito da equação diferencial mudou e por isso o vetor
fonte (9.40) tem que ser recalculado. Logo,

In[1]:= funH[y_] = -6 y^2 + 20 y +13- 3 Sin[3 Pi y/2] - 27/4 Pi^2 Sin[3 Pi


y/2];
Table[vecF[funH, x[[i]], x[[i + 1]]], {i, 8}] // N

In[1]:= {{-0.299094, -1.59286}, {-3.50892, -4.00254},


{-3.8544, -3.21262}, {-1.00027, 0.441646},
{1.37651, 1.76081}, {2.48251, 2.80917},
{3.36519, 3.58633}, {3.89556, 3.97919}}

Procedendo da mesmo modo como no cálculo de (9.40), podemos escr-


597

ever, ⎡ ¡ ¢ ¡ 1¢ ⎤
−0.299094 − k x11 du
dξ x1
⎢ −5.10178 ⎥
⎢ ⎥
⎢ −7.85694 ⎥
⎢ ⎥
⎢ ⎥
⎢ −4.21289 ⎥
⎢ ⎥
fg = ⎢ 1.81816 ⎥ (9.44)
⎢ ⎥
⎢ 4.24332 ⎥
⎢ ⎥
⎢ 6.17436 ⎥
⎢ ⎥
⎣ 7.48189
¡ ¢ ¡ 7¢ ⎦
3.97919 + k x72 du
dξ x2

De posse da matriz global (9.38) e do vetor fonte global (9.44) falta,


para completar o problema, incorporar as condições de fronteira u (0) = 1 e
u (1) = −2.e resolver o sistema de equações lineares. Ora, a implementação
das condições de fronteira é imediata, basta seguir os mesmos
¡ 1 ¢ dupassos
¡ 1 ¢ de
antes e substituir a primeira componente, −0.299094 − k x1 dξ x1 em
¡ ¢ ¡ 7¢
(9.44), por 1 e a última componente, 3.97919 + k x72 dudξ x2 , por −2 e usar
a matriz global modificada (9.41),.e pronto! Existe algo mais simples? Feito
isto, resta apenas resolver o sistema tri-diagonal de equações lineares. Dito
isto, vem,

In[5]:= a = {-430, -430, -430, -430, -863, -863, -863, 0}/72;


b = {72, 872, 872, 872, 1302, 1732, 1732, 1732, 72}/72;
c = {0, -430, -430, -430, -863, -863, -863, -863}/72;
d = {1, -5.101778, -7.85694, -4.21289, 1.81816, 4.24332,
6.17436, 7.48189, -2};
uEF = TridiagonalSolve[a, b, c, d];

In[5]:= uEF
Out[5]:= {1., -0.807752, -1.78379, -1.49404, -0.540558, -0.222802,
-0.260615, -0.815367, -2.}

Como uma figura diz mais que mil palavras, é oportuno comparar grafi-
camente esta solução aproximada com a solução exata (9.2) ou (9.43). É
claro que a convergência será tanto melhor quanto maior for o número de
elementos, mas vamos deixar isto para depois.

CD - ROM
In[4]:=
Continuando com o mesmo exemplo, vamos supor que a condição de
fronteira de Dirichlet u (1) = −2 fosse substituída pela condição de Neuman
598 CAPÍTULO 9. ELEMENTOS FINITOS

0.5

0.2 0.4 0.6 0.8 1

-0.5

-1

-1.5

-2

-2.5

-3

Figura 9.17:

du
dx (1) = 8−20 Coth (1) e que a fronteira de Dirichelet u (0) = 1 permanecesse
inalterada. Qual e como seria calculada a solução aproximada?
A construção da matriz global e do vetor fonte global é feita exatamente
da mesma naneira como antes. A implementação da condição de Dirichlet
u(0) = 1, no lado esquerdo do intervalo, segue o mesmo procedimento já
usado anteriormente. A última linha da matriz global, correspondente à
condição
¡ ¢ ¡de7Neuman
¢ também não precisa ser modificada. Apenas, o termo
k x72 du
dξ x2 na última componente do vetor fonte global (9.44) tem que
ser substituído
¡ ¢por k (1) [8 − 20 Coth (1)], por força da condição de Neuman.
Note que k x72 = k (1) = 1.
⎡ ⎤
1
⎢ −5.10178 ⎥
⎢ ⎥
⎢ −7.85694 ⎥
⎢ ⎥
⎢ −4.21289 ⎥
⎢ ⎥
fg = ⎢
⎢ 1.81816 ⎥,

⎢ 4.24332 ⎥
⎢ ⎥
⎢ 6.17436 ⎥
⎢ ⎥
⎣ 7.48189 ⎦
3.97919 + 8 − 20 Coth (1)

Dito isto, podemos escrever o sistema tri-diagonal,

In[55]:= a = {-430, -430, -430, -430, -863, -863, -863, -863}/72;


b = {72, 872, 872, 872, 1302, 1732, 1732, 1732, 866}/72;
599

c = {0, -430, -430, -430, -863, -863, -863, -863}/72;


d = {1, -5.101778, -7.85694, -4.21289, 1.81816, 4.24332,
6.17436, 7.48189, 3.97919 + 8 - 20 Coth[1]};

Resolvendo o sistema, obtemos praticamente a mesma solução aproxi-


mada do caso anterior. Com efeito,

In[55]:= uEF = TridiagonalSolve[a, b, c, d]


Out[55]:= {1., -0.807647, -1.78358, -1.49371, -0.540109, -0.222288,
-0.260031, -0.814709, -1.99926}

O gráfico que compara esta solução aproximada com a solução exata é


absolutamente idêntico ao da Figura ().

CD - ROM
In[4]:= Traça o gráfico acima referido.

Mesmo com condições de fronteiras tão diferentes, por que as duas


soluções aproximadas são praticamente iguais? Porque foi imposto o valor
certo da condição de Neuman para o problema em questão. Se o valor da
condição de Neuman tivesse sido outro qualquer, o resultado seria, obvia-
mente, diferente. O segredo foi calcular a condição de Neuman a partir da
solução exata (9.43) da equação diferencial. A derivada da solução exata,
no ponto x = 1 corresponde ao valor apropriado da condição de Neuman.
Com o Mathematica este cálculo é simplíssimo. De fato,

In[55]:= uExata[y_] := -6 y^2 + 20 y + 1 - 3 Sin[3 Pi y/2] - 20 Csch[1] Sinh[y];


D[uExata[y], y] /. y -> 1
Out[55]:= 8 - 20 Coth[1]

Além das condições de fronteiras dos tipos Dirichlet e Neuman usa-se,


com freqüência, a combinação linear de ambas, α du dx (xb ) + βu (xb ) = γ,
conhecida como condição de fronteira mista ou de Rubin. As constantes
α 6= 0, β e γ são dadas a priori e xb representa a coordenada da fronteira
onde se deseja implementar este tipo de vínculo. Note que, quando β = 0,
a condição de Neuman é um caso particular da de Rubin.[?].
Quando as duas fronteiras são do tipo Dirichlet o problema é denominado
de Problema de Dirichlet. Se as duas fronteiras são do tipo Neuman tem-se
o Problema de Neuman e naturalmente, chamamos Problema Misto ou de
Rubin aquele em que as duas fronteiras são do tipo misto. Para p (x) = 0 e
q (x) = 0 o Problema de Neuman não tem solução única [?].
600 CAPÍTULO 9. ELEMENTOS FINITOS

Continuando com o mesmo exemplo, vamos ver como se implementa a


condição de fronteira de Rubin no algoritmo dos elementos finitos. Para
isso, consideremos que no extremo esquerdo do intervalo [0, 1] seja dada a
seguinte condição mista 2 du
dx (0) + 10u (0) = 50 − 9π − 40 Csch(1), e no lado
direito a condição de Dirichlet u (1) = −2, como no início.Note que α = 2,
β = 10 e γ = 50 − 9π − 40 Csch(1).
A esta altura, sabemos como tratar a fronteira de Dirichlet do lado di-
reito do intervalo, portanto não vamos falar mais sobre ela. Então, vamos
nos concentrar, apenas, na fronteira do lado esquerdo. Dito isto, devemos
modificar a primeira linha da matriz global (9.38) e a primeira componente
do vetor fonte global (9.44) para consiliar as informações da fronteira mista.
Dividindo por α ambos os lados de α dudx (0)+βu (0) = γ e isolando a derivada
no lado esquerdo desta expressão, vem du dx (0) = (γ − βu (0)) /α. Multipli-
cando ambos os lados por k (0) e substituindo no vetor fonte global (9.44),
resulta,
⎡ ⎤
−0.299094 − k (0) (γ − βu (0)) /α
⎢ −5.10178 ⎥
⎢ ⎥
⎢ −7.85694 ⎥
⎢ ⎥
⎢ −4.21289 ⎥
⎢ ⎥

fg = ⎢ 1.81816 ⎥ (9.45)

⎢ 4.24332 ⎥
⎢ ⎥
⎢ 6.17436 ⎥
⎢ ⎥
⎣ 7.48189 ⎦
−2
Igualando a primeira componente deste vetor com a primeira equação do
sistema de equações lineares (primeira linha da matriz global (9.38) multi-
plicada pelo vetor de icógnitas (u0 , u1, u2 , . . . , un )) temos,
436 430
u0 − u1 = −0.299094 − k (0) (γ − βu (0)) /α.
72 72
Sendo u (0) = u0 , podemos reescrever
436 β 430
( − k (0) )u0 − u1 = −0.299094 − k (0) γ/α
72 α 72
Com este resultado, chegamos a conclusão que para implementar a condição
de fronteira mista, basta subtrair k (0) β/a do primeiro elemento da matriz
global, (9.38) e do vetor fonte global (9.45) também. Como, no nosso prob-
lema, k (0) = 1, α = 2, β = 10 e γ = 50 − 9π − 40 Csch(1), o primeiro
elemento da matriz global torna-se 436/72 − 5 e a primeira componente do
vetor fonte global (9.45) se iguala a −0.299094 − 25 + 9π/2 + 20 Csch(1).
601

O código, a seguir, constrói e resolve o sistema tri-diagonal seguindo os


passos acima referidos,.

In[55]:= a = {-430, -430, -430, -430, -863, -863, -863, 0}/72;


b = {436 - 5*72, 872, 872, 872, 1302, 1732, 1732, 1732, 72}/72;
c = {-430, -430, -430, -430, -863, -863, -863, -863}/72;
d = {-0.299094 - 25 + 9 Pi/2 + 20 Csch[1], -5.101778, -7.85694, -4.21289,
1.81816, 4.24332, 6.17436, 7.48189, -2};
uEF = TridiagonalSolve[a, b, c, d];

In[55]:= uEF
In[55]:= {1.00629, -0.802756, -1.77996, -1.49125, -0.53874, -0.22145,
-0.259719, -0.81492, -2.}

Mais uma vez, note que o resultado é muito próximo da solução exata.
O segredo, a exemplo do caso anterior, consiste em calcular a condição de
Rubin apropriada ao mesmo problema. É claro que se fosse dado qualquer
outro valor da condição de Rubin, o problema não seria o mesmo e por
conseqüência não teria sentido comparar uma solução aproximada de um
problema com a solução exata de outro. Lembre-se que um problema de
fronteira é especificado pela equação diferencial junto com as condições de
fronteira. A propósito, a condição de Rubin usada no problema foi calculada
dessa maneira,.

In[55]:= u0 = 1;
uExata[y_] := -6 y^2 + 20 y + 1 - 3 Sin[3 Pi y/2] - 20 Csch[1] Sinh[y];
2 D[uExata[y], y] + 10 u0 /. y -> 0 // Simplify
In[55]:= 50 - 9 Pi - 40 Csch[1]

Depois de tudo que foi dito, acredito que estamos prontos para apresen-
tar um programa completo, em linguagem Mathematica, que implementa o
algoritmo dos elementos finitos para a equação diferencial (9.17) sujeita a
qualquer tipo de condições de fronteiras (Dirichlet, Neuman e Rubin).
O programa é formado por duas partes. A primeira, denominada de
elementosFinitos1D, é efetivamente o programa principal,onde se ler os dados
do problema, constrói as três diagonais do sistema tri-diagonal de equações
lineares e implementa as condições de fronteiras. A segunda parte nada mais
é do que um conjunto de módulos para calcular as matrizes kij e (9.32),pe
ij
e e
(9.33) e qij (9.34) e o vetor fonte hi (9.31), requisitados pelo programa prin-
cipal. A solução final é obtida resolvendo o sistema tri-diagonal por meio da
602 CAPÍTULO 9. ELEMENTOS FINITOS

função TridiagonalSolve[expr] do pacote Add-on <<AlgebraLinear‘Tridiagonal‘,


[87].
Então, vejamos a primeira parte, ou seja, o programa principal

In[1]:= (*– elementosFinitos1D[expr] calcula uma solução aproximada da


equação elíptica unidimensional con condições de fronteira de Dirichlet,
de Neuman e de Rubin –*)
elementosFinitos1D[x_, funK_, funP_, funQ_, funH_, alfa1_, beta1_,
gama1_, alfa2_, beta2_, gama2_, a_, b_, c_, d_] :=
Module[{xL = Length[x], netFlux, vT, kii, pii, qii, kij, pij, qij, pji},
Off[General::spell];
Off[General::spelll];
Off[NIntegrate::ploss];
(* x - vetor de nós *)
(* funK, funP, funQ e funH são as funções k(x), p(x), q(x) e h(x) *)
(* alfa1 = 0, beta1 = 1, gama1 : fronteira Dirichlet no lado esquerdo *)
(* alfa2 = 0, beta2 = 1, gama2 : fronteira Dirichlet no lado direito *)
(* alfa1 = 1, beta1 = 0, gama1 : fronteira Neuman no lado esquerdo *)
(* alfa2 = 1, beta2 = 0, gama2 : fronteira Neuman no lado direito *)
(* alfa1 != 0, beta1 != 1, gama1 : fronteira Rubin no lado esquerdo *)
(* alfa2 != 0, beta2 != 1, gama2 : fronteira Rubin no lado direito *)
(* a - diagonal inferior, b - diagonal principal,*)
(*c - diagonal superior e d - vetor fonte global *)
If[NIntegrate[funP[y]^2, {y, x[[1]], x[[xL]]}] ==
NIntegrate[funQ[y]^2, {y, x[[1]], x[[xL]]}] == beta1 == beta2 == 0,
netFlux = Abs[Integrate[funH[y], {y, x[[1]], x[[xL]]}] -
funK[x[[1]]] gama1/alfa1 + funK[x[[xL]]] gama2/alfa2];
If[netFlux < 10.^-15,
Print[”Uma infinidade de soluções. Para obter uma, faça alfa1 = 0,
beta1 = 1 e gama1 = uma constante qualquer.”],
Print[”Balanço do fluxo = ”, netFlux, ”, Não há solução.”]],
(* Constrói a diagonal principal da matriz global *)
vT = Table[kiiInt[funK, x[[i]], x[[i + 1]]], {i, xL - 1}] ;
kii = Append[Prepend[Table[vT[[i]][[2]] + vT[[i + 1]][[1]], {i, xL - 2}],
vT[[1]][[1]]], vT[[xL - 1]][[2]]];
If[NIntegrate[funP[y]^2, {y, x[[1]], x[[xL]]}] == 0, pii = 0,
vT = Table[piiInt[funP, x[[i]], x[[i + 1]]], {i, xL - 1}] ;
pii = Append[Prepend[Table[vT[[i]][[2]] + vT[[i + 1]][[1]], {i, xL - 2}],
vT[[1]][[1]]], vT[[xL - 1]][[2]]]];
If[NIntegrate[funQ[y]^2, {y, x[[1]], x[[xL]]}] == 0, qii = 0,
603

vT = Table[qiiInt[funQ, x[[i]], x[[i + 1]]], {i, xL - 1}] ;


qii = Append[Prepend[Table[vT[[i]][[2]] + vT[[i + 1]][[1]], {i, xL - 2}],
vT[[1]][[1]]], vT[[xL - 1]][[2]]]];
b = kii + pii + qii;
(* Constrói a diagonal superior da matriz global *)
kij = Table[kijInt[funK, x[[i]], x[[i + 1]]], {i, xL - 1}] ;
If[NIntegrate[funP[y]^2, {y, x[[1]], x[[xL]]}] == 0, pij = 0,
pij = Table[pijInt[funP, x[[i]], x[[i + 1]]], {i, xL - 1}]] ;
If[NIntegrate[funQ[y]^2, {y, x[[1]], x[[xL]]}] == 0, qij = 0,
qij = Table[qijInt[funQ, x[[i]], x[[i + 1]]], {i, xL - 1}]] ;
c = kij + pij + qij;
(* Constrói a diagonal inferior da matriz global*)
If[NIntegrate[funP[y]^2, {y, x[[1]], x[[xL]]}] == 0, pji = 0,
pji = Table[pjiInt[funP, x[[i]], x[[i + 1]]], {i, xL - 1}]] ;
a = kij + pji + qij;
(* Constrói o vetor fonte global *)
If[NIntegrate[funH[y]^2, {y, x[[1]], x[[xL]]}] == 0,
d = Table[0, {i, xL}],
vT = Table[hiInt[funH, x[[i]], x[[i + 1]]], {i, xL - 1}] ;
d = Append[Prepend[Table[vT[[i]][[2]] + vT[[i + 1]][[1]], {i, xL - 2}],
vT[[1]][[1]]], vT[[xL - 1]][[2]]]];
(* Implementa as condições de fronteira do lado esquerdo *)
If[alfa1 == 0,
b[[1]] = 1.; c[[1]] = 0; d[[1]] = gama1,
b[[1]] = b[[1]] - funK[x[[1]]] beta1/alfa1;
d[[1]] = d[[1]] - funK[x[[1]]] gama1/alfa1];
(* Implementa as condições de fronteira do lado direito *)
If[alfa2 == 0,
b[[xL]] = 1.; a[[xL - 1]] = 0; d[[xL]] = gama2,
b[[xL]] = b[[xL]] + funK[x[[xL]]] beta2/alfa2;
d[[xL]] = d[[xL]] + funK[x[[xL]]] gama2/alfa2];]]

Agora a segunda parte,

In[55]:= (*– Implementa as funções base psi1 e psi2; as matrizes kij, pij, qij e
o vetor fontehi, chamados por elementosFinitos1D[expr]. –*)
psi1[y_, x1_, x2_] := Module[{}, 1. - (y - x1)/(x2 - x1)]
psi2[y_, x1_, x2_] := Module[{ }, (y - x1)/(x2 - x1)]
(* Calcula as integrais da diagonal principal da matriz global *)
Off[General::spell]; Off[General::spelll];
604 CAPÍTULO 9. ELEMENTOS FINITOS

kiiInt[funK_, x1_, x2_] :=


Module[{}, 1./(x2 - x1)^2 NIntegrate[funK[y], {y, x1, x2}]{1, 1}]
piiInt[funP_, x1_, x2_] :=
Module[{},
1./(x2 - x1){-NIntegrate[funP[y] psi1[y, x1, x2] , {y, x1, x2}],
NIntegrate[funP[y] psi2[y, x1, x2] , {y, x1, x2}]}]
qiiInt[funQ_, x1_, x2_] :=
Module[{}, {NIntegrate[funQ[y] psi1[y, x1, x2]^2 , {y, x1, x2}],
NIntegrate[funQ[y] psi2[y, x1, x2]^2, {y, x1, x2}]}]
(* Calcula as integrais das diagonais superior e inferior da matriz
global *)
kijInt[funK_, x1_, x2_] :=
Module[{}, -1./(x2 - x1)^2 NIntegrate[funK[y], {y, x1, x2}]]
pijInt[funP_, x1_, x2_] :=
Module[{}, 1./(x2 - x1) NIntegrate[funP[y] psi1[y, x1, x2],
{y, x1, x2}]]
qijInt[funQ_, x1_, x2_] :=
Module[{},
NIntegrate[funQ[y] psi1[y, x1, x2] psi2[y, x1, x2], {y, x1, x2}]]
pjiInt[funP_, x1_, x2_] :=
Module[{}, -1./(x2 - x1) NIntegrate[funP[y] psi2[y, x1, x2],
{y, x1, x2}]]
(* Calcula as integrais do vetor fonte global *)
hiInt[funH_, x1_, x2_] :=
Module[{}, {NIntegrate[funH[y] psi1[y, x1, x2] , {y, x1, x2}],
NIntegrate[funH[y] psi2[y, x1, x2], {y, x1, x2}]}]

É claro que se pode juntar as duas partes num único bloco, mas, acredito
que é mais fácil acompanhar o programa subdividindo-o em duas partes.

De posse do programa elementosFinitos1D vamos mostrar vários exemplos


para ilustrar a versatilidade do programa. Muitos outros exemplos serão
vistos nos próximos capítulos.

Exemplo 7.1.Neste primeiro exemplo vamos recalcular os exemplos pi-


lotos, vistos acima, para introduzir o método dos elementos finitos. Seja a
equação diferencial (9.3),
µ ¶ µ ¶
d2 u 2 3πx 27π 2 3πx
− 2 + u = −3x + 20x + 6 − 3 sin − sin , 0<x<1
dx 2 4 2
605

com as condições de fronteiras Dirichlet homogêneas u (0) = u (1) = 0.


Da equação diferencial deduzimos que k (x) = 1, p (x) = 0, q (x) = 1 e
¡ ¢ 27π2 ¡ 3πx ¢
h (x) = −3x2 +20x+6−3 sin 3πx 2 − 4 sin 2 . Subdividindo o intervalo
em 50 elementos uniformemente distribuídos podemos escrever.

In[114]:= x = Table[(i - 1.)/50, {i, 51}];


funK[y_] := 1.
funP[y_] := 0
funQ[y_] := 1.
funH[y_] = -3. y^2 + 20y + 6 - 3Sin[3Pi y/2] - 27 Pi^2/4 Sin[3Pi y/2];
{alfa1, beta1, gama1} = {0, 1, 0};
{alfa2, beta2, gama2} = {0, 1, 0};
Clear[a, b, c, d]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, beta2, gama2, a, b, c, d]
uEF = TridiagonalSolve[a, b, c, d];

Para exibir a solução basta teclar

In[114]:= uEF
Out[114]:= {0., -0.223922, -0.447874, -0.669509, -0.886523, -1.09668, -1.29783,
-1.48793, -1.66506, -1.82746, -1.97352, -2.10181, -2.21108, -2.30031,
-2.36867, -2.41558, -2.44065, -2.44377, -2.42503, -2.38477, -2.32357,
-2.24225, -2.14183, -2.02357, -1.88893, -1.73956, -1.57732, -1.4042,
-1.22237, -1.03412, -0.841877, -0.648137, -0.455484, -0.266555, -
0.084016,
0.0894565, 0.251199, 0.398583, 0.529036, 0.640064, 0.729272, 0.794381,
0.833251, 0.843894, 0.824492, 0.773412, 0.689217, 0.570678, 0.416782,
0.226743, 0.}

Mais importante que números é visualizar graficamente a solução. Assim


sendo, vamos comparar graficamente esta solução aproximada com a solução
exata.u (x) = −3y 2 + 20y − 3 sin (3πx/2) − 20 csch (1) sinh y. A Figura ()
comparada com a Figura () mostra melhor ajuste com a solução exata devido
ao maior número de elementos utilizados (cinqüenta contra oito).

In[114]:= uExata[y_] := -3y^2 + 20y - 3Sin[3Pi y/2] - 20 Csch[1] Sinh[y];


p1 = Show[{Plot[uExata[x], {x, 0, 1},
PlotRange -> {-3, 1},
TextStyle -> {FontSize -> 7.0},
606 CAPÍTULO 9. ELEMENTOS FINITOS

0.5

0.2 0.4 0.6 0.8 1


-0.5

-1

-1.5

-2

-2.5

-3

Figura 9.18:

DisplayFunction -> Identity],


ListPlot[Transpose[{x, uEF}],
PlotStyle -> PointSize[0.015],
DisplayFunction -> Identity]},
DisplayFunction -> $DisplayFunction];
Ainda neste primeiro exemplo vamos considerar a equação diferencial
(9.1),
µ ¶ µ ¶
d2 u 2 3πx 27π 2 3πx
− 2 +u = −6x +20x+13−3 sin − sin , 0<x<1
dx 2 4 2
com as condições de fronteiras Dirichlet não-homogêneas u (0) = 1 e u (1) =
−2
Procedendo do mesmo modo com os 50 elementos distribuídos uniformi-
mente, vem

In[114]:= x = Table[(i - 1.)/50, {i, 51}];


funK[y_] := 1.
funP[y_] := 0
funQ[y_] := 1.
funH[y_] = -6 y^2 + 20 y + 13 - 3 Sin[3 Pi y/2] - 27 Pi^2/4 Sin[3Pi
y/2];
{alfa1, beta1, gama1} = {0, 1, 1};
{alfa2, beta2, gama2} = {0, 1, -2};
Clear[a, b, c, d]
607

0.5

0.2 0.4 0.6 0.8 1


-0.5

-1

-1.5

-2

-2.5

-3

Figura 9.19:

elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,


alfa2, beta2, gama2, a, b, c, d]
uEF = TridiagonalSolve[a, b, c, d];

CD - ROM
In[4]:= Traça o gráfico da Figura ()
Comparando a Figura () com a Figura () observa-se um ajuste melhor
entre a solução aproximada e a solução exata devido ao maior número de
elementos utilizados (cinqüenta contra oito).

Continuando com a mesma equação diferencial, vamos substituir a condição


de fronteira Dirichlet u (1) = −2 pela condição de Neuman du(1)/dx =
8. − 20 coth (1). A outra condição, u (0) = 1, permanece fixa. Usando os
mesmos 50 elemento e o mesmo procedimento, temos,

In[114]:= x = Table[(i - 1.)/50, {i, 51}];


funK[y_] := 1.
funP[y_] := 0
funQ[y_] := 1.
funH[y_] = -6 y^2 + 20 y + 13 - 3 Sin[3 Pi y/2] - 27 Pi^2/4 Sin[3Pi
y/2];
{alfa1, beta1, gama1} = {0, 1, 1};
{alfa2, beta2, gama2} = {1, 0, 8 - 20Coth[1]};
Clear[a, b, c, d]
608 CAPÍTULO 9. ELEMENTOS FINITOS

0.5

0.2 0.4 0.6 0.8 1


-0.5

-1

-1.5

-2

-2.5

-3

Figura 9.20:

elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,


alfa2, beta2, gama2, a, b, c, d]
uEF = TridiagonalSolve[a, b, c, d];

CD - ROM
In[4]:= Traça o gráfico da Figura ()

Comparando a Figura () com a Figura () observa-se um ajuste melhor


entre a solução aproximada e a solução exata devido ao maior número de
elementos utilizados (cinqüenta contra oito).

Pela última vez, usando-se a mesma equação diferencial, mas, agora com
a condição de fronteira de Rubin, 2u(0)+10du (0) /dx = 50.−9π−40 csch (1),
no lado esquerdo e a condição de Dirichlet, u (1) = −2, no lado direito e
com os mesmos 50 elementos, podemos escrever,

In[1]:= x = Table[(i - 1.)/50, {i, 51}];


funK[y_] := 1.
funP[y_] := 0
funQ[y_] := 1.
funH[y_] = -6 y^2 + 20 y + 13 - 3 Sin[3 Pi y/2] - 27 Pi^2/4 Sin[3Pi
y/2];
{alfa1, beta1, gama1} = {0, 1, 1};
609

0.5

0.2 0.4 0.6 0.8 1


-0.5

-1

-1.5

-2

-2.5

-3

Figura 9.21:

{alfa1, beta1, gama1} = {2., 10., 50 - 9 Pi - 40 Csch[1]};


Clear[a, b, c, d]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, beta2, gama2, a, b, c, d]
uEF = TridiagonalSolve[a, b, c, d];

CD - ROM
In[4]:= Traça o gráfico da Figura ()
Comparando a Figura () com a Figura () observa-se um ajuste melhor
entre a solução aproximada e a solução exata devido ao maior número de
elementos utilizados (cinqüenta contra oito).
Antes de continuarmos com mais exemplos, vamos falar sobre um assunto
de extrema importância nas aplicações do método dos elementos finitos ao
eletromagnetismo.
Pelo que foi visto até agora, o método dos elementos finitos é bastante
eficiente para se calcular soluções aproximadas de equações elípticas do tipo
(9.17). Normalmente, a função u (x) representa um potencial. Entretanto,
na maioria das vezes, o potencial é apenas uma função intermediária (tram-
polim) para se chegar ao fluxo3 −k (x) du(x)
dx , que é sempre muito mais im-
portante nas aplicações que o potencial propriamente dito. Por exemplo,
em eletromagnetismo, sendo u (x) o potencial eletrostático, −du(x)/dx é o
3
A rigor deveria ser densidade de fluxo, mas, é praxe na literatura se usar simplesmente
fluxo.
610 CAPÍTULO 9. ELEMENTOS FINITOS

u (x) uj+1 2

uj 1

xj x j+1

Figura 9.22:

campo elétrico enquanto que - u(x)/dx é a densidade de fluxo elétrico e


σu(x)/dx é a densidade de corrente elétrica.
A questão é saber como calcular numericamente o fluxo a partir de uma
dada aproximação do potencial por elementos finitos. É muito simples.
Basta observar que no elemento entre os nós xj e xj+1 , o potencial é aprox-
imado linearmente,
u (x) ' uj ψ 1 + uj+1 ψ 2 .
e por conseqüência a derivada numérica de u (x) dentro do elemento é sim-
plesmente (uj+1 − uj )/(xj+1 − xj ) como ilustra a Figura ().
Assim, a densidade de fluxo no ponto central do elemento é aproximada-
mente igual a µ ¶
(xj+1 + xj uj+1 − uj
−k . (9.46)
2 uxj+1 − xj
É claro que quanto mais densa a partição do domínio, melhor será a
aproximação da densidade de fluxo.
Com isto em mente, vamos dar continuidade a nossa lista de exemplos.

Exemplo 7.2 Considerando o Problema de Neuman dado pela equação


diferencial,
d2 u ¡ 2
¢
−k + u = 32 1 − x , x0 < x < xL ,
dx2
e as condições de fronteiras
du
(x0 ) = u0
dx
e
du
(xL ) = uL
dx
611

determinar uma aproximação da função (potencial) u (x) e do fluxo −k du dx ,


sendo k > 0 constante.
Em virtude da simplicidade do problema vamos resolvê-lo, primeiro, ana-
liticamente e em seguida, numericamente, por elementos finitos.
A solução geral da equação diferencial é
√ √ ¡ ¢
u (x) = C1 ex/ k
+ C2 e−x/ k
− 32 x2 + 2k − 1 .

Esta solução é facilmente obtida com o Mathematica. Com efito,

In[4]:= Clear[x, k]
Solve[-k D[u[x], {x, 2}] + u[x] == 32(1 - x^2), u[x], x]

√x − √xk
Out[4]:= {{u[x] -> -32(-1 + 2k + x2 ) + e k C[1] + e C[2]}}

Para determinar as constantes C1 e C2 vamos aplicar as duas condições


de fronteiras. Então,
du C1 √ C2 √
(x0 ) = √ ex0 / k − √ e−x0 / k = u0 + 64x0
dx k k
e √ √
du C1 C2
(xL ) = √ exL / k − √ e−xL / k = uL + 64xL
dx k k
Resolvendo este sistema de duas equações, é fácil determinar as con-
stantes A e B. Com efeito,
√ h √ √ i
k (uL + 64xL ) e−x0 / k − (u0 + 64x0 ) e−xL / k
C1 = √ √
e(xL −x0 )/ k − e(x0 −xL )/ k
e √ h √ √ i
k (uL + 64xL ) ex0 / k − (u0 + 64x0 ) exL / k
C2 = √ √
e(xL −x0 )/ k − e(x0 −xL )/ k
Esta solução exata é facilmente programada em linguagem Mathematica.
Com efeito,

In[1]:= uExata[k_, y_, x0_, xL_, u0_, uL_] := Module[{c1, c2, den},
den = Exp[(xL - x0)/Sqrt[k]] - Exp[(x0 - xL)/Sqrt[k]];
c1 = Sqrt[k]((uL + 64xL) Exp[-x0/Sqrt[k]] - (u0 + 64x0) Exp[-xL/Sqrt[k]])/den;
c2 = Sqrt[k]((uL + 64xL) Exp[x0/Sqrt[k]] - (u0 + 64x0) Exp[xL/Sqrt[k]])/den;
c1 Exp[y/Sqrt[k]] + c2 Exp[-y/Sqrt[k]] - 32(y^2 + 2 k - 1)]
612 CAPÍTULO 9. ELEMENTOS FINITOS

Conhecida a fórmula da solução exata u (x) é possível obter a fórmula o


fluxo −k du(x)
dx . Entretanto, é mais fácil usar o Mathematica para fazer este
trabalho, principalmente se a expressão de u (x) for muito complicada, como
de costume. Tudo se resume numa única linha. De fato,

In[1]:= uFlux[k, y, x0, xL, u0, uL] = -k D[uExata[k, y, x0, xL, u0, uL], y];

Até aqui tudo foi feito simbolicamente. Para dar continuidade vamos
considerar o domínio [x0 , xL ] igual a [−1/2, 1], k = 9, p (x) = 0, q (x) = 1 e
as condições de fronteiras du (−1/2) dx = 1/5 e du (1) /dx = −1/2. Fixados
estes valores, vamos calcular uma solução por elementos finitos e comparar
graficamente com a solução exata. Para isso vamos subdividir o domínio
[−1/2, 1] em 31 elementos uniformemente distribuídos. Assim,

In[1]:= x = Table[(i - 1)/20 - 0.5, {i, 31}];


funK[y_] := 9
funP[y_] := 0
funQ[y_] := 1
funH[y_] := 32(1 - y^2)
{alfa1, beta1, gama1} = {1., 0, 2};
{alfa2, beta2, gama2} = {1., 0, -2};
Clear[a, b, c, d]
Off[NIntegrate::slwcon]
Off[NIntegrate::ncvb]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, beta2, gama2, a, b, c, d]
uEF = TridiagonalSolve[a, b, c, d];

Resta calcular a densidade de fluxo numericamente. Para isso, basta


substituir na fórmula (9.46) os valores aproximados de u (x) contidos na
lista uEF. Portanto,

In[1]:= xM = Drop[(RotateLeft[x] - x), -1];


xC = Drop[(RotateLeft[x] + x)/2, -1];
fluxEF = -Map[funK, xC] Drop[(RotateLeft[uEF] - uEF), -1]/xM;

De posse das soluções e dos fluxos exatos e aproximados é instrutivo


compará-los graficamente. Como se vê, o ajuste é excelente tanto para a
função (potencial) quanto para o fluxo.

In[1]:= {k, x0, xL, u0, uL} = {9, -1/2, 1., 2., -2};
613

0.4 20
0.2 15
10
-0.4-0.2 0.2 0.4 0.6 0.8 1 5
-0.2
-0.4 -0.4-0.2 0.2 0.4 0.6 0.8 1
-5
-0.6 -10
-0.8 -15
-1 -20

Figura 9.23:

p1 = Show[{Plot[uExata[k, y, x0, xL, u0, uL], {y, -.5, 1},


PlotRange -> {-1, .4},
TextStyle -> {FontSize -> 7.0},
DisplayFunction -> Identity],
ListPlot[Transpose[{x, uEF}],
PlotStyle -> PointSize[0.015],
DisplayFunction -> Identity]}];
p2 = Show[{Plot[uFlux[y], {y, -.5, 1},
TextStyle -> {FontSize -> 7.0},
PlotRange -> {-20, 20},
DisplayFunction -> Identity],
ListPlot[Transpose[{xC, fluxEF}],
PlotStyle -> PointSize[0.015],
DisplayFunction -> Identity]}];
p3 = Show[GraphicsArray[{p1, p2}],
DisplayFunction -> $DisplayFunction];
Continuando com o mesmo exemplo, mas desta feita considerando tam-
bém q (x) = 0, o Problema de Neuman,

d2 u
−k = h (x) , x0 < x < xL , (9.47)
dx2
du (x0 )
= u0 ,
dx
du (xL )
= uL ,
dx
com k > 0 constante e h (x) = 32(1 − x2 ) torna-se surpreendentemente mais
sutil.
614 CAPÍTULO 9. ELEMENTOS FINITOS

Para começar não há garantia que haja solução e se houver, ela não será
única. Uma condição necessária para que haja uma solução, na realidade
uma infinidade delas, é que
Z xL
h (x) dx = ku0 − kuL . (9.48)
x0

Isto significa que o fluxo devido à fonte é contrabalançado pelos fluxos


que entram e saem pelas duas fronteiras. Fisicamente, isto corresponde à
conservação de energia do sistema. A energia que entra, sai.
Uma vez satisfeita a condição(9.48), a escolha de uma das soluções do
problema é feita da seguinte maneira. Substitui-se uma das condições de
Neuman (digamos, a do lado esquerdo) por uma de Dirichlet homogênea
ou não. Em seguida resolve-se o problema.tranqüilamente. Em virtude do
vínculo (9.48) se deduz facilmente que a solução obtida satisfaz à condição
de Neuman que foi substituída pela de Dirichlet. Por fim, somando-se uma
constante arbitrária à esta solução produz uma outra solução
Tudo isso que foi dito pode ser traduzido simbolicamente da seguinte
maneira. A solução geral da equação diferencial (9.48) é

8x2 ¡ ¢
u (x) = C1 x + C2 − 6 − x2
3k
em que C1 e C2 são constantes arbitrárias. Isto é facilmente comprovado
com o Mathematica,

In[4]:= Clear[k, x]
DSolve[-k D[u[x], {x, 2}] == 32(1 - x^2), u[x], x]

Out[4]:= {{u[x]-> -8 x2 (-6 + x2 )/(3 k) + C[1] + x C[2]}}

Para se determinr as constantes C1 e C2 a estratégia é substituir a


primeira condição de Neuman pela de Dirichlet

u (x0 ) = C3 ,

em que C3 é uma constante arbitrária. Feito isto, sugue da solução geral


que
8x2 ¡ ¢
u (x0 ) = C1 x0 + C2 − 0 6 − x20 = C3
3k
e
du (xL ) 32xL ¡ ¢
= C1 − 3 − x2L = uL
dx 3k
615

Resolvendo este sistema de duas equações, vem


32xL ¡ ¢
C1 = uL + 3 − x2L
3k
e ∙ ¸
32xL ¡ ¢ 8x2 ¡ ¢
C2 = C3 − uL + 3 − xL x0 + 0 6 − x20
2
3k 3k
Em princípio, o problema está resolvido. Resta saber se, de fato, a
condição de Neuman, que foi substituída pela de Dirichlet, é satisfeita ou
não. Se for, o problema que acabamos de resolver é equivalente ao problema
de Neuman original. Se não, o problema de Neuman deixa de existir e
portanto não faz sentido falar de solução.
Derivando a solução no ponto x0 e substituindo o valor de A, segue

du (x0 ) 32x0 ¡ ¢ 32xL ¡ ¢ 32x0 ¡ ¢


= C1 − 3 − x20 = uL + 3 − x2L − 3 − x20
dx 3k 3k 3k
¡ ¢
Se os dados k, u0 , u0 e h (x) = 32 1 − x2 satisfizerem (9.48),
Z xL
¡ ¢ 32 ¡ 3 ¢
32 1 − x2 dx = ku0 − kuL = 32(xL − x0 ) − xL − x30
x0 3

então se conclui que


du (x0 )
= u0
dx
e portanto o problema de Neuman tem uma solução. Caso contrário, não
exite solução alguma.
Note que esta solução não depende da constante arbitrária C3 . Portanto,
podemos afirmar que se há uma solução, existe uma infinidade delas, todas
deslocadas verticalmente ao longo do eixo y.

In[4]:= uExata[k_, y_, x0_, xL_, u0_, uL_, c3_] := Module[{c1, c2},
c1 = uL + 32 xL (1 - xL^3/3)/k;
c2 = c3 - a x0 + 16 x0^2 (1 - x0^2/6)/k ;
c1 y + c2 - 16 y^2/k (1 - y^2/6)]

In[4]:= x = Table[(i - 1)/20 - .5, {i, 31}];


funK[y_] := 9
funP[y_] := 0
funQ[y_] := 0
funH[y_] := 32(1 - y^2)
616 CAPÍTULO 9. ELEMENTOS FINITOS

{alfa1, beta1, gama1} = {1, 0, 2};


{alfa2, beta2, gama2} = {1, 0, -2};
Clear[a, b, c, d]
Off[NIntegrate::slwcon]
Off[NIntegrate::ncvb]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, beta2, gama2, a, b, c, d]
uEF = TridiagonalSolve[a, b, c, d];

Atenção: Uma infinidade de soluções. Para obter uma, faça alfa1 = 0,


beta1 = 1 e gama1 = uma constante qualquer.

In[4]:= x = Table[(i - 1)/20 - 0.5, {i, 31}];


funK[y_] := 9
funP[y_] := 0
funQ[y_] := 0
funH[y_] := 32(1 - y^2)
{alfa1, beta1, gama1} = {0, 1, -1};
{alfa2, beta2, gama2} = {1, 0, -2};
Clear[a, b, c, d]
Off[NIntegrate::slwcon]
Off[NIntegrate::ncvb]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, beta2, gama2, a, b, c, d]
uEF1 = TridiagonalSolve[a, b, c, d];

In[4]:= {alfa1, beta1, gama1} = {0, 1, 0};


Clear[a, b, c, d]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, beta2, gama2, a, b, c, d]
uEF2 = TridiagonalSolve[a, b, c, d];

In[4]:= {alfa1, beta1, gama1} = {0, 1, 1};


Clear[a, b, c, d]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, beta2, gama2, a, b, c, d]
uEF3 = TridiagonalSolve[a, b, c, d];

In[4]:= {alfa1, beta1, gama1} = {0, 1, 2};


Clear[a, b, c, d]
617

elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,


alfa2, beta2, gama2, a, b, c, d]
uEF4 = TridiagonalSolve[a, b, c, d];

In[4]:= {alfa1, beta1, gama1} = {0, 1, 3};


Clear[a, b, c, d]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, beta2, gama2, a, b, c, d]
uEF5 = TridiagonalSolve[a, b, c, d];

CD - ROM
In[4]:= Análogo à célula In[4]

In[4]:= {k, x0, xL, u0, uL} = {9, -.5, 1, 2, -2};


uFlux[y_] = -k D[uExata[k, y, x0, xL, u0, uL, 1], y];
p1 = Show[{Plot[{uExata[k, y, x0, xL, u0, uL, -1],
uExata[k, y, x0, xL, u0, uL, 0], uExata[k, y, x0, xL, u0, uL, 1],
uExata[k, y, x0, xL, u0, uL, 2], uExata[k, y, x0, xL, u0, uL, 3]}, {y, -.5,
1},
PlotRange -> {-2, 4},
TextStyle -> {FontSize -> 6.0},
DisplayFunction -> Identity],
ListPlot[Transpose[{x, uEF1}], PlotStyle -> PointSize[0.01],
DisplayFunction -> Identity],
ListPlot[Transpose[{x, uEF2}], PlotStyle -> PointSize[0.01],
DisplayFunction -> Identity],
ListPlot[Transpose[{x, uEF3}], PlotStyle -> PointSize[0.01],
DisplayFunction -> Identity],
ListPlot[Transpose[{x, uEF4}], PlotStyle -> PointSize[0.01],
DisplayFunction -> Identity],
ListPlot[Transpose[{x, uEF5}], PlotStyle -> PointSize[0.01],
DisplayFunction -> Identity]}];
p2 = Show[{Plot[uFlux[y], {y, -.5, 1},
TextStyle -> {FontSize -> 6.0}, PlotRange -> {-20, 20},
DisplayFunction -> Identity],
ListPlot[Transpose[{xC, fluxEF}], PlotStyle -> PointSize[0.01],
DisplayFunction -> Identity]}];
Show[GraphicsArray[{p1, p2}],
DisplayFunction -> $DisplayFunction];

In[4]:= x = Table[(i - 1)/20 - 0.5, {i, 31}];


618 CAPÍTULO 9. ELEMENTOS FINITOS

4 20
15
3
10
2
5
1
-0.4 -0.2 0.2 0.4 0.6 0.8 1
-5
-0.4 -0.2 0.2 0.4 0.6 0.8 1 -10
-1
-15
-2 -20

Figura 9.24:

funK[y_] := 10
funP[y_] := 0
funQ[y_] := 0
funH[y_] := 32(1 - y^2)
{alfa1, beta1, gama1} = {1, 0, 2};
{alfa2, beta2, gama2} = {1, 0, -2};
Clear[a, b, c, d]
Off[NIntegrate::slwcon]
Off[NIntegrate::ncvb]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, beta2, gama2, a, b, c, d]
uEF1 = TridiagonalSolve[a, b, c, d];
Atenção: Balanço do fluxo = 4. Não há solução.

In[4]:= funK[y_] := 9
{alfa1, beta1, gama1} = {1, 0, 3};
Clear[a, b, c, d]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, beta2, gama2, a, b, c, d]
uEF1 = TridiagonalSolve[a, b, c, d];
Atenção: Balanço do fluxo = -9. Não há solução.

Exemplo 7.3 A partição do intervalo em elementos finitos não pre-


cisa ser uniforme como foi feito até agora. Neste exemplo vamos usar uma
partição não-uniforme. Seja equação de Airy, () (Seção , pag ),

d2 u
− xu = 0, 2 < x < 10
dx2
619

sujeita às condições de Dirichlet u (2) = 5 e u (10) = −10. Note que k (x) =


1, p (x) = 0, q (x) = x e h (x) = 0.Vamos comparar graficamente a solução
exata com a solução aproximada por elemtos finitos com a seguinte partição:
x = {2., 2.01, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4, 5, 6, 7, 8, 8.25, 8.5, 8.75,
9., 9.125, 9.25, 9.375, 9.5, 9.625, 9.75, 9.875, 9.9, 9.99, 10}
Note que a equação de Airy é um caso particular de (9.17) em que
k (x) = 1, p (x) = 0, q (x) = −x e h (x) = 0.
Primeiro, a solução exata. De (), a solução da equação de Airy é

u (x) = C1 Ai (x) + C2 Bi (x).

em que Ai (x) e Bi (x) são, respectivamente, as funções de Airy de primeira


e segunda espécies
Aplicando as condições de fronteira,

u (x0 ) = C1 Ai (x0 ) + C2 Bi (x0 ) = u0

e
u (xL ) = C1 Ai (xL ) + C2 Bi (xL ) = uL
Resolvendo este sistema de equações, obtém-se
u0 Bi (xL ) − uL Bi (x0 )
C1 =
Ai (x0 )Bi (xL ) − Ai (xL )Bi (x0 )
e
Ai (x0 )uL − Ai (xL )u0
C1 =
Ai (x0 )Bi (xL ) − Ai (xL )Bi (x0 )

In[4]:= uExata[y_, x0_, xL_, u0_, uL_] := Module[{c1, c2, den},


den = AiryAi[x0] AiryBi[xL] - AiryAi[xL] AiryBi[x0];
c1 = (u0 AiryBi[xL] - uL AiryBi[x0])/den;
c2 = (AiryAi[x0] uL - AiryAi[xL] u0)/den;
c1 AiryAi[y] + c2 AiryBi[y]];

Como sempre, o fluxo é dado por

In[4]:= uFlux[y_] = -funK[y] D[uExata[y, x0, xL, u0, uL], y];

In[4]:= x = {2., 2.01, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4, 5, 6, 7, 8, 8.25, 8.5,
8.75, 9., 9.125, 9.25, 9.375, 9.5, 9.625, 9.75, 9.875, 9.9, 9.99, 10};
funK[y_] := 1;
funP[y_] := 0;
620 CAPÍTULO 9. ELEMENTOS FINITOS

funQ[y_] := y;
funH[y_] := 0 ;
{alfa1, beta1, gama1} = {0, 1, 5};
{alfa2, beta2, gama2} = {0, 1, -10};
Clear[a, b, c, d]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, \
beta2, gama2, a, b, c, d]
uEF = TridiagonalSolve[a, b, c, d];

CD - ROM
In[4]:= Análogo à célula In[4]

In[4]:= p1 = Show[{Plot[uExata[y, 2, 10, 5, -10], {y, 2, 10},


PlotRange -> {-10, 5},
TextStyle -> {FontSize -> 8.0},
DisplayFunction -> Identity],
ListPlot[Transpose[{x, uEF}],
PlotStyle -> PointSize[0.02],
DisplayFunction -> Identity]}];
uFlux[y_] = funK[y] D[uExata[y, 2, 10, 5, -10], y];
p2 = Show[{Plot[uFlux[y], {y, 2, 10},
TextStyle -> {FontSize -> 8.0},
PlotRange -> {5, -35},
DisplayFunction -> Identity],
ListPlot[Transpose[{xC, fluxEF}],
PlotStyle -> PointSize[0.02],
DisplayFunction -> Identity]}];
Show[GraphicsArray[{p1, p2}],
DisplayFunction -> $DisplayFunction];
Exemplo 7.3 Em todos os exemplos até aqui analisados, a função k (x)
tem sido considerada constante. Entretanto, na prática, a função k (x) rara-
mente é constante, sendo, em muitos casos, uma função contínua ou mesmo
contínua por partes. Neste exemplo vamos considerar a função k (x) como
sendo contínua. Para tornar o exemplo mais interessante ainda, vamos con-
siderar que as funções p (x) e q (x) sejam funções não nulas. Em outras
palavras, pela primeira vez, vamos, de fato, explorar a equação (9.21) na
sua totalidade. Dito isto, seja a equação diferencial,
µ ¶
d 2 du du ¡ 2 ¢ 2x3
− x +x − x −4 u=− , 0 < x0 < x < xL
dx dx dx 3π
621

35
4
30
2
25
4 6 8 10 20
-2
15
-4
10
-6
5
-8
-10 4 6 8 10
-5

Figura 9.25:

sujeita às condicões de Dirichlet u (x0 ) = u0 e u (xL ) = uL . Note que


k (x) = x2 , p (x) = x, q (x) = −x2 + 4 e h (x) = −2x2 / (3π).
O objetivo deste exercício é calcular a solução exata e a resposta aprox-
imada com 28 elementos uniformemente distribuídos no intervalo [1, 10]
sabendo-se que u0 = −1 e uL = −10.
Esta equação diferencial pode ser reescrita da seguinte maneira,

¡ ¢3
d2 u du ¡ 2 ¢ 4 12 x
x2 2 +x 2
+ x − 2 u = √ ¡5¢, 0 < x < 10
dx dx πΓ 2
¡ ¢ √
visto que Γ 52 = 3 π/4.
De acordo com a equação (??) podemos afirmar que a solução geral desta
equação é
u (x) = C1 J2 (x) + C2 Y2 (x) + H2 (x) ,
em que J2 (x) e Y2 (x) são as funções de Bessel e H2 (x) a função de Struve
de ordem 2.
Aplicando as condições de fronteira u (x0 ) = u0 e u (xL ) = uL , vem

C1 J2 (x0 ) + C2 Y2 (x0 ) = u0 − H2 (x0 ) ,

e
C1 J2 (xL ) + C2 Y2 (xL ) = uL − H2 (xL ) .
Resolvendo este sistema, obtém-se
[u0 − H2 (x0 )] Y2 (xL ) − [uL − H2 (xL )] Y2 (x0 )
C1 =
J2 (x0 ) Y2 (xL ) − J2 (xL ) Y2 (x0 )
e
J2 (x0 ) [uL − H2 (xL )] − J2 (xL ) [u0 − H2 (x0 )]
C2 =
J2 (x0 ) Y2 (xL ) − J2 (xL ) Y2 (x0 )
622 CAPÍTULO 9. ELEMENTOS FINITOS

De posse das constantes C1 e C2 pode-se calcular u (x) em qualquer ponto


do intervalo [x0 , xL ]. Nos velhos tempos, antes dos computadores, esta era
uma tarefa formidável. Agora com os computadores e o Mathematica tudo
ficou mais fácil. Assim,

In[4]:= uExata[y_, x0_, xL_, u0_, uL_] := Module[{c1, c2},


den = (BesselJ[2, x0] BesselY[2, xL] - BesselJ[2, xL] BesselY[2, x0]);
c1 = ((u0 - StruveH[2, x0])BesselY[2, xL] - (uL - StruveH[2, xL])BesselY[2,
x0])/den;
c2 = (BesselJ[2, x0](uL - StruveH[2, xL]) - BesselJ[2, xL](u0 - StruveH[2,
x0]))/den;
c1 BesselJ[2, y] + c2 BesselY[2, y] + StruveH[2, y]]

Como sempre, o fluxo −k (x) du (x) /dx é calculado por

In[4]:= uFlux[y_, x0_, xL_, u0_, uL_] = -funK[y] D[uExata[y, x0, xL, u0,
uL], y];

Usando-se uma partição com 28 elementos e os dados do problema, a


solução aproximada por elementos finitos e computada com

In[4]:= {x0, xL, u0, uL} = {1, 10, -1, -10};


x = 10 Table[(i + 2.)/30, {i, 28}];
funK[y_] := y^2;
funP[y_] := y;
funQ[y_] := -y^2 + 4;
funH[y_] := - 2y^3/(3Pi) ;
{alfa1, beta1, gama1} = {0, 1, u0};
{alfa2, beta2, gama2} = {0, 1, uL};
Clear[a, b, c, d]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, beta2, gama2, a, b, c, d]
uEF = TridiagonalSolve[a, b, c, d];

Como de costume, o fluxo é fornecico com


CD - ROM
In[4]:= Análogo à célula In[4]

Finalmente, o traçado da soluções exata e aproximada é efetuado por


meio de,
623

20 1000
800
10
600
400
2 4 6 8 10 200
-10
2 4 6 8 10
-200
-20
-400
-30 -600

Figura 9.26:

In[4]:= p1 = Show[{Plot[uExata[y, x0, xL, u0, uL], {y, x0, xL},


PlotRange -> {-30, 20}, TextStyle -> {FontSize -> 6.0},
DisplayFunction -> Identity],
ListPlot[Transpose[{x, uEF}], PlotStyle -> PointSize[0.015],
DisplayFunction -> Identity]}];
p2 = Show[{Plot[uFlux[y, x0, xL, u0, uL], {y, x0, xL},
PlotRange -> {-600, 1000}, TextStyle -> {FontSize -> 6.0},
DisplayFunction -> Identity],
ListPlot[Transpose[{xC, fluxEF}], PlotStyle -> PointSize[0.015],
DisplayFunction -> Identity]}];
p3 = Show[GraphicsArray[{p1, p2}],
DisplayFunction -> $DisplayFunction];
Exemplo 7.4 Neste último exemplo a função k(x) é do tipo contínua
por partes. Estas funções são, de longe, as mais importantes nas aplicações
práticas. É aqui que o algoritmo dos elementos finitos mostra todo seu
valor e versatilidade, ao contrário de outros métodos que enfrentam grandes
dificuldades computacionais no trato deste tipo de funções. Podemos até
dizer que deixamos o melhor pora o fim.
Seja a equação diferencial

d2 u
−k + u = h (x) . x0 < x < xL ,
dx2
em que a função k (x) é expressa por

⎨ k1 , x0 < x < r
k (x) = k , r<x<s ,
⎩ 2
k3 , s < x < xL

sendo k1 , k2 e k3 constantes positivas. Afim de tornar o problema ainda


mais realista, suponhamos a função fonte h (x) também contínua por partes
624 CAPÍTULO 9. ELEMENTOS FINITOS

e representada por

⎨ 0., ¡ ¢ x0 < x < r
2
5x x − 1 , r < x < s
h (x) =

0., s < x < xL

Para concluir a formulação do problema falta a expecificação das condições


de fronteiras. Nas fronteiras externas vamos usar as condições de Dirichlet,

u (x0 ) = u0 , (9.49)

u (xL ) = uL , (9.50)
e nas fronteiras internas (nos pontos de descontinuidade da função k (x))
vamos usar as condições naturais de continuidade de fluxos. Portanto,
¯ ¯
du ¯¯ du ¯¯
k1 ¯ = k2 ¯ (9.51)
dx x=r dx x=s
e
¯ ¯
du ¯¯ du ¯¯
k2 ¯ = k3 ¯ . (9.52)
dx x=r dx x=s
Agora temos£ todas¤ as informações para resolver o problema. Iniciando
com o intervalo x0 , r podemos escrever
√ √
u1 (x) = A1 ex/ k1
+ A2 e−x/ k1
.

No segundo intervalo [r, s],


√ √
u2 (x) = B1 ex/ k2
+ B2 e−x/ k2
+ 5x(x2 + 6k2 − 1),

e no terceiro intervalo [s, xL ],


√ √
u3 (x) = C1 ex/ k3
+ C2 e−x/ k3

Três equações não são suficientes para a determinação das seis con-
stantes. É preciso, portanto, mais três equações.£ ɤ ai que entram as
equações dos fluxos. Assim, no primeiro intervalo x0 , r ,

du1 p ³ √ √ ´
k1 = k1 A1 ex/ k1 − A2 e−x/ k1 ,
dx
625

no segundo intervalo [r, s],


du2 p ³ √ √ ´ ¡ ¢
k2 = k2 B1 ex/ k2 − B2 e−x/ k2 + 5k2 3x2 + 6k2 − 1 ,
dx
e no terceiro intervalo [s, xL ],
du3 p ³ √ √ ´
k3 = k3 C1 ex/ k3 − C2 e−x/ k3
dx
Agora temos seis equações lineares e seis incógnitas.
√ Aplicando as condições
x/ kj j
de fronteiras (9.49) - 9.52 e substituíndo e por γ x para encurtar as ex-
pressões algébricas, vem
A1 γ 1x0 + A2 /γ 1x0 = u0
£ ¤
A1 γ 1r + A2 /γ 1r = B1 γ 2r + B2 /γ 2r + 5r r2 + 6k2 − 1
p ¡ ¢ p ¡ ¢ £ ¤
k1 A1 γ 1r − A2 /γ 1r = k2 B1 γ 2r − B2 /γ 2r + 5k2 3r2 + 6k2 − 1
£ ¤
B1 γ 2s + B2 /γ 2s + 5s s2 + 6k2 − 1 = C1 γ 3s + C2 /γ 3s
p ¡ ¢ £ ¤ p ¡ ¢
k2 B1 γ 2s − B2 /γ 2s + 5k2 3s2 + 6k2 − 1 = k3 C1 γ 3s − C2 /γ 3s
C1 γ 3xL + C2 /γ 3xL = uL
Reescrevendo em forma matricial, resulta
Mv = f
em que
⎡ ⎤
γ 1x0 1/γ 1x0 0 0 0 0
⎢ 1 1 2 2 ⎥
⎢ √γr 1 1/γ r
√ −γ r
√ −1/γ r
√ 0 0 ⎥
⎢ k1 γ r − k1 /γ 1r − k2 γ 2r k2 /γ 2r 0 0 ⎥
M=⎢
⎢ 2 2 3 3
⎥,

⎢ 0 0 γ
√ s 2 1/γ
√ s 2 −γ
√ s 3 √ −1/γ s ⎥
⎣ 0 0 k2 γ s − k2 /γ s − k3 γ s k3 /γ 3s ⎦
0 0 0 0 γ 3xL 1/γ 3xL

v = (A1 , A2 , B1 , B2 , C1 , C2 )T
e
⎡ ⎤
£ u0 ¤
⎢ 5r £r2 + 6k2 − 1 ¤ ⎥
⎢ ⎥
⎢ 5k2 £3r2 + 6k2 − 1¤ ⎥
f =⎢



⎢ −5s £s2 + 6k2 − 1 ¤ ⎥
⎣ −5k2 3s2 + 6k2 − 1 ⎦
uL
626 CAPÍTULO 9. ELEMENTOS FINITOS

In[4]:= (* Calcula o vetor {a1, a2, b1, b2, c1, c2} *)


mVh[x0_, r_, s_, xL_, k1_, k2_, k3_, u0_, uL_] :=
Module[{gx01 = Exp[x0/Sqrt[k1]], gr1 = Exp[r/Sqrt[k1]],
gr2 = Exp[r/Sqrt[k2]], gs2 = Exp[s/Sqrt[k2]], gs3 = Exp[s/Sqrt[k3]],
gxL3 = Exp[xL/Sqrt[k3]]},
matrixM = {{gx01, 1./gx01, 0, 0, 0, 0}, {gr1, 1./gr1, -gr2, -1./gr2, 0,
0},
{Sqrt[k1] gr1, -Sqrt[k1]/gr1, -Sqrt[k2] gr2, Sqrt[k2]/gr2, 0, 0},
{0, 0, gs2, 1./gs2, -gs3, -1./gs3},
{0, 0, Sqrt[k2] gs2, -Sqrt[k2]/gs2, -Sqrt[k3] gs3, Sqrt[k3]/gs3},
{0, 0, 0, 0, gxL3, 1./gxL3}};
vetorH = {u0, 5 r (r^2 + 6 k2 - 1.0), 5 k2 (3 r^2 + 6 k2 - 1),
-5 s (s^2 + 6 k2 - 1.0), -5 k2 (3 s^2 + 6 k2 - 1), uL};
{a1, a2, b1, b2, c1, c2} = LinearSolve[matrixM, vetorH]];

In[4]:= uExata[y_, x0_, r_, s_, xL_, k1_, k2_, k3_] := Module[{},
Evaluate[Which[
x0 <= y < r, a1 Exp[y/Sqrt[k1]] + a2 Exp[-y/Sqrt[k1]],
r <= y < s, b1 Exp[y/Sqrt[k2]] + b2 Exp[-y/Sqrt[k2]] +
5 y(y^2 + 6k2 - 1),
s < y <= xL, c1 Exp[y/Sqrt[k3]] + c2 Exp[-y/Sqrt[k3]]]]]

In[4]:= uFlux[y_, x0_, r_, s_, xL_, k1_, k2_, k3_] =


-funK[y] D[uExata[y, x0, r, s, xL, k1, k2, k3], y];

In[4]:= {x0, r, s, xL, k1, k2, k3, u0, uL} = {0, 1/3, 2/3, 1., 2., .005, .01, 1., -1.};
x = Table[(i - 1.)/30, {i, 31}];
funK[y_] := Module[{},
Which[x0 < y < r, 2., r < y < s, 0.005, s < y < xL, 0.01]];
funP[y_] := 0;
funQ[y_] := 1.;
funH[y_] := Module[{},
Which[x0 < y < r, 0, r < y < s, 5.(y^3 - y), s < y < xL, 0]];
{alfa1, beta1, gama1} = {0, 1, 1};
{alfa2, beta2, gama2} = {0, 1, -1};
Clear[a, b, c, d]
Off[NIntegrate::slwcon]
Off[NIntegrate::ncvb]
elementosFinitos1D[x, funK, funP, funQ, funH, alfa1, beta1, gama1,
alfa2, beta2, gama2, a, b, c, d]
9.1. EQUAÇÃO DIFERENCIAIS PARCIAIS 627

1.5 0.6
1
0.5 0.4

0.2 0.4 0.6 0.8 1


-0.5 0.2
-1
-1.5
0.2 0.4 0.6 0.8 1
-2
-2.5 -0.2

Figura 9.27:

uEF = TridiagonalSolve[a, b, c, d];

CD - ROM
In[4]:= Análogo à célula In[4]

In[4]:= mVh[x0, r, s, xL, k1, k2, k3, u0, uL];


p1 = Show[{Plot[uExata[y, x0, r, s, xL, k1, k2, k3], {y, 0, 1},
PlotRange -> {-2.5, 1.5}, TextStyle -> {FontSize -> 5.0},
DisplayFunction -> Identity],
ListPlot[Transpose[{x, uEF}],
PlotStyle -> PointSize[0.015],
DisplayFunction -> Identity]}];
p2 = Show[{Plot[uFlux[y, x0, r, s, xL, k1, k2, k3], {y, 0, 1},
PlotRange -> {-.2, .601}, TextStyle -> {FontSize -> 5.0},
DisplayFunction -> Identity],
ListPlot[Transpose[{xC, fluxEF}], PlotStyle -> PointSize[0.015],
DisplayFunction -> Identity]}];
Show[GraphicsArray[{p1, p2}],
DisplayFunction -> $DisplayFunction];

9.1 Equação Diferenciais Parciais


−∇2 u (x, y) = h (x, y)

∞ ∞ Z aZ b
4 X X sin kπx
lπy
a sin b
¡ ¢ kπx 0 lπy 0 0 0
u (x, y) = ¡ kπ ¢2 ¡ lπ ¢2 h x0 , y 0 sin sin dx dy
ab + 0 0 a b
k=1 l=1 a b
628 CAPÍTULO 9. ELEMENTOS FINITOS

In[2]:= << Graphics‘PlotField‘

In[2]:= << Graphics‘PlotField3D‘

In[2]:= kernel2D[funH_, a_, b_, m_, n_] := Module[{x, y},


Integrate[Integrate[funH[x, y] Sin[m Pi x/a], {x, 0, a}] Sin[n Pi y/b], {y,
0, b}]]

In[2]:= poissonEq2D[kern_, x_, y_, a_, b_, mMax_, nMax_] := Module[{},


4./(a b)Sum[Sum[If[kern != 0, kern/((m Pi/a)^2 + (n Pi/b)^2) Sin[m
Pi x/a], 0],
{m, mMax}] Sin[n Pi y/b], {n, nMax}]]

In[2]:= {a, b, mMax, nMax} = {2., 2., 15, 15};


funH[x_, y_] := x^2 y
kern = kernel2D[funH, a, b, m, n] // Simplify;
Show[GraphicsArray[{Plot3D[
poissonEq2D[kern, x, y, a, b, mMax, nMax], {x, 0, a}, {y, 0, b},
AxesLabel -> {”x”, ”y”, ”U(x,y)”}, DisplayFunction -> Identity],
PlotGradientField[-poissonEq2D[kern, x, y, a, b, mMax, nMax],
{x, 0, a}, {y, 0, b},
ScaleFunction -> (.4 &), Frame -> True,
DisplayFunction -> Identity]}],
DisplayFunction -> $DisplayFunction];
9.1. EQUAÇÃO DIFERENCIAIS PARCIAIS 629

0.4
0.3 2
0.2
0.1 1.5
0
0 1

0.5

1 0.5

1.5
0
2

Figura 9.28:

0.4
0.3 2
0.2
0.1 1.5
0
0 1

0.5

1 0.5

1.5
0
2

Figura 9.29:
630 CAPÍTULO 9. ELEMENTOS FINITOS

1.5

0.4
0.3 2 1
0.2
0.1 1.5
0
0 1
0.5
0.5
1 0.5
1.5
20 0

0 0.5 1 1.5 2

Figura 9.30:

2 1 5 6 2

21
1.5 14 17

12 7

1 20 13 19

11 8

15 16
0.5
18

0 4 10 9 3

0 0.5 1 1.5 2

Figura 9.31:
9.1. EQUAÇÃO DIFERENCIAIS PARCIAIS 631

2 4 22 23 24 1

33 32
26 25

1.5 21 8 13
12 11
27 34

1 20 5 7 14

36 31
9 10

0.5 19 6 15
28 30
29 35

0 3 18 17 16 2

0 0.5 1 1.5 2

Figura 9.32:
632 CAPÍTULO 9. ELEMENTOS FINITOS

2 1 22 5 23 6 24 2

35 65 66 47
34 46
33 25
21
68 69
1.5 14 17
36 48
12 67 7
37 49
63 59
61 55

1 32 20 62 13 57 19 26
60 56
64 58
41 45
11 52 8
40 43
15 16
0.5 53 54
18
31 27
38 39 44 42
51 50

0 4 30 10 29 9 28 3

0 0.5 1 1.5 2

Figura 9.33:
9.1. EQUAÇÃO DIFERENCIAIS PARCIAIS 633

2 1 70 22 82 5 71 23 83 6 72 24 84 2
100 98 225 227 231 229 140 142 138 136
93 94 96 73
228 65 233 66 232 47 143
97 34 101 35 46 139
33 240242 226230248246141 25
95 99 2392124569 137147
104105 68 146
1.5 81 14 238 243235249 244 17 145 85
36 103 241 247149 48
102 213107 67 194 144
12 7
207215 216 37 236 237 49 197 196178
204 63 234 59 175
92 217 148 187199 19855 74
61 211 106
206 205214218 195176 177
1 32 208 20210 62 209 13 184 57 18519 183 26
202 201220224 189180 181
80 60
22364
212 120 134 186193 19256 86
200 159 58 179
203221 222 41 161 162 45 191 190182
11 219121 188 8
116
40 117 16616852174172135 43
126
91 15 163 160 54 169 16 127 75
0.5 118119 53164 128
109113 18170 131 123129
31 111 165167155151173171 27
38 115 39 42 124
157 51 158 50 153 44 133
79 108 110 114 87
112 154 156 152 150 130 132 125 122
0 4 90 30 78 10 89 29 77 9 88 28 76 3
0 0.5 1 1.5 2

Figura 9.34:
634 CAPÍTULO 9. ELEMENTOS FINITOS

1.5

0.5

0
0 0.5 1 1.5 2

Figura 9.35:

In[2210]:=
nx = 8;
ny = 8;
gridFE[1., 1., nx, ny];
funKx[{x_,y_}]:= 1;
funKy[{x_,y_}]:= 1;
funP[{x_,y_}]:=0;
funH[{x_,y_}]:= 2;
(* funU1[{x_,y_}]:=If[y<1,1-y,y-1];
funU2[{x_,y_}]:=If[x<1,1-x,x-1];
funU3[{x_,y_}]:= If[y<1,1-y,y-1];
funU4[{x_,y_}]:= If[x<1,1-x,x-1]; *)
funU1[{x_,y_}]:=0;
funU2[{x_,y_}]:=0;
funU3[{x_,y_}]:= y;
funU4[{x_,y_}]:= x;
elemXY = Table[Part[coordXY,elemN[[i]]],{i,Length[elemN]}];
9.1. EQUAÇÃO DIFERENCIAIS PARCIAIS 635

xyC = Table[{Apply[Plus,First[Transpose[elemXY[[i]]]]],
Apply[Plus,Last[Transpose[elemXY[[i]]]]]},{i,Length[elemN]}]/3;
kx = Map[funKx,xyC];
ky = Map[funKy,xyC];
p = Map[funP,xyC];
h = Map[funH, xyC];
bcXY = Table[Part[coordXY,bcN1[[i]]],{i,Length[bcN1]}];
u1 = Map[funU1,bcXY];
bcXY=Table[Part[coordXY,bcN2[[i]]],{i,Length[bcN2]}];
u2 = Map[funU2,bcXY];
bcXY=Table[Part[coordXY,bcN3[[i]]],{i,Length[bcN3]}];
u3 = Map[funU3,bcXY];
bcXY=Table[Part[coordXY,bcN4[[i]]],{i,Length[bcN4]}];
u4 = Map[funU4,bcXY];
helmholtz1FE[coordXY,elemN,kx,ky, p, h, bcN1,u1, ’’N’’,bcN2,u2,
’’N’’,
bcN3,u3,’’D’’, bcN4,u4,’’D’’];
unXY=Transpose[Join[Transpose[coordXY+1],{unFE}]];
unE=Table[unXY[[elemN[[i]]]],{i,Length[elemN]}];
unT=Table[Polygon[unE[[i]]],{i,Length[unE]}];
Show[Graphics3D[unT],Axes->True,AxesLabel->{’’x’’,’’y’’,’’z’’},
BoxRatios->{2,2,0.75},TextStyle->{FontSize->6.0},
Ticks->{{1.,1.25,1.5,1.75,2.},{1.,1.25,1.5,1.75,2.},Automatic}];

Método por Elementos Finitos de Fronteira (Boundary Element Method)

∇2 u = h
u = u0
∂u
q = = q0
∂n
636 CAPÍTULO 9. ELEMENTOS FINITOS

Z Z
¢ ¡ 2
∇ u wdxdy = hwdxdy

Z µ ¶ Z ZΩ
∂u ∂w ∂u ∂w ∂u
− − dxdy + wdl = hwdxdy
Ω ∂x ∂x ∂y ∂y ∂Ω ∂n Ω
Z µ 2 ¶ Z Z Z
∂ w ∂ 2w ∂u ∂w
u+ u dxdy + wdl − u dl = hwdxdy
Ω ∂x2 ∂y 2 ∂n ∂n
Z Z∂Ω Z∂Ω ZΩ
¡ 2 ¢ ∂u ∂w
∇ w udxdy + wdl − u dl = hwdxdy
Ω ∂Ω ∂n ∂Ω ∂n Ω

Z Z Z Z Z Z
¡ 2 ¢ ∂w ∂w
∇ w udxdy+ qwdl+ q0 wdl− u0 dl− u dl = hwdxdy
Ω ∂Ω1 ∂Ω2 ∂Ω1 ∂n ∂Ω2 ∂n Ω

∇2 g ∗ = δ (x0 , y0 )
µ ¶
∗ 1 1
g = ln
2π r
q
r = (x − x0 )2 + (y − y0 )2
Z Z Z Z Z
∗ ∗ ∂g ∗ ∂g ∗
u (x0 , y0 )+ qg dl+ q0 g dl− u0 dl− u dl = hg ∗ dxdy
∂Ω1 ∂Ω2 ∂Ω1 ∂n ∂Ω2 ∂n Ω
Z Z Z
∗ ∂g ∗
u (x0 , y0 ) + qg dl − u dl = hg ∗ dxdy
∂Ω ∂Ω ∂n Ω
Z µ ¶
1 1 −1
lim q ln dl = lim [q ln ( ) ] = 0
→0 ∂Ω 2π r 2 →0
∂g ∗ ∂g ∗ ∂r −1 1
= =
∂n ∂r ∂n 2π r
Z ∙ ¸
−1 1 −1 1 1
lim u dl = lim u = − u (x0 , y0 )
→0 ∂Ω 2π r 2 →0 2
Z Z Z
1 ∂g ∗
ui + u dl = qg ∗ dl + hg ∗ dxdy
2 ∂Ω ∂n ∂Ω Ω

½ ¾ ½ ¾
£ ¤ U1 £ ¤ Q1
H1 H11 = G1 G11
U11 Q11
9.1. EQUAÇÃO DIFERENCIAIS PARCIAIS 637

½ ¾ ½ ¾
£ ¤ U2 £ ¤ Q2
H2 H21 = G2 G12
U21 Q12

U11 = U21
Q11 = −Q12

⎧ ⎫ ⎧ ⎫
∙ ¸ ⎨ U1 ⎬ ∙ ¸ ⎨ Q1 ⎬
H1 H11 0 1
G1 G1 0
U1 = Q1
0 H21 H2 ⎩ 1 ⎭ 0 G12 G2 ⎩ 1 ⎭
U2 Q2
⎧ ⎫
¸⎪⎪ U1 ⎪ ∙
∙ ⎨ 1 ⎪⎬ ¸½ ¾
H1 H11 1
−G1 0 U1 G1 0 Q1
=
0 H21 G12 H2 ⎪ ⎪ Q1 ⎪ 0 G2 Q2
⎩ 1 ⎪⎭
U2

∇2 u + λ2 u = 0 em Ω
u = u em ∂Ω1
q = q em ∂Ω2

Z Z Z
¡ 2 ∗ ¢ dg ∗
∇ g + λ2 g ∗ ds = − ∗
qg dl + u dl
Ω ∂Ω ∂Ω dn

∇2 g ∗ + λ2 g ∗ = δ (x)

i 1
g∗ = H (λr)
4 0
∂g ∗ iλ
q∗ = = − H11 (λr)
∂r 4

H01 (λr) = J0 (λr) + iY0 (λr)


H11 (λr) = J1 (λr) + iY1 (λr)

Três dimensões
638 CAPÍTULO 9. ELEMENTOS FINITOS

1
g∗ =
4πr
∂g ∗ −1
q∗ = =
∂r 4πr2

1 iλr
g∗ = e
4πr µ ¶
∂g ∗ 1 −1
q∗ = = + iλ eiλr
∂r 4πr r

9.2 Sumário
Na segunda metade do século XIX foram propostas várias teorias para ex-
plicar numa única abordagem os fenômenos elétricos, magnéticos e óticos,
até então conhecidos. Entre todas elas, a de Maxwell é a mais popu-
lar por sua simplicidade e versatilidade, tanto do ponto de vista teórico
como prático. Inicialmente, Maxwell propôs vinte equações que posteri-
ormente, após a sua morte aos 48 anos, foram reescritas por Heaviside em
oito equações que deram origem as quatro equações vetoriais universalmente
conhecidas como equações de Maxwell. Estas equações podem ser represen-
tadas tanto na forma integral como diferencial. A forma integral é mais
conveniente para visualizar o conteúdo físico das equações. Por outro lado,
a representação diferencial é mais vantajosa para se fazer os cálculos
Neste primeiro capítulo, fizemos um vôo panorâmico sobre as equações
de Maxwell. Nos dois próximos capítulos aterrissaremos para apreciar os
detalhes.
No vôo panorâmico foram apresentadas cinco versões das equações de
Maxwell. A primeira versão tratou apenas dos campos microscópicos E
e B, sem levar em consideração nenhuma informação, a priori, sobre as
propriedades elétricas e magnéticas dos meios intervenientes. Na segunda
versão os meios já se fazem presentes por meio dos campos macroscópicos D e
H, embora ainda de modo camuflado. Estas duas versões são absolutamente
equivalentes e são demasiadamente gerais para os nossos objetivos. Por isso,
na Figura ??, o círculo correspondente a estas duas versões abrange todos
os demais círculos ligados às versões mais especializadas.
Na última versão, a mais simplificada de todas, as equações de Maxwell
também envolve o tempo, porém de maneira bastante especial. O tempo,
agora, varia de forma senoidal com uma freqüência fixa, e por isso se diz que
9.3. EXERCÍCIOS 639

as equações estão no domínio da freqüência. O mais interessante de tudo


isso é que em muitos casos a solução de um problema no domínio do tempo
se reduz a vários problemas simples no domínio da freqüência.
Sinceramente, é possível que o leitor, principalmente os iniciantes ao
eletromagnetismo, não tenha absorvido completamente todas as nuanças
discutidas neste primeiro capítulo. Mas, eu espero que o leitor esteja agora
suficientemente motivado para juntos descobrirmos os segredos do eletro-
magnetismo. Afinal de contas o propósito deste primeiro capítulo é servir
de motivação para o desenvolvimento dos dois próximos capítulos. Lá, tenho
certeza que tudo ficará transparente, claro como o dia!

9.3 Exercícios
1. Seja R+ o conjunto constituído de todos os números reais positivos,
e definamos a ”adição ” e a ”multiplicação por escalares ” em R+
como segue: se x e y pertencem a R+ , seja

x + y = xy,

onde o produto que aparece no lado direito da igualdade é o produto


comum dos números reais x e y. Se α é um número real arbitrário,
seja
αx = xα .
Verifique que R+ com essas operações de adição e multiplicação for-
mam um espaço vetorial sobre R.
© ª
2. Seja Z5 = 0, 1, 2, 3, 4 o conjunto formado pelas classes de equiv-
alência de inteiros módulo 5, isto é, cada elemento de Z5 é o resto da
divisão de um número inteiro por 5. A soma de x e y em Z5 é definida
como sendo o resto da divisão da soma dos inteiros x e y pelo inteiro
5. Por exemplo, 3 + 4 é igual a 2, pois o resto da divisão, nos inteiros,
de 7 por 5 é 2. Analogamente, definimos o produto de xy em Z3 como
sendo o resto da divisão dos inteiros x e y pelo inteiro 5. Por exemplo,
2 vezes 4 é igual ao elemento 3, pois o resto da divisão, nos inteiros,
de 8 por 5 é igual a 3.

• Verifique que essas operações de adição e multiplicação são fechadas em


Z5 , isto é, dados quaisquer x e y de Z5 , x + y e xy também pertencem
a Z5.
• Qual o elemento neutro de Z5 ?
640 CAPÍTULO 9. ELEMENTOS FINITOS

• Verifique que todo elemento x de Z5 tem um inverso aditivo. (um


elemento y de Z5 tal que x + y = 0).

• Verifique que todo elemento x de Z5 diferente de 0 tem um inverso


multiplicativo (um elemento y de Z5 tal que xy = 1).

• Verifique que os elementos de Z5 satisfazem as propriedades aritméti-


cas semelhantes às dois números reais.
3. Verifique que o conjunto Mz5 das matrizes dois por dois formadas
com elementos de Z5 , munido da adição definida por
     
a b e f a+e b+f
+ =
c d g h c+g d+h

e da multiplicação por escalar (elemento de Z5 ) definida por


µ ¶ µ ¶
a b αa αb
α =
c d cα αd

é um espaço vetorial sobre Z5 .

4. Seja C o conjunto dos números complexos com a adição

(a + bi) + (c + di) = (a + c) + (b + d) i

e multiplicação por escalar

α (a + bi) = αa + αbi,

Verifique que C é um espaço vetorial real. Compare esse espaço com R2 .

5. Verifique que o conjunto R4 das matrizes do tipo


µ ¶
a b
sendo a, b ∈ C e a, b conjugados de a, b.
−b a

é um subespaço do espaço vetorial real das matrizes complexas dois por dois.
Compare esse subespaço com R4 .
µ ¶ µ ¶
1 + 3i −1 + 2i 2 1 + 3i
6. Verifique se os vetores , e
1 + 2i 1 − 3i −1 + 3i 2
µ ¶
1−i 0
são linearmente independente em.R4
0 −1 + i

7. Calcule hf , gi para cada par de vetores de C [0, 1] dados abaixo


9.3. EXERCÍCIOS 641

• f (x) = ex e g (x) = sin x


¯ ¯ ¯ ¯
• f (x) = ¯x − 12 ¯ e g (x) = 12 − ¯x − 12 ¯

• f (x) = sin πx/2 e g (x) = cos πx/2

8. Seja x = (x1 , x2 ) e y = (y1 , y2 ) vetores de R2 e seja


µ ¶
α11 α12
(αij ) =
α21 α22

matrizes de números reais. Mostre que

hx, yi = α11 x1 y1 + α12 x1 y2 + α21 x2 y1 + α22 x2 y2 (1)

define um produto interno em R2 se e somente se (αij ) é uma matriz


simétrica tal que
α11 x21 + (α12 + α21 ) x1 x2 + α11
seja não-negativo para quaisquer x1 e x2, e zero se e somente se x1 = x2 = 0.

8. Use o resultado do exercício anterior para encontrar uma matriz 2


por 2 que torne o produto interno (1) no produto canônico de R2 .
Determine quais das matrizes
µ ¶ µ ¶ µ ¶
2 1 −1 0 1 1
, , ,
1 1 0 1 1 1

podem ser usadas para definir um produto interno em R2 .

10 . Determine o cosseno do ângulo entre cada um dos pares de vetores


em P3

• 1, x

• x, x2

• x, 1 − x

se o produto interno é
Z 1
hp, qi = p (x) q (x) dx (2)
−1
642 CAPÍTULO 9. ELEMENTOS FINITOS

Repita a questão usando dessa vez o produto interno


Z 1
hp, qi = p (x) q (x) dx. (3)
0

11 . Encontre uma combinação linear de ex e e−x que seja ortogonal a


ex em C [0, 1] .

12 . Verifique que os polinômios 1, x, x2 − 13 , x4 − 67 x2 + 35


3
são mu-
tualmente ortogonais em P3 com o produto interno (2). E com o produto
interno (3)? Normalize os polinômios dados.

13 Encontre a projeção perpendicular de cada um dos vetores de


C [−π, π] sobre o subespaço indicado e calcule a distância do vetor ao sube-
spaço,
• f (x) = x, W = S (1, cos x, sin x)
• f (x) = cos2 x, W = S (1, cos 2x)
• f (x) = x2 , W = S (sin x, sin 2x)
• f (x) = x3 , W = S (1, cos x, cos 2x)

14. Determine a circunferência que passa pelos quatro pontos


(0, 0) , (4, 0) , (0, 4) e (5, 6) no sentido dos mínimos quadrados.

15. As funções 1, x, x2 , . . . xn , . . . são linearmente independentes em


P C [a, b]? Por que?

16. Use a função auxiliar u e (x) = −3 sin (πx/2) + 1 e resolva a equação


diferencial
d2 u
− 2 + u = −3x2 + 20x + 7, 0 < x < 1,
dx
sujeita às condições de fronteira u (0) = 1 e u (1) = −2.. Trace os gráficos
das funções ue (x) , u (x) e u (x) = u (x) − ue (x). Compare o seu resultado
com o do texto na seção XXX (pag XXX). Escolha, você mesmo, uma outra
função auxiliar e repita o exercício.

17. Dados a equação diferencial


d2 u 3¡ 2 ¢
− 2
+ u = −3x2 + 20x + π + 4 sin (πx/2) , 0 < x < 1,
dx 4
e as condições de fronteira Dirichlet u (0) = u (1) = 0, calcule uma solução
aproximada pelos seguintes métodos:

Você também pode gostar