Professional Documents
Culture Documents
AO
AO
METODO
DE ELEMENTOS FINITOS
Computacao e Analise em
Equacoes Diferenciais Parciais
MAURO A. RINCON
I-SHIH LIU
Pref
acio
A origem do presente livro data de 1997, quando os autores objetivavam a obtencao de
solucoes numericas aproximadas de equacoes diferenciais parciais do tipo elptico descrevendo modelos matematicos da teoria de elasticidade linear. Por meio de seminarios
foram estudadas existencia e unicidade de solucoes de alguns problemas e a correspondente formulacao variacional. Para obter a solucao numerica aproximada, optamos pelo
metodo de elementos finitos. Inicialmente, utilizamos programas computacionais em
linguagem Fortran desenvolvidos por outros autores. Tais programas por sua generalidade, nao eram didaticos e conseq
uentemente dificultavam o entendimento do conte
udo
matematico e a adaptacao a problemas especficos. Deste modo, desenvolvemos nossos proprios programas computacionais utilizando linguagem C, especificamente, para
atender aos nossos objetivos. Eles sao simples e de facil entendimento.
No captulo 1 sao deduzidos alguns modelos da fsica matematica, tais como, a
equacao da conducao do calor e a teoria de elasticidade linear, que serao estudados,
no contexto do metodo de elementos finitos, nos proximos captulos deste livro. Para
melhor compreensao da deducao dos modelos sao consideradas as leis de conservacao,
as equacoes constitutivas lineares e o conceito de pequenas deformacoes. Tambem sao
feitas comparacoes entre alguns metodos numericos com o objetivo de motivar o estudo
do metodo de elementos finitos.
No final deste captulo, apresentamos o metodo de aproximacao por diferencas
finitas, que sera utilizado nas equacoes de evolucao dos captulos 6 e 7.
O captulo 2 trata de um problema modelo estacionario unidimensional de equacoes
diferenciais parciais com condicoes na fronteira. Alguns exemplos numericos sao exibidos, utilizando varios tipos de valores de fronteira, comparando-se os resultados obtidos
com aqueles da solucao exata do problema. Os erros nas normas de L2 () e H 1 () sao
mostrados em cada um dos exemplos dados.
O captulo 3 introduzimos as mais usuais funcoes base de ordem superior, ou seja,
a funcao base quadratica, a base spline c
ubica e a funcao base de Hermite. Estimativas
de erros em espacos de Sobolev, sao feitas para o problema modelo elptico.
O captulo 4 apresentamos o problema estacionario bidimensional. Sao estudadas
as formulacoes forte e fraca, existencia e as condicoes para a unicidade de solucoes.
i
ii
Varios tipos de valores fronteira sao considerados e alguns exemplos numericos sao
dados juntamente com as respectivas solucoes exatas. Para resolver o sistema linear,
associado ao metodo de elementos finitos, utilizamos o algoritmo de Crout. Conclumos
o captulo, mostrando os graficos das solucoes e os erros associados nas normas L2 ()
e H 1 ().
No captulo 5 apresentamos o problema modelo de elasticidade linear para o caso
bidimensional. Os mesmos topicos do captulo 4 sao abordados, considerando-se, no
entanto, a solucao vetorial do problema. Deste modo, a dimensao do sistema linear
correspondente e aproximadamente o dobro, uma vez que temos, neste caso, as componentes verticais e horizontais. Simulacoes numericas, erros e graficos sao mostrados.
No captulo 6, introduzimos alguns dos metodos numericos mais conhecidos da
literatura e seus algoritmos para resolver o problema parabolico modelo: Equa
ca
~o do
calor. Sao dados alguns exemplos numericos e comparacoes entre os diversos metodos
numericos. Sao tambem apresentados graficos e tabelas de erros.
No captulo 7, sao dados alguns metodos numericos, muito conhecidos da literatura
e seus algoritmos para resolver o problema hiperbolico modelo: Equa
ca
~o da onda. Sao
dados alguns exemplos numericos e comparacoes entre os diversos metodos numericos.
Sao tambem apresentados graficos e tabelas de erros.
Os captulos 8 e 9 sao captulos complementares e mais indicados para alunos que
querem se aprofundar na analise matematica da equacao. Assim nao sao necessarios
num primeiro curso para o entendimento dos metodos numericos desenvolvidos nos
captulos anteriores. Sao apresentados os resultados teoricos das equacoes.
No apendice A, contem com os programas computacionais utilizados para obtencao
das solucoes numericas dos modelos estacionarios tratados no presente texto. As
variaveis, funcoes e subrotinas dos programas sao referidos no texto e no ndice remissivo usando a fonte typewriter, por exemplo: Nel, Phi, Solver, etc.
Esperamos que este livro, devido `a forma simples, porem detalhada com a qual foi
escrito, possa constituir um primeiro curso do metodo de elementos finitos, para alunos
alunos de iniciacao cientfica e mestrado, interessados em analise numerica de equacoes
diferenciais parciais.
Queremos expressar nossos agradecimentos a todos os alunos e professores que nos
enviaram correcoes e sugestoes, e em particular aos alunos e colegas da area de Algoritmos e Metodos Numericos do Programa de Pos-Graduacao em Informatica (PPGI).
Receberemos com prazer, crticas e sugestoes que venham a contribuir para o aperfeicoamento deste livro.
I-S. Liu
M. A. Rincon
Sum
ario
1 Introduc
ao
1.1 Conducao do Calor . . . . . . . . . . . . . . . . . .
1.1.1 Equacao da Energia . . . . . . . . . . . . .
1.1.2 Equacoes Constitutivas . . . . . . . . . . . .
1.1.3 Tensor de Condutividade Termica . . . . . .
1.1.4 Condicoes de Fronteira . . . . . . . . . . . .
1.2 Elasticidade Linear . . . . . . . . . . . . . . . . .
1.2.1 Pequena Deformacao e Rotacao Infinitesimal
1.2.2 Equacao do Movimento . . . . . . . . . . . .
1.2.3 Lei de Hooke . . . . . . . . . . . . . . . . .
1.2.4 Problemas Elastostaticos . . . . . . . . . . .
1.3 Convencao de Somatorio . . . . . . . . . . . . . . .
1.4 Metodos Numericos . . . . . . . . . . . . . . . . . .
1.4.1 Metodo da Colocacao . . . . . . . . . . . . .
1.4.2 Metodo de Galerkin . . . . . . . . . . . . . .
1.4.3 Elementos Finitos . . . . . . . . . . . . . . .
1.5 Problemas Variacionais Abstratos . . . . . . . . . .
1.5.1 Formulacao Variacional Abstrata . . . . . .
1.5.2 Espaco das Funcoes Testes . . . . . . . . . .
1.6 Aproximacao por Diferencas Finitas . . . . . . . . .
2 Problema Estacion
ario Unidimensional
2.1 Formulacao do Problema . . . . . . . .
2.2 Funcao de Interpolacao . . . . . . . . .
2.3 Sistema Linear . . . . . . . . . . . . .
2.4 Matriz Local e Forca Local . . . . . . .
2.5 Matriz Global e Forca Global . . . . .
2.6 Integracao Numerica . . . . . . . . . .
2.7 Condicoes de Fronteira . . . . . . . . .
2.8 Programa Computacional . . . . . . .
2.9 Exemplos . . . . . . . . . . . . . . . .
2.10 Exerccios . . . . . . . . . . . . . . . .
iii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
1
2
3
4
5
6
8
10
11
12
14
15
16
18
19
20
21
25
.
.
.
.
.
.
.
.
.
.
29
29
33
38
40
42
48
52
60
64
73
iv
3 Func
ao Base e Estimativa de Erro
3.1 Funcao Base de Ordem Superior . . . . . .
3.1.1 Base Quadratica . . . . . . . . . .
3.1.2 Base C
ubica . . . . . . . . . . . . .
3.1.3 Base de Hermite . . . . . . . . . .
3.2 Analise de Erro do Problema Estacionario
3.2.1 Erro de Interpolacao . . . . . . . .
3.2.2 Erro na Norma H 1 () . . . . . . .
3.2.3 Erro na Norma L2 () . . . . . . .
3.2.4 Erro na Norma H m () . . . . . . .
3.3 Erro Numerico . . . . . . . . . . . . . . .
3.4 Exerccios . . . . . . . . . . . . . . . . . .
Sumario
.
.
.
.
.
.
.
.
.
.
.
4 Problema Estacion
ario Bidimensional
4.1 Formulacao do Problema . . . . . . . . . . .
4.2 Discretizacao do Domnio . . . . . . . . . .
4.3 Interpolacao dos Dados Iniciais . . . . . . .
4.4 Propriedades da Matriz Rigidez . . . . . . .
4.5 Funcao de Interpolacao . . . . . . . . . . . .
4.6 Quadratura Gaussiana . . . . . . . . . . . .
4.7 Construcao da Matriz Global e Forca Global
4.8 Resolucao do Sistema Linear . . . . . . . . .
4.9 Sistema Linear Global . . . . . . . . . . . .
4.10 Erro da Solucao Numerica . . . . . . . . . .
4.11 Entrada e Sada de Dados . . . . . . . . . .
4.12 Exemplos Numericos . . . . . . . . . . . . .
4.13 Unicidade: Problema de Neumann . . . . .
4.14 Exemplos Numericos . . . . . . . . . . . . .
4.15 Resultados Numericos . . . . . . . . . . . .
4.16 Exerccios . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
75
75
76
78
84
89
92
95
95
98
99
100
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
101
101
107
113
114
118
124
136
140
146
147
149
151
153
154
162
166
.
.
.
.
.
.
.
167
167
175
192
192
199
202
206
Sumario
6 M
etodos Num
ericos e Algoritmos: Equac
ao do Calor
6.1 Equacao Parabolica . . . . . . . . . . . . . . . . . . . .
6.2 Algoritmos para a Equacao do Calor . . . . . . . . . .
6.2.1 Metodo de Euler Regressivo . . . . . . . . . . .
6.2.2 Metodo de Euler Progressivo . . . . . . . . . . .
6.2.3 Metodo de Crank-Nicolson . . . . . . . . . . . .
6.2.4 Metodo Generalizado Trapezoidal: (-metodo) .
6.3 Simulacao Numerica: Equacao do Calor . . . . . . . . .
6.4 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
207
207
211
212
213
214
214
216
222
7 M
etodos Num
ericos e Algoritmos: Equac
ao da Onda
7.1 Problema Aproximado . . . . . . . . . . . . . . . . . . .
7.2 Algoritmos para a Equacao da Onda . . . . . . . . . . .
7.2.1 Metodo da Diferenca Central . . . . . . . . . . .
7.2.2 Metodos Implcitos - Metodo de Newmark . . . .
7.2.3 Metodo Numerico: -metodo: Equacao da Onda
7.3 Simulacao Numerica: Equacao da Onda . . . . . . . . . .
7.4 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
224
225
227
227
228
230
232
237
.
.
.
.
.
.
239
239
239
247
265
266
272
.
.
.
.
.
.
277
277
277
283
298
299
303
.
.
.
.
.
305
306
314
317
322
324
8 An
alise Num
erica:Equac
ao do Calor
8.1 Estimativa de erro . . . . . . . . . .
8.1.1 Problema Semidiscreto . . . .
8.1.2 Problema Discreto . . . . . .
8.1.3 Exerccio . . . . . . . . . . . .
8.2 Existencia e unicidade de solucao . .
8.3 Propriedades e decaimento assintotico
.
.
.
.
.
.
9 An
alise Num
erica:Equac
ao da Onda
9.1 Estimativa de Erro . . . . . . . . . . .
9.1.1 Problema Semidiscreto . . . .
9.1.2 Problema Discreto . . . . . . .
9.1.3 Exerccios . . . . . . . . . . . .
9.2 Existencia e unicidade de solucao . . .
9.3 Regularidade e Conservacao de Energia
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
vi
Sumario
A.6 Elasticidade linear bidimensional elast.cpp . . . . . . . . . . . . . . 336
A.7 Equacao do calor unidimensional Calor.cpp . . . . . . . . . . . . . . 355
A.8 Equacao da onda unidimensional Onda.cpp . . . . . . . . . . . . . . . 365
Bibliografia
377
Indice
379
CAPITULO 1
Introduc
ao
Neste livro, para desenvolver o metodo de elementos finitos, utilizaremos equacoes
diferenciais parciais do tipo elptica. Embora, os modelos da Fsica-Matematica para
a equacao de conducao do calor e elasticidade linear na sua forma mais geral sao do
tipo parabolico e hiperbolico respectivamente, ambas se reduzem a problemas do tipo
elptico para problemas estacionarios.
A formulacao do problema de valor de contorno para a conducao do calor sera
governada por uma equacao escalar da temperatura do corpo e para elasticidade linear
sera governada por um sistema de equacoes para o vetor deslocamento do corpo.
1.1
Conduc
ao do Calor
1.1.1
Equac
ao da Energia
(1.2)
Cap. 1. Introducao
Desde que e uma regiao fixa, entao usando o teorema da divergencia e assumindo
que a fronteira do corpo seja suficientemente suave, obtemos de (1.1) e (1.2) que
Z n
o
e
(1.3)
+ div h r d = 0.
t
Note que desde que o corpo e rgido, portanto indeformavel, a densidade e independente do tempo. Para obter a relacao acima na sua forma local utilizaremos o seguinte
teorema:
Teorema. Suponhamos que f C(V, IR) e
Z
f d = 0
V,
e
+ div h r = 0.
t
(1.4)
1.1.2
Equac
oes Constitutivas
ou hi =
X
j
Qij
u
,
xj
(1.5)
onde c e chamado calor especfico e Q o tensor de condutividade termica. Por argumentos da termodinamica, assumiremos que c > 0 e a matriz Q e simetrica e definida
positiva, i.e., para qualquer vetor nao nulo v,
v Qv > 0.
Por outro lado, a energia suplementar r nao e uma quantidade constitutiva. Ela
pode representar a energia devido a radiacao pelo meio ambiente e a fonte de energia
dentro do corpo. Seja u a temperatura do meio ambiente, entao, podemos escrever
r(x, t) = (x)(u(x, t) u) + (x, t).
O primeiro termo do lado direito e a lei de Newton para radiacao e o segundo termo
representa a fonte de energia. O coeficiente e um parametro do material e e uma
quantidade nao negativa, porque se a temperatura do meio ambiente e menor do que
a do corpo, havera perda de energia do corpo.
Agora podemos reescrever a equacao de energia (1.4) como uma equacao diferencial
para a temperatura,
u X
u
c
Qij
+ u = f,
(1.6)
t
xi
xj
i,j
onde f = u + . Essa e uma equacao diferencial do tipo parabolica, pois c > 0 e Q e
definida positiva.
1.1.3
Tensor de Condutividade T
ermica
Cap. 1. Introducao
Q12
Q22
cos
sen
Q11
=
sen cos
Q21
Q12
Q22
u
u + u = f,
t
onde c, e sao constantes positivas e e o operador de Laplace.
c
1.1.4
Condi
c
oes de Fronteira
Qij
+ u = f,
(1.8)
x
x
i
j
i,j
numa regiao fixa V ocupada pelo corpo, onde a condutividade termica Qij (x) e uma
matriz definida positiva e (x) > 0, se o corpo e isotropico, entao Qij (x) = (x) ij e
a equacao (1.8) torna-se
X u
+ u = f.
(1.9)
xi xi
i
Se alem disso, o corpo e homogeneo, entao a equacao se reduz a
X 2u
+ u = f,
xi xi
i
(1.10)
Sec. 2.
Elasticidade Linear
(1)
u(x) = u0 (x),
(2)
onde u0 (x) e u1 (x) sao funcoes prescritas e o fluxo de calor q e dado por (1.2). Os valores da fronteira pode consistir de partes separadas de tipos diferentes. Um problema
com condicoes de fronteira do primeiro tipo sao usualmente chamados de problema de
Dirichlet, enquanto problemas com condicoes de fronteira do segundo tipo sao chamados de problema de Neumann.
Usando a lei de Fourier (1.5), a condicao de fronteira do tipo Neumann pode ser
explicitamente expressado na forma componente
X
i,j
Qij
u
ni = u1 ,
xj
(1.11)
1.2
Elasticidade Linear
Consideremos agora um corpo deformavel. Seja B IR3 uma regiao ocupada por
um corpo no seu estado de referencia, e : B IR IR3 uma aplicacao bijetora e
regular,
x = (X, t),
chamada de movimento do corpo. O movimento e uma deformacao do estado de
referencia, dependente do tempo. Introduzimos o gradiente da deformacao F , a velo definidas como
cidade x e a aceleracao x
F = X ,
x =
,
t
=
x
2
,
t2
xi
.
Xj
Cap. 1. Introducao
(1.12)
onde o(2) denota os termos de ordem superiores em |dX|. Desta forma, o gradiente da
deformacao e considerado como uma medida de deformacao local.
1.2.1
Pequena Deformac
ao e Rotac
ao Infinitesimal
Denotamos por
u(X, t) = (X, t) X
(1.13)
1
1
E = (H + H T ),
W = (H H T ).
(1.14)
2
2
Para interpretar fisicamente estas definicoes, em primeiro lugar, observamos que
F T F = (1 + H)T (1 + H) = 1 + (H + H T ) + o(2) = 1 + 2E + o(2).
Seja {e1 , e2 , e3 } a base canonica do IR3 e sejam dX 1 e dX 2 dois pequenos segmentos
lineares no estado de referencia, e dx1 e dx2 os segmentos correspondentes no estado
deformado. Por (1.12), segue que
dx1 dx2 = F T F dX 1 dX 2 = dX 1 dX 2 + 2EdX 1 dX 2 ,
negligenciando os termos de ordem superior de |H|.
(1.15)
s s0
(s s0 )(s + s0 )
s2 s20
.
=
2
2s0
2s0
s0
Sec. 2.
Elasticidade Linear
sin ,
2
2
dv dV
.
dV
Por definicao,
tr H = div u = tr E = E11 + E22 + E33 ,
e portanto, o traco de E, chamado de dilatacao, mede a variacao do volume com relacao
ao estado de referencia.
Em termos do sistema de coordenadas, temos de (1.13) o vetor deslocamento,
ui (Xj , t) = xi (Xj , t) Xi ,
o vetor velocidade e o vetor aceleracao,
x i =
ui
,
t
xi =
2 ui
.
t2
e o gradiente do deslocamento H,
X ui xk
X ui
uk ui
ui
kj +
=
=
=
+ o(2).
Hij =
Xj
x
x
X
x
k Xj
k
j
j
k
k
Cap. 1. Introducao
Como na teoria linear, os termos nao lineares sao insignificantes, portanto, nao e necessario distinguir as coordenadas do estado de referencia e atual. Logo, usualmente
nao e necessario introduzir o estado de referencia na teoria linear. Assim, na forma
componente, podemos escrever o gradiente do deslocamento como o gradiente com respeito ao estado atual e de (1.14), o tensor e a rotacao infinitesimal podem ser escritos
como
1 ui uj
1 ui
uj
Eij =
+
,
Wij =
.
(1.16)
2 xj
xi
2 xj
xi
1.2.2
Equac
ao do Movimento
Seja V IR3 uma regiao ocupada pelo corpo no estado atual. Para uma parte
arbitraria V do corpo, seguindo a lei de Newton podemos escrever a equacao do
movimento na forma integral,
Z
Z
Z
x d =
t d + f d,
(1.17)
onde o lado direito representa as forcas agindo sobre o corpo . Existem dois tipos
de forcas, a primeira chamada de forca do corpo f que e devido a forcas externas, tal
como a gravitacao. A segunda chamada de tracao de superfcie t, e a forca agindo sobre
a superfcie do corpo . A relacao (1.17) e tambem conhecida como a conservacao
do momento linear. Observe que para um ponto no interior do corpo x V , a
tracao t e a forca agindo sobre a parte pela parte restante do corpo V \ atraves da
superfcie no ponto x. Para as superfcies de duas partes diferentes com um ponto
em comum x, os valores da tracao t no x sao geralmente diferentes nas respectivas
superfcies. A ideia classica para simplificar a dependencia da tracao em , conhecida
como a hipotese de Cauchy , garante que se duas superfcies tem a mesma normal em
x entao os valores da tracao sao iguais em x. A consequencia principal da hipotese
de Cauchy, tambem conhecida como o teorema de Cauchy , assegura que a tracao tem
que ser linear na normal, i.e.,
X
t = n
or
ti =
ij nj ,
(1.18)
i,j
x div = f ,
ou na forma componente,
2 ui X ij
= fi .
t2
xj
j
(1.19)
Sec. 2.
Elasticidade Linear
ou
ij = ji .
(1.20)
(1.21)
(1.22)
(1.23)
(1.24)
que apos alguns calculos nos leva a simetria do tensor de tensao, T = . Os calculos
estao feitos na Sec. 1.3.
Para ver o significado fsico do tensor de tensao, considere a superfcie com
normal n = e1 . Entao, a componente da tracao t normal `a superfcie e dada por
t e1 = e1 e1 = 11 ,
e a componente tangencial na direcao e2 e dada por
t e2 = e2 e1 = 21 .
Assim, 11 e 21 sao as forcas normal e tangencial por area unitaria da superfcie
com normal na direcao do eixo x1 . As demais componentes de ij tem significados
semelhantes.
10
1.2.3
Cap. 1. Introducao
Lei de Hooke
2W
,
Eij Ekl
(1.27)
A relacao linear (1.25) e chamada de lei de Hooke para materiais elasticos. O tensor
de elasticidade envolve muitas constantes de material. Com efeito, considerando a
simetria (1.26) e (1.27), em geral para materiais nao isotropicos, existem 21 constantes.
Este n
umero e bastante reduzido se o material possui alguma simetria de orientacao, tal
como a simetria dos solidos cristalinos. De maneira similar `a apresentada na Sec. 1.1.3,
para corpos isotropicos, o tensor elasticidade deve ser invariante sob qualquer orientacao
e como uma consequencia, podemos provar que o n
umero de constantes do material se
reduz a somente duas, a saber,
Cijkl = ij kl + (ik jl + il jk ).
(1.28)
(1.29)
Sec. 2.
11
Elasticidade Linear
Usualmente e assumido, por consideracoes da termodinamica, que o tensor de elasticidade e definido positivo, i.e.,
X
Cijkl Sij Skl > 0
(1.30)
i,j,k,l
para qualquer matriz nao singular e simetrica Sij . Em particular, para corpos isotropicos tem-se que
> 0,
3 + 2 > 0.
1.2.4
Problemas Elastost
aticos
Cijkl
= fi
i = 1, 2, 3,
(1.31)
x
x
j
l
j, k, l
em V . O tensor de elasticidade Cijkl em (1.30) e um tensor definido positivo de quarta
ordem, com as propriedades de simetria dados por (1.26) e (1.27). A forca externa f
e uma funcao dada. A propriedade de simetria Cijkl = Cijlk foi usada para obter a
equacao (1.31). De fato, de (1.25) e (1.16) temos
u
X
ul
1X
k
Cijkl
+
ij =
CijklEkl =
2 k, l
xl
xk
k, l
1X
uk
uk
1 X
ul
uk
=
Cijkl
Cijkl
=
+ Cijkl
+ Cijlk
2 k, l
xl
xk
2 k, l
xl
xl
X
uk
uk
1X
uk
=
Cijkl
Cijkl
+ Cijkl
=
.
2 k, l
xl
xl
xl
k, l
Se o corpo e isotropico, entao, de (1.29) a equacao de equilbrio e dada por
X uk X ui
uk
(
+
) = fi .
(1.32)
xi xk
xk
xk
xi
k
k
12
(1)
(2)
Cap. 1. Introducao
ui (x) = qi (x),
X
ij nj = pi (x),
j
1.3
Convenc
ao de Somat
orio
13
u
Q
+u=f
in V ,
ij
xi
xj
u
ni = u1 on V .
u = u0 or Qij
xj
uk
C
= fi
in V ,
ijkl
xj
xl
uk
nj = pi on V .
ui = qi or Cijkl
xl
Para dar mais um exemplo do uso da convencao de somatorio, provaremos a simetria do tensor de tensao da relacao (1.24). Primeiro, introduziremos o smbolo de
permutacao:
0
para os demais casos.
Com este smbolo, o produto vetorial v u pode ser escrito na forma componente
como
(v u)i = ijk vj uk .
Agora podemos escrever a relacao (1.24) como
li
(ji (jkl ak rl )) = aj jkl rk
.
xi
xi
(1.34)
(ji (jkl ak rl )) =
jkl ak rl + ji jklak il .
xi
xi
(1.35)
Fazendo a mudanca de ndices no somatorio, o primeiro termo do lado direito pode ser
reescrito como
ji
li
jkl ak rl =
ljk aj rk ,
xi
xi
14
Cap. 1. Introducao
que e igual ao termo do lado direito de (1.34), porque ljk = jkl . Portanto, o segundo
termo do lado direito de (1.35) e zero,
ji jkl ak il = ji jki ak = 0.
Como ak e arbitrario, temos
ji jki = 0.
Este e um sistema de tres equacoes para k = 1, 2, 3, dado por
32 23 = 0,
13 31 = 0,
21 12 = 0.
1.4
M
etodos Num
ericos
onde estamos denotando a derivada de u(x) por u(x). Suponhamos que f seja uma
funcao regular e que o problema admita uma u
nica solucao. A solucao aproximada
do problema pode ser obtida por duas classes de metodos numericos: o metodo das
diferencas finitas e o metodo das projecoes. A ideia basica do metodo das diferencas
finitas e transformar o problema de resolver uma equacao diferencial num problema
de resolver um sistema de equacoes algebricas, usando aproximacoes das derivadas
da equacao por diferencas finitas. O metodo das projecoes consiste em obter uma
solucao aproximada da solucao da equacao diferencial, usando uma combinacao linear
finita de funcoes conhecidas, usualmente chamadas funcoes bases. Conceitualmente,
se considerarmos que a solucao do problema pertence a algum espaco de funcao de
dimensao infinita entao a solucao aproximada e obtida num subespaco de dimensao
finita, gerado pelas funcoes bases. A projecao da solucao sobre o subespaco de dimensao
finita e a solucao aproximada. O metodo de elementos finitos e baseado no metodo das
projecoes.
Nos ilustraremos as ideias gerais do metodo das projecoes com um problema de
segunda ordem simples, dado por
(
u (x) + u(x) = f (x)
x (0, 1),
(1.36)
u(0) = u(1) = 0.
15
m
X
Cj j (x),
(1.37)
j=1
j = 1, m.
(1.38)
Nestas condicoes, a solucao aproximada um (x), dada por (1.37), satisfaz a condicao de
fronteira.
Dadas as funcoes bases, o problema e como determinar os coeficientes Cj da solucao
aproximada em (1.37). Existem varias possveis aproximacoes e aqui daremos somente
as duas mais conhecidas: metodo de colocacao e metodo de Galerkin.
1.4.1
M
etodo da Coloca
c
ao
Sejam x1 , , xm os pontos da malha da discretizacao do intervalo [0, 1], denominados nos ou pontos nodais. Queremos que a solucao aproximada satisfaca a equacao
diferencial nestes m pontos. Portanto substituindo a um (x) definida em (1.37) na
equacao diferencial obtemos
m
X
j=1
Cj j (xi )
m
X
Cj j (xi ) = f (xi ),
j=1
i = 1, , m,
onde estamos assumindo que as funcoes bases sao duas vezes diferenciaveis. Podemos
isolar os coeficientes Cj para obter o seguinte sistema linear:
m
X
j=1
Definindo
Cj j (xi ) + j (xi ) = f (xi ),
aij = j (xi ) + j (xi ),
i = 1, , m.
(1.39)
(1.40)
16
Cap. 1. Introducao
1.4.2
M
etodo de Galerkin
u(x)v(x)dx = 0.
(1.41)
facil ver que se u(x) e a solucao exata do problema (1.36), entao r(x) = 0, e neste
E
caso, a funcao resduo e ortogonal a qualquer funcao, e, em particular, e ortogonal as
funcoes bases. No entanto, se a solucao u(x) = um (x) e dada por (1.37), nao podemos
esperar que r(x) seja identicamente nula, pois um (x) e apenas uma combinacao linear
das funcoes bases. O metodo de Galerkin consiste em determinar um (x) de tal forma
a preservar a propriedade de ortogonalidade da solucao exata, isto e, que a funcao
resduo seja ortogonal a todas as funcoes bases {1 , 2 , , m }, ou seja,
Z
i = 1, , m.
Cj
j=1
1
0
[j (x)
+ j (x)]i (x)dx =
i = 1, , m.
f (x)i (x)dx,
0
(1.43)
j (x)i (x)dx
j (x)i (x)
1
0
j (x)i (x)dx
j (x)i (x)dx,
0
1
j (x)i (x)dx
j (x)i (x)dx,
(1.44)
f (x)i (x)dx,
0
17
De (1.44) e suficiente assumir que as funcoes j (x) e suas derivadas j (x) sejam
quadrado-integravel, i.e., de L2 (0, 1), como por exemplo, funcoes contnuas e seccionalmente lineares. Logo, as classes de funcoes disponveis para funcoes bases sao mais
amplas para metodo de Galerkin do que para metodo da colocacao.
Alem disso, note que a matriz A definida por (1.44) e simetrica o que facilita a
resolucao do sistema linear AC = F , e, portanto, apresenta uma outra vantagem do
metodo de Galerkin sobre o metodo da colocacao.
A matriz A depende somente da escolha de funcoes bases. Uma escolha classica
que resulta em uma matriz diagonal, o caso ideal, e o uso das autofuncoes do operador
do problema (1.36), D = d2 /dx2 + I,
j (x) = sen jx,
j = 1, , m.
(1.45)
Neste caso, como as funcoes bases sao mutuamente ortogonais e satisfazem a condicao
( 1
Z 1
Z 1
se i = j,
2
sen ix sen jx =
cos ix cos jx =
0
0
0
se i 6= j,
Substituindo em (1.44), obtemos um sistema linear AC = F , onde a matriz A e
diagonal, ou seja
1
2
ajj = 2 1 + (j)
fj =
j = 1, , m.
(1.46)
2fj
.
1 + (j)2
X
j=1
fj
sen jx,
1 + (j)2
18
Cap. 1. Introducao
1.4.3
Elementos Finitos
(x xj1 ) x [xj1 , xj ]
h
1
j (x) =
(xj+1 x) x [xj , xj+1 ]
0
x
/ [xj1 , xj+1 ]
j = 1, , m.
(1.47)
Neste caso, o suporte da funcao j (x) e somente o intervalo (xj1 , xj+1) que contem
o ponto nodal xj , logo, a matriz A, obtida pelo metodo de Galerkin, e uma matriz
tridiagonal e reduz o n
umero de operacoes para resolucao do sistema linear para uma
ordem proporcional a m.
Note que a funcao base j (x), contnua e seccionalmente linear, definida em (1.47)
e de L2 (0, 1). Ela nao pode ser usada como funcao base para o problema (1.36) utilizando o metodo de colocacao, pois, neste caso, a funcao base tem que ser duas vezes
Sec. 5.
19
diferenciavel. Entretanto, funcoes mais regulares constitudas pelos polinomios nos elementos (funcoes spline) sao muito usadas como funcoes bases nos metodos de colocacao
e de Galerkin.
Em geral, nenhum dos dois metodos discutidos aqui tem uma grande vantagem
sobre o outro e isto depende de cada problema em particular. Neste livro, estaremos
exclusivamente considerando elementos finitos, utilizando o Metodo de Galerkin.
1.5
Para um melhor compreensao dos conceitos usados nos proximos captulos, introduziremos algumas definicoes e teoremas fundamentais para obter a existencia e unicidade
de solucao para uma ampla classe de problemas variacionais. Para isto consideremos os
espacos de Hilbert V e H com produto interno e norma representados, respectivamente,
por ((, )); k k e (, ); | |.
Definic
ao 1. A forma a(, ) : V V IR, ou seja, a funcao numerica a definida em
V V e bilinear em V , se e linear em cada uma das componentes.
Definic
ao 2. A forma bilinear a(, ) e contnua em V , se existe uma constante C1 > 0
tal que
|a(u, v)| C1 kukkvk,
u, v V.
Definic
ao 3. A forma bilinear a(, ) e coerciva em V , se existe uma constante C2 > 0
tal que
a(v, v) C2 kvk2 , v V.
Definic
ao 4. A forma bilinear a(, ) e simetrica em V se
a(u, v) = a(v, u)
u, v V.
Definic
ao 5. Uma funcao f : V IR linear, e contnua se existe uma constante
C3 > 0 tal que
|hf, vi| C3 kvk,
v V.
Diz-se que f e um elemento do dual de V , representado por V ou V .
1.5.1
Formula
c
ao Variacional Abstrata
v V.
(1.48)
20
Cap. 1. Introducao
O resultado do teorema que segue, se aplica aos problemas considerados nos proximos
captulos.
Teorema (Lax-Milgram). Se a(, ) for uma forma bilinear, contnua e coerciva e f
uma forma linear e contnua em V , entao o problema variacional abstrato (1.48) possui
uma u
nica solucao u V . Alem disso, a aplicacao f 7 u e contnua de V em V .
A demonstracao do teorema pode ser encontrado em ([2, 13, 14]).
Uma interessante forma de se caracterizar a solucao do problema variacional abstrato, pode ser feita atraves da minimizacao do funcional, denominado funcional energia, E : V IR dado por
1
E(v) = a(v, v) hf, vi,
2
v V.
(1.49)
Para que os problemas (1.48) e (1.49) sejam equivalentes e necessario que a forma
bilinear a(, ) seja simetrica, como podemos ver na seguinte proposicao:
Proposic
ao. Seja a(, ) : V V IR uma forma bilinear, contnua, coerciva,
simetrica e f : V IR uma forma linear e contnua em V . Entao u V e a solucao
do problema (1.48) se e somente se u minimiza o funcional E em (1.49).
Demonstracao:
Seja u a solucao do problema (1.48). Entao
a(u, u v) = hf, u vi,
v V.
1
2
a(u v, u v)
1
2
a(u, u) a(u, v)
1
2
a(v, v),
v V.
Sec. 5.
1
4
Logo
21
Fazendo o limite:
E(u + v) E(u)
= a(u, v) hf, vi.
lim+
0
v V.
1.5.2
Espa
co das Fun
c
oes Testes
No que segue, daremos nocoes basicas da teoria das distribuicoes para facilitar a
compreensao do texto.
Seja um conjunto aberto e limitado do IRn com fronteira suave. Definimos por
C () o espaco vetorial das funcoes reais em , infinitamente continuamente diferenciaveis. Dada uma funcao u definida em , denomina-se suporte de u ao fecho em
do conjunto dos pontos de onde a funcao u e diferente de zero. Por C0 () estamos
denotando o subespaco do espaco C () com suporte compacto contido em .
Converg
encia em C0 ()
Definic
ao 6. Diz que uma sequencia ( )N pertencente ao espaco C0 () converge
para zero quando forem satisfeitas as seguintes condicoes:
1. Todas as funcoes ( ) da sequencia possuem suportes contidos em um compacto
K .
2. A sequencia ( ) e de todas as suas derivadas convergem uniformemente para
zero em K, ou seja,
(D j ) 0,
para todo multi-ndice j = (j1 , j2 , , jN ).
22
Cap. 1. Introducao
Definic
ao 7. Denomina-se distribuicao sobre a toda forma linear T , contnua em
D(), ou seja, uma distribuicao e um funcional T : D() IR satisfazendo as
condicoes:
1. T ( + ) = T () + T ()
, IR;
, D()
=
(1)
u, ,
x
x
D u
D().
(1.51)
Observe que pela definicao (1.51) toda distribuicao e infinitamente derivavel, pois
C0 ().
Com a nocao de distribuicao e suas derivadas, podemos definir, os espacos de Sobolev H m ().
Seja um aberto do IRn , definimos o espaco L2 () por
Z
2
L () = {u : IR;
|u(x)|2 dx < };
Sec. 5.
23
Vimos anteriormente que toda funcao u L1loc () define univocamente uma distribuicao em . Assim o resultado tambem e valido para funcoes u L2 () e, deste
modo, as funcoes deste espaco sao considerados distribuicoes sobre e portanto as
funcoes u L2 () possuem derivadas de todas as ordens no sentido das distribuicoes.
importante observar que as derivadas das funcoes u L2 () nao necessariamente
E
sao funcoes do L2 ().
Definimos o espaco H m (), m = 0, 1, com m N, por
n
H m () = u : IR; u L2 (),
o
u
2
L
()
x1 1 xnn
onde = 1 + + n , 1 m, i N.
m Z
X
=0
u
v
x1 1 xnn x1 1 xnn
u, v H m ().
(1.52)
u
L2 ()}.
xi
Um subespaco importante do espaco H 1() e o espaco H01 (), definido pelas funcoes
u H 1 () que se anulam na fronteira de , ou seja,
n
o
H01 () = u H 1 (); u = 0 sobre .
Definic
ao 8. Sejam X e Y espaco de Banach reais, sendo X um espaco reflexivo e
com injecao contnua de X em Y. Diz-se que a funcao u(t) Y e fracamente contnua
se < u(t), y > e contnua, y Y . O espaco das funcoes fracamente contnuas em Y
e denotado por Cs ([0, T ]; Y ).
Lema 1. Se u L (0, T ; X)
24
Cap. 1. Introducao
o
n
du
LP (0, T ; Y ) .
Lema 2. Seja W (0, T ) = u LP (0, T ; X);
dt
Se u W (0, T ) entao u C[[0, T ]; Y ].
Teorema de Aubin-Lions. Sejam os espacos de Banach B0 , B e B1 com imersao
compacta entre B0 e B e imersao contnua entre B e B1 . Dada uma sucessao satisfazendo as condicoes:
um LP (0, T ; B0 ) e
dum
LP (0, T ; B1).
dt
Entao existe uma subsucessao umk de um que converge forte em LP (0, T ; B).
Um exemplo comum de espacos satisfazendo as imersoes acima sao: B0 = H01 ,
B = L2 e B1 = H 1 ou B1 = L2 .
Desigualdade de Gronwall. Seja uma funcao real e integravel em [0, b), tal que
(t) 0, t [0, b). Se
Z t
(t) C +
(s) ds
0
Algumas propriedades importantes do espaco H01 (), usadas no texto, sao dadas
abaixo, cuja demonstracao pode ser encontrada em ([2, 13, 14]).
1. Dual. Sendo H01 () um espaco de Hilbert, denota-se por H 1 () o espaco dual
do espaco H01 (), ou seja, H 1 () e o espaco dos operadores lineares e contnuos
definidos em H01 (). Deste modo, caracteriza-se H 1 () como sendo o espaco
das distribuicoes sobre da forma:
T = v0 +
vn
v1
++
,
x1
xn
25
3. Equival
encia de normas. No espaco H01 (), as normas kuk1 e |u|0 sao equivalentes, ou seja, existem constantes positivas C1 e C2 tais que
C1 kuk1 |u|0 C2 kuk1,
onde estamos denotando por k k1 e | |0 as normas do H 1 () e L2 (). A primeira
desigualdade e conhecida como desigualdade de Poincare-Friedricks e a segunda
e uma consequencia imediata da definicao de norma.
1.6
Aproxima
c
ao por Diferen
cas Finitas
h2
h3
h4
f (x) + f (x) + f iv (x) .
2!
3!
4!
(1.53)
h3
h4
h2
f (x) f (x) + f iv (x) .
2!
3!
4!
(1.54)
e de forma analoga,
f (x h) = f (x) hf (x) +
(1.55)
26
Cap. 1. Introducao
onde O(h4 ) denota todos os termos de potencia quatro ou superior de h. Assumindo que
estes termos sao pequenos quando comparados com potencias inferiores de h (h 1)
entao negligenciando os termos do lado direito, temos a seguinte aproximacao para a
segunda derivada da funcao,
1
(1.56)
f (x) 2 f (x + h) 2f (x) + f (x h) ,
h
com o erro da aproximacao de ordem O(h2 ). A aproximacao (1.56) e conhecida por
diferenca central.
Por outro lado, podemos obter uma aproximacao pela diferenca central para a
primeira derivada de funcao f (x), fazendo a diferenca entre os termos (1.53) e (1.54),
ou seja
f (x + h) f (x h) = 2hf (x) + O(h3 ),
e dessa forma temos a seguinte aproximacao por diferenca central para a primeira
derivada
1
f (x)
f (x + h) f (x h) ,
(1.57)
2h
tambem com erro de aproximacao de ordem O(h2 ).
para i = 1, 2, M
para n = 1, 2, N.
27
2f
+
f
,
i
i
t2
(t)2 i
i,n
(1.60)
fi+1 fin ,
(Diferenca progressiva)
x
h
i,n
f (x, t)
1 n
n
fi fi1
,
(Diferenca regressiva)
x i,n h
f (x, t)
1
n+1
n
(Diferenca progressiva tempo)
fi fi ,
t i,n t
1
f (x, t)
fin fin1 ,
(Diferenca regressiva tempo)
t
t
i,n
(1.62)
com erro de ordem O(h) e O(t). Por abuso de notacao, usaremos o smbolo = em
lugar de .
CAPITULO 2
Problema Estacion
ario
Unidimensional
O problema modelo que estudamos abaixo e um dos mais tpicos problemas elpticos
e tem varias aplicacoes fsicas. Sao estudadas as formulacoes forte e fraca do problema
com diversas condicoes de fronteira e sua influencia no sistema linear, consequencia
da aplicacao do metodo de elementos finitos. Resultados numericos sao mostrados
juntamente com os erros associados. As etapas do programa computacional que se
encontram no apendice sao mostradas passo a passo.
2.1
Formulac
ao do Problema
Formula
c
ao Variacional
O Metodo de elementos finitos nao e aplicavel diretamente no problema (2.1). Assim, e necessario expressar o problema numa forma mais conveniente para que seja
possvel aplicar o metodo de Galerkin, que introduziremos adiante.
29
30
Seja D() = {v C0 (); v() = 0} denominado espaco das funcoes testes com
suporte compacto em . Multiplicando a equacao (2.1) por v D() e integrando
obtem-se
Z
Z
Z
1
uxx v dx +
uv dx =
f v dx v D().
uxx v dx = (ux v) +
0
(2.2)
ux vx dx
ux vx dx +
uv dx =
f v dx v D().
0
(2.3)
Como D() e denso em V = H01 (), a igualdade (2.3) tambem e valida para todo
v V . Definindo
Z 1
Z 1
a(u, v) =
ux vx dx +
uv dx,
(2.4)
0
(f, v) =
f v dx ,
(2.5)
(2.6)
31
onde na u
ltima desigualdade usamos a equivalencia de normas em V = H01 e
1 = max{; }. Logo a forma a(., .) e contnua em V.
3. a(., .) e coerciva. Temos que
a(u, u) 2
nZ
u2x
dx +
o
u dx 2 kuk21 ,
2
u V
onde 2 = min{; } > 0. Note que a condicao das constantes e serem positivas e
essencial para mostrar que a forma bilinear definida seja coerciva em H01 (0, 1).
R1
Por outro de (2.5), considerando f L2 (0, 1), temos que a forma: hf, vi = 0 f v dx
e linear e limitada em V, pois
khf, vik
1
0
kf vk dx c3 kvk1
v V,
onde c3 = kf k0.
(2.7)
M
etodo de Galerkin
O metodo de Galerkin consiste em aproximar o espaco das solucoes por um subespaco de dimensao finita. Para aproximar tal espaco, definimos um subespaco Vm
gerado por um conjuntos de m elementos do espaco de Hilbert H01(), ou seja,
Vm = [1 , 2 , ..., m ]
(2.8)
onde {i , i N} e uma base de H01 (). Agora, buscamos uma solucao aproximada
uh = uh (x) do problema (2.6) no subespaco Vm .
32
Problema Aproximado
Aproximamos o problema (2.6) por
a(uh , v) = (f, v) ,
v Vm
(2.9)
onde
uh (x) =
m
X
j V m
Cj j (x) ,
j=1
(2.10)
m
X
Cj j (x), v
j=1
= (f, v) ,
v Vm
a(i , j )Cj = (i , f ) ,
para i = 1, ..., m
(2.11)
j=1
(2.12)
onde
Kij = a(i , j ),
e Fi = (i , f ),
1 i, j m.
(
0
di dj
+ i j ) dx
dx dx
Fi =
(2.13)
f i dx
0
(2.14)
33
di dj
(
+ i j ) dx =
dx dx
dj di
+ j i ) dx = Kji
dx dx
(2.15)
d Kd =
m
X
di Kij dj =
i,j=1
m
X
=a
i=1
m
X
i,j=1
d i i ,
m
X
j=1
di a(i , j )dj
(2.16)
dj j = a(v, v) > 0,
pois
a(v, v) =
Z1
0
dv
( )2 dx +
dx
Z1
2.2
Func
ao de Interpolac
ao
Para o calculo da matriz global Kij e do vetor forca Fi precisamos definir explicitamente as funcoes i , base do subespaco Vm . A escolha de i e essencial para a
otimizacao do sistema linear. Desde que os elementos da matriz Kij sao funcoes derivaveis, escolhemos as i s como sendo funcoes trigonometricas ou polinomiais, para
as quais as condicoes de fronteira sao satisfeitas. Se na escolha da base i resultar
uma matriz Kij cheia, entao `a medida que queremos melhorar a solucao aproximada
uh (x) devemos aumentar a dimensao do subespaco Vm de H01 (). Assim, o n
umero
m de vetores i seria grande e portanto a matriz Kij de ordem m m aumentaria
quadraticamente, tornando o sistema de difcil resolucao.
O objetivo principal na escolha de i e fazer com que a matriz Kij seja uma matriz especial com muitos elementos nulos obedecendo uma certa ordem. Este tipo de
matriz e denominada matriz esparsa e o sistema linear resultante, em geral, e bem
condicionado.
34
i = 1, ..., m
(2.18)
x xi1
x xi1
=
, x [xi1 , xi ]
xi xi1
hi1
x xi+1
xi+1 x
i (x) =
=
, x [xi , xi+1 ]
x
h
i
i+1
i
0,
x
/ [xi1 , xi+1 ]
(2.19)
x1
hi
hi1
xi1
i (x)
xi
xi+1
xm+1
35
hi1
di
1
(x) =
dx
hi
0
de i (x), obtendo-se:
x (xi1 , xi )
(2.20)
x (xi , xi+1 )
x
/ (xi1 , xi+1 )
A derivada da funcao i (x) e descontnua no ponto xi , mas isto nao afeta o calculo
da matriz Kij , pois um ponto tem medida zero.
Note que o espaco Vm gerado pelas funcoes contnuas e linear por partes i e um
subespaco do espaco V = H 1 (0, 1), pois i C 0 [0, 1] i H 1 (0, 1).
Matriz Rigidez
Utilizando a funcao i , vemos que a matriz Kij e uma matriz tridiagonal. De fato,
desde que
Z 1
di dj
Kij =
(
+ i j ) dx
dx dx
0
0 0 0 0 0
0 0 0 0
0 0 0 0
.. .. . . . . . . ..
.
.
K= . .
(2.21)
.
.
. .
.
0 0 0 0
0 0 0 0
0 0 0 0 0
Como a matriz K e simetrica, entao somente sao necessarios o calculo de Ki,i e
Ki,i+1 dados por
Kii =
Z1
0
Zxi
xi1
di 2
dx +
dx
di 2
dx +
dx
Z1
xi1
x
Zi+1
xi
(i )2 dx =
xi+1
Z
d 2
i
dx
dx +
Zxi
xi1
di 2
dx +
dx
xi+1
Z
(i )2 dx
xi1
(i ) dx +
x
Zi+1
(i )2 dx
xi
36
1
hi1
) + (hi1 + hi ),
hi
3
i = 2, 3, ..., m
(2.22)
Z1
di di+1
dx +
dx dx
Z1
xi+1
Z
i i+1 dx =
xi
x
Zi+1
xi
1 1
(
)dx +
hi hi
di di+1
dx +
dx dx
xi+1
Z
xi
x
Zi+1
i i+1 dx =
xi
1
x xi
hi
(xi+1 x)(
)dx = +
hi
hi
hi
6
Logo,
Ki,i+1 = Ki+1,i =
hi
+
hi
6
(2.23)
Devido `as condicoes de fronteira, K1,1 = Km+1,m+1 = 0. Assim, a matriz dos coeficientes tem ordem (m 1) (m 1) e e dada por;
K=
onde
ai1 = Kii = (
a1 b1 0
b1 a2 b2
0 b2 a3
0
..
.
0
..
.
b3
..
.
0
0
0
0
0
0
0
0
b3
..
.
..
.
0
0
0
0
0
0
0
..
. bm3
0
am2 bm2
... bm2 am1
1
1
+
) + (hi + hi1 ),
hi hi1
3
e
bi1 = Ki,i+1 = (
0
0
0
hi
+
),
hi
6
i = 2, 3, . . . , m
i = 2, 3, . . . , m
(2.24)
(2.25)
(2.26)
2 2h
+
h
3
(2.27)
h
+
h
6
(2.28)
e
b=
37
Atraves da funcao de interpolacao i (x) dada por (2.19), o vetor forca F definido
em (2.14) pode ser calculado diretamente por
Fi =
Z1
f (x)i (x) dx =
Zxi
xi1
1
hi1
Zxi
xi+1
Z
f (x)i (x) dx
f (x)i (x) dx +
xi
f (x)(x xi1 ) dx +
xi1
1
hi
xi+1
Z
xi
para i = 2, 3, . . . , m. Por exemplo, tomando f (x) = x para todo x [0, 1], entao;
Fi =
hi
hi1
(3xi1 + 2hi1 ) + (3xi + hi )
6
6
i = 2, 3, . . . , m
(2.29)
i = 2, 3, . . . , m
(2.30)
m+1
X
i (x)fi
(2.31)
i=1
Z1
0
f i dx =
Z1 m+1
X
0
j=1
(i j )fj dx =
m+1
X
j=1
Zxi+1
(i j )fj dx
xi1
i1
xi1
xi1
xi
(2.32)
38
(i i1 )dx =
hi1
6
xi1
x
Zi+1
(i )2 dx =
xi1
x
i+1
Z
(i i+1 )dx =
1
(hi1 + hi )
3
hi
6
xi
hi1
hi + hi1
hi
+ fi
+ fi+1
6
3
6
(2.33)
m
X
Cj j (xi ) = Ci
(2.35)
j=2
2.3
Sistema Linear
39
a1
b1
K= 0
.
..
0
0
b3
..
.
0
0
0
0
0
0
b3
..
.
..
.
0
0
0
0
0
0
0
..
. bm3
0
am2 bm2
... bm2 am1
Definimos:
d1 = a1 ,
G1 = F1 ,
0
0
0
m1 =
F1
F2
F3
F4
..
.
F =
Fm2
Fm1
b1
,
d1
e para i = 2, 3, . . . m 1 sucessivamente,
bi
,
(2.36)
di
onde di = dii , e o elemento da diagonal principal. No final do procedimento obtemos a
matriz triangular superior:
d1 b1 0 0
0
0
0 d2 b2 0
0
0
0 0 d3 b3
0
0
b =
0
0
K
0 0 0 ..
. . .
.. . .
.. .. ..
.
b
0
.
m3
0 0 0 0 dm2 bm2
0 0 0 0 ...
0
dm1
di = ai mi1 bi1 ,
e o vetor forca
Gi = Fi mi1 Gi1 ,
b
F =
por
G1
G2
..
.
Gm1
mi =
Gm1
dm1
Para i = m 2, m 3, . . . , 1 , temos:
1
Ci = (Gi bi Ci+1 )
di
De (2.35), a solucao aproximada uh (xi ) = Ci .
(2.37)
40
2.4
i = 1, 2, . . . , m.
onde x1 = 0 e xm+1 = 1.
Para cada intervalo [xi , xi+1 ], considere um elemento e, denominado elemento finito
e as coordenadas locais [xe1 , xe2 ] = [xi , xi+1 ]. Geometricamente os m elementos podem
ser representados por
2e1
e= 1
x11
x1e1
e 1
x2e1 = xe1
e= m
xe2
xm
2
41
xe2 x
e
1
he
e
x xe1
a (x) =
e
2 =
he
(2.38)
x
/ [xe1 , xe2 ]
A funcao de interpolacao i definida em (2.19) e a juncao das funcoes de interpolacao local 2e1 e e1 , ou seja
e1
x [x1e1 , x2e1 ] = [xi1 , xi ]
2 ,
e ,
x [xe1 , xe2 ] = [xi , xi+1 ]
i (x) =
1
0
x
/ [xi1 , xi+1 ]
Kij =
di dj
+ i j )dx
dx dx
Fi
Z1
f i dx
para 1 i, j m + 1.
e
Kab
Zx2
de de
= ( a b + ea eb )dx
dx dx
xe1
1 a, b 2,
(2.39)
Fae =
Zx2
f ea dx
xe1
1a2
(2.40)
m
X
e=1
F =
m
X
e=1
Fe
(2.41)
42
e
K =
e
K11
e
K21
e
K12
e
K22
e
e+1
e
e
e
e
e
e
e
Os elementos K11
, K12
, K21
e K22
podem ser representados por Kee
, Ke,e+1
, Ke+1,e
e
e Ke+1,e+1
, respectivamente. Analogamente, para a forca F e os u
nicos elementos nao
e
e
necessariamente nulos sao F1 e F2 . Assim
e
onde F1e = Fee e F2e = Fe+1
.
2.5
Z1
0
de de
+ e e dx
dx dx
43
Zxe
xe1
x
Ze+1
de de
de de
+ e e dx +
+ e e dx
dx dx
dx dx
xe
e1
x
Z2
d2e1 d2e1
e1 e1
+ 2 2
dx
dx
dx
xe1
1
Zx2
de1 de1
e e
+
+ 1 1 dx
dx dx
xe1
e1
e
= K22
+ K11
(2.43)
Logo, o coeficiente Kee da matriz global K recebe contribuicao dos elementos finitos
(e 1) e do elemento e, atraves da relacao
e1
e
Kee = K22
+ K11
,
e = 2, 3, . . . , m
(2.44)
e1
e
onde K22
e K11
sao os coeficientes da matriz local K e1 e K e de ordem 2 2.
Ke,e+1 =
Z1
0
x
Ze+1
de de+1
de de+1
+ e e+1 dx =
+ e e+1 dx
dx dx
dx dx
e
Zx2
de1 de2
e
e e
+ 1 2 dx = K12
dx dx
xe1
xe
(2.45)
e
Assim, o coeficiente global Ke,e+1 recebe apenas a contribuicao local do coeficiente K12
da matriz local do elemento e.
(2.46)
Para os coeficientes K11 , Km+1,m+1 relativo aos nos extremos, consideremos o seguinte:
1
K11
Z1
Zx2
d1 d1
d1 d1
=
+ 1 1 dx =
+ 1 1 dx
dx dx
dx dx
0
x11
44
Zx2
d11 d11
1
1 1
+ 1 1 dx = K11
=
dx dx
(2.47)
x11
pois,
x1 x
11 (x) = 2
,
h1
1 (x) =
0,
x [x11 , x12 ]
x
/ [x11 , x12 ]
m+1 (x) =
logo,
0,
m
x
/ [xm
1 , x2 ]
m (x) = x x1 ,
2
hm
m
x [xm
1 , x2 ] = [xm , xm+1 ]
Km+1,m+1
Zx2
m
dm
2 d2
m
m m
=
+ 2 2 dx = K22
dx dx
(2.48)
xm
1
e = 2, 3, . . . , m
e = 1, 2, 3, . . . , m
(2.49)
Fe =
Z1
f (x)ea (x) dx =
= F2e1 + F1e
x
Ze+1
f (x)ea (x) dx =
xe1
e1
x
Z2
f (x)2e1 (x) dx +
xe1
1
Zx2
f (x)e1 (x) dx
xe1
(2.50)
45
Z1
f (x)1 (x) dx =
Fm+1 =
Z1
Zx2
(2.51)
x11
f (x)m+1 (x) dx =
Zx2
m
f (x)m
2 (x) dx = F2
(2.52)
xm
1
e = 2.3, . . . , m
(2.53)
Matriz Global
Cada matriz local K e e dada por
e
K =
onde,
e
e
K11
K12
e
e
K21 K22
e
K11
Zx2
de1 de1
e e
e
+ 1 1 dx = K22
=
dx dx
xe1
e
e
K21
= K12
Zx2
de1 de2
e e
+ 1 2 dx
=
dx dx
xe1
xe2 x
he
de1
1
=
dx
he
e2 =
x xe1
he
de2
1
=
dx
he
46
he
+
he
3
Ke =
h
e
+
he
6
Usando o algoritmo (2.49), obtemos a
K11 K12 0
K21 K22 K23
0
K32 K33
K=
..
0
.
0
0
0
0
0
0
0
he
+
he
6
he
+
he
3
(2.54)
0
0
0
0
..
. 0
(2.55)
.. ..
.
.
0
..
. Km,m
Km,m+1
0
Km+1,m Km+1,m+1
claro que a matriz global K calculada em (2.24) e (2.55) e a mesma, exceto que
E
em (2.24) foram consideradas as condicoes de fronteira e, portanto, todos os elementos
da primeira e u
ltima fila sao zeros.
A matriz local (2.54) e valida para todo elemento e = 1, 2, . . . , m. Logo, para
obtencao da matriz global K e suficiente o uso do algoritmo (2.49). No proximo
captulo mostraremos que para o caso bidimensional a sistematica e a mesma e portanto
adotaremos este procedimento, pois facilita a obtencao da matriz global do sistema
linear KC = F e tambem do vetor forca F .
Vetor For
ca
Do algoritmo (2.53), tem-se que
F1 = F11
Fm+1 = F2m
De (2.50), para e = 2, 3, . . . , m,
Fe = F2e1 + F1e
Para obter Fe explicitamente, calculemos F2e1 e F1e . Usando a interpolacao local da
funcao f (x) dada por
2
X
f (x) =
fae ea (x) dx
a=1
47
F1e =
Zx2
xe1
Zx2
xe1
Zx2
(2.56)
xe1
onde f1e = f (xe1 ) = f (xe ) e f2e = f (xe2 ) = f (xe+1 ). Agora, de (2.38) temos,
e
Zx2
(e1 (x))2 dx =
xe1
he
3
(2.57)
Zx2
he
6
xe1
(2.58)
he e he e
f + f2
3 1
6
(2.59)
Zx2
f (x)e2 (x) dx =
Zx2
xe1
xe1
xe1
Zx2
he e he e
f + f
6 1 3 2
(2.60)
he
he1 e1
f1 + 2f2e1 +
(2f1e + f2e ) ,
6
6
e = 2, 3, . . . , m (2.61)
F1 =
Zx2
x11
Zx2
x11
11 (x)
2
dx + f21
isto e,
F1 = F11 =
Zx2
x11
h1
h1
12 (x) 11 (x) dx = f11 + f21 ,
3
6
h1
2f11 + f21
6
(2.62)
48
e
m
Fm+1 =
Zx2
f (x)m
2 (x) dx
xm
1
= f1m
Zx2
m
m
(m
1 (x) 2 (x)) dx + f2
Zx2
2
(m
2 (x) ) dx =
xm
1
xm
1
ou seja,
Fm+1 = F2m =
hm m hm m
f +
f ,
6 1
3 2
hm m
(f + 2f2m )
6 1
(2.63)
(2.64)
Observe que a forca F dada acima coincide com (2.33), exceto pela primeira e u
ltima
linha que sao as condicoes de fronteira. Em particular, se a malha e uniforme tem-se:
h
2f11 + f21
6
h e1
(f
+ 4f1e + f2e ),
=
6 1
h m
=
(f + 2f2m ).
6 1
F1 =
Fe
Fm+1
2.6
para e = 2, 3, . . . , m
Integra
c
ao Num
erica
u (x) =
m+1
X
Ci i (x)
i=1
onde i (x) e uma funcao de interpolacao linear. Assim, a solucao uh = uh (x) , definida
acima, do problema aproximado
a(um , v) = (f, v),
v Vm
49
por splines c
ubicos. Consequentemente, a solucao aproximada uh (x) e um polinomio
c
ubico por partes e, em geral, se espera que a solucao numerica se aproxime melhor
da solucao exata u = u(x) do que a obtida por interpolacao linear. Neste caso, os
calculos da matriz local Kije e Fie sao mais trabalhosos, havendo entao a necessidade
de introduzir um metodo de integracao numerica.
Neste contexto um metodo apropriado para o calculo da integral e o metodo da
quadratura Gaussiana, tambem conhecida como Metodo de Gauss-Legendre , com dois
pontos interiores 1 e 2 , cujo valor e exato para polinomios de grau 3. Para
maiores detalhes sobre quadratura Gaussiana veja Burden e Faires [3].
A quadratura Gaussiana no caso unidimensional e dada por
Z1
g() d =
N
X
g(i )wi ,
i=1
onde N e o n
umero de pontos de integra
cao, i e a coordenada e wi e o peso associado
3
a i . Quando N = 2, entao, 1 =
= 2 e w1 = w2 = 1. Nestas condicoes o erro
3
da integracao e dado por
1 d4 g()
EG =
135 d 4
e a integral e calculada por
Z1
g() d = g
!
3
+g
3
!
3
3
(2.65)
Desde que o intervalo de integracao da funcao g e o intervalo fechado [-1, 1], entao,
para calcular a matriz local e a forca local do elemento e, cujas coordenadas sao dadas
por [xe1 , xe2 ], e necessario fazer a seguinte transformacao isoparametrica:
: [xe1 , xe2 ] [1, 1]
x 7 (x) =
2x xe1 xe2
he
(2.66)
50
dxe he
= . Podemos, entao, calcular a matriz local e a forca local. Com
d
2
efeito, sabemos de (2.39) que
Z xe2
de de
e
Kab =
( a b + ea eb )dx
dx dx
xe1
Alem disso,
Porem,
dea d
dea 2
dea
=
=
,
dx
d dx
d he
logo,
e
Kab
=
Z1
4 dea deb
+ a b
h2e d d
he
d =
2
g() =
4 dea deb
+ ea ea
h2e d d
onde,
Z1
g() d = g
!
3
+g
3
!
3
, (2.67)
3
he
.
2
F1e =
Zx2
xe1
f (x)e1 (x) dx =
Z1
3
3
= g1 (
) + g1 (
)
3
3
1
he
f ( (xe1 + xe2 + he ))e1() d =
2
2
Z1
g1 () d
(2.69)
51
(2.70)
g1 () =
Analogamente, para F2e tem-se
F2e
3
3
) + g2 (
),
g2 () d = g2 (
3
3
Z1
(2.71)
onde,
he
1
g2 () = f ( (xe1 + xe2 + he ))e2 () ,
2
2
(2.72)
ou se tomarmos (2.68),
g2 () =
he 1 e
f ( (x + xe2 + he ))(1 + ).
4 2 1
f (x ()) = f () =
2
X
fae a ()
(2.73)
a=1
Fae =
Zx2
xe1
f (x)ea (x) dx =
Z1
xe
f ()
a (xe ()) d =
Z1
2
X
b=1
!
xe e
a ()b ()
f d
b
1
2 () = (1 + )
2
(2.74)
52
he
dxe
= . Logo
d
2
he
Fae = (
2
Z1
(2.75)
2f1e + f2e
f1e + 2f2e
2.7
Condico
es de Fronteira
Exemplo 1
u + u = f,
u(0) = p,
u(1) = q.
u (x) =
m+1
X
i=1
Ci i (x),
53
Entao, para x = x1 = 0, temos p = uh (x1 ) = C1 1 (x1 ) = C1 . Logo, C1 = p. Analogamente, para x = xm+1 = 1 obtemos Cm+1 = q. Portanto, do sistema linear KC = F
de ordem m+1, as constantes C1 e Cm+1 sao conhecidas e assim temos m-1 incognitas
a saber, C2 , . . . , Cm .
Como a matriz global K tem ordem (m + 1) (m + 1) e o vetor forca F tem
(m + 1) componentes, devemos transformar o sistema linear de tal forma a assegurar
que C1 = p e Cm+1 = q. De fato, a matriz global K e dada por (2.55) e o vetor forca
F e dado por (2.64). Assim, a primeira linha do sistema KC = F ,
K11 K12
0
0
F1
C1
C2
K21 K22 . .
0
0
F2
.. = ..
..
..
..
.
.
.
.
0
Fm
Cm
. . Kmm
0
Km,m+1
0
Fm+1
Cm+1
0
0
0 Km+1,m Km+1,m+1
e dada por
K11 C1 + K12 C2 = F1
Tomando K11 = 1, K12 = 0 e F1 = p, a igualdade e verdadeira e satisfaz a condicao
C1 = p. Para a segunda linha, temos:
K21 C1 + K22 C2 + K23 C3 = F2 K22 C2 + K23 C3 = F2 K21 C1 = F2 K21 p
Apos o calculo de F2 K21 p, faca K21 = 0.
1 0
0
0
0
C1
p
0 K22 K23
F pK
0
0
21
2
C2
.
.
.
.
.
. ..
F
.
..
..
.
.
.
.
.
.
.
3
.
.
. .
.
.
.
.
..
..
..
.
..
.
.
.
.
.
(2.76)
.
.
.
.
.
. .
.
.
..
.
.
.
.
.
.
..
..
..
..
..
.. ..
..
.
0 0
qK
m
m,m+1
Cm
0 Km,m1 Km,m 0
q
Cm+1
0 0
0
0
0
1
O sistema linear pode, entao, ser resolvido pelo algoritmo dado anteriormente, cuja
solucao e
C = (C1 , C2 , . . . , Cm , Cm+1 ) = (p, C2 , . . . , Cm , q).
54
i = 1, 2, . . . , m, m + 1
v H01 ()
Logo,
Tomando w h (x) =
m
X
(2.77)
j=2
m
X
j=2
para i = 2, , m. Usando como interpoladores as funcoes base j (x) podemos interpolar f , ph e q h da seguinte forma:
m+1
X
f (x) =
j (x)fj ,
j=1
x ,
ph (x) = p1 (x), x e
q h (x) = qm+1 (x), x
Definindo
Kij = a(i , j )
e
(2.78)
m+1
X
j=1
fj
xi+1
xi1
(j i ) dx ph K1i q h Km+1,i
(2.79)
55
m
X
K e,
F =
e=1
onde
m
X
e=1
Zx2
da db
e
Kab = (
+ a b )dx,
dx dx
1 a, b 2
xe1
Fae
F e,
2
X
b=1
fbe
xe2
xe1
e
e
ea (x)eb (x) dx pK1a
qKm+1
e
e
= fae pK1a
qKm+1
(2.80)
Observe que a matriz global K e a mesma matriz dada por (2.55). Calculemos, agora,
a forca F , observando as igualdades (2.50), (2.51), (2.52), o algoritmo (2.53) e usando
o fato da matriz K ser tridiagonal:
F2 = f21 + f12 pK12 ,
Fi = fie , i = 3, 4, . . . , m 1 ,
Fm = f2m1 + f1m qKm+1 m ,
Dessa forma, tem-se
K22 K23
K32 K33
..
0
.
0
0
0
0
0
0
..
.
0
0
..
..
.
.
0
..
. Km1 m1 Km1 m
0
Km m1
Km m
C2
C3
..
.
C
m1
Cm
(2.81)
F2
F3
..
.
=
Fm1
Fm
(2.82)
Resolvendo este sistema linear, obtemos a solucao C = (C1, . . . , Cm+1 ), onde pela
condicao de fronteira C1 = p e Cm+1 = q.
u + u = f,
u(0) = p,
u (1) = q.
56
Definindo
1
0
du dv
dx +
dx dx
uv dx =
a(u, v) =
(f, v) =
f v dx + (qv(1) pv(0)).
du dv
+ uv )dx
dx dx
(2.83)
f (x)v(x) dx
(2.84)
v H 1 ()
(2.85)
u (x) =
m+1
X
j=1
Cj j (x).
57
Definindo
Kij = a(i , j )
(2.86)
(2.87)
e
para i = 1, . . . , m + 1, obtem-se um sistema linear da forma KC = F . A matriz global
K e a mesma dada por (2.55). A u
nica mudanca no sistema linear e a forca F .
C
alculo da Forca
Como anteriormente, considere a forca local Fae , a = 1, 2, definida por
e
Fae =
Zx2
xe1
f (x)ea (x) dx pea (0) + qea (1) = fae pea (0) + qea (1)
Para e = 1,
F11 = f11 p
F21 = f21
(2.88)
Fae = fae
(2.89)
m
pois m
2 (1) = 2 (xm+1 ) = m+1 (xm+1 ) = 1 e 1 (1) = m (xm+1 ) = 0.
Do algoritmo (2.53),
F1 = F11 ,
Fe = F2e1 + F1e , e = 2, . . . , m
Fm+1 = F2m
58
he e
f
6 2
he e
f
3 2
F1 = F11 =
Zx2
f (x)11 (x) dx p =
h1
(2f11 + f21 ) p
6
x11
Fm+1 = F2m =
Zx2
f (x)m
2 (x) dx + q =
xm
1
hm m
(f1 + 2f2m ) + q
6
Para e = 2, . . . , m,
he1 e1
he
(f1 + 2f2e1) + (2f1e + f22 ) ,
6
6
e+1
= f (xe ) e f2e = f1 = f (xe+1 ). Portanto, F = [F1 , . . . , Fm+1 ]T .
Fe =
Utilizando a matriz global K dada em (2.55) e o vetor forca dado acima, obtem-se,
entao, o sistema linear de ordem (m+1), cuja solucao C = (C1 , . . . Cm+1 ) e a solucao
aproximada uh (xi ) nos nos xi do problema 2.
Comparando os vetores forca dos exemplos 1 e 2, nota-se que os u
nicos componentes
diferentes sao F1 , F2 , Fm e Fm+1 .
Exemplo 3
u + u = f,
u (0) = p,
u(1) = q.
59
K11 K12
K21 K22
..
0
.
0
0
0
0
onde Km,m+1 =
0
..
.
0
..
..
.
.
..
. Kmm
0
0
=
=
=
=
1;
0
Fm qKm,m+1
q
C1
C2
..
.
Cm
0
Cm+1
1
F1
F2
..
.
=
Fm qKm,m+1
q
(2.90)
hm
+
e dado por (2.54) e Fm e dado por (2.61).
hm
6
Exemplo 4
u + u = f,
u(0) = p,
u (1) = q.
onde p e q sao n
umeros reais.
du
du
u(x1 ) = u(0) = p e
(xm+1 ) =
(1) = q. O procedimento e analogo ao anterior,
dx
dx
resultando num sistema linear da forma
K11 K12
0
0
p
C1
C2
K21 K22 . .
0
0
F2 pK12
..
..
..
..
... =
0
(2.91)
.
.
.
.
0
..
Cm
Fm
0
. Kmm
Km,m+1
0
Fm+1
Cm+1
0
0 Km+1,m Km+1,m+1
60
2.8
Programa Computacional
Descrevemos abaixo as subrotinas usadas para o desenvolvimento do programa computacional usando linguagem C para o calculo da solucao aproximada nos problemas
que daremos a seguir.
1. InputData
Os dados de entrada sao os n
umeros reais positivos e e o n
umero de elementos
Nel = m. O n
umero de nos e dado por Nos = Nel + 1 = m + 1.
2. InputCondFront
As condicoes de fronteira nos nos extremos do intervalo considerado, sao classificados por tipos:
tipo 1 : Dirichlet
tipo 2 : Neumann
u(x1 ) = p ,
p IR
he = xe+1 xe
61
1
he
xe () = (xe1 + xe2 + he ) = xe1 + ( + 1),
2
2
e
onde a funcao Xi(e, ) e a aplicacao x ().
7. MatrizRigidez
Para cada elemento e, a matriz local K e e dada por
e
e
K11 K12
e
K =
e
e
K21
K22
onde os coeficientes da matriz estao definidos em (2.54). Desde que NoLG(e, 1) = e
e NoLG(e, 2) = e + 1, para alocar a matriz local para cada e devemos usar o
algoritmo:
1
K11 = K11
e1
e
Ke,e = K22
+ K11
e
Ke,e+1 = K12 , e = 2, 3, . . . , m
m
Km+1,m+1 = K22
62
Ke+1,1 = Ke,e1
Ke,2 = Ke,e
Ke,3 = Ke,e+1
8. VetorForca
Para calcular a forca local f (x) utilizando a quadratura Gaussiana, onde definimos as funcoes g1 e g2 em (2.70) e (2.72), ou seja,
1
he
he
g1 () = f ( (xe1 + ( + 1))e1 () ,
2
2
2
1
he
he
g2 () = f ( (xe1 + ( + 1))e2 () .
2
2
2
Logo,
3
3
F1e =
) + g1 (
),
g1 () d = g1 (
3
3
1
Z 1
3
3
e
) + g2 (
),
F2 =
g2 () d = g2 (
3
3
1
Z
e = 2, 3, . . . , m
63
K12 = 0 ;
F1 = p ;
F2 F2 K21 p
e K21 = 0.
64
2.9
Exemplos
Nesta secao daremos exemplos para o problema modelo com diferentes tipos de
fronteira. Estimativas de erros de solucoes numericas em geral serao dadas no proximo
captulo. Porem, se conhecemos a solucao exata do problema podemos calcular os
errors, nas normas do H 1 (0, 1) e L2 (0, 1), entre a solucao numerica e exata diretamente.
(2.92)
(q pe )e + (pe q + )e
u1 (x) = +
e e
x
x
e + ex
1 ex
1
1
u2 (x) = + (p )
+ (q ) + ( p)e
(2.93)
(e e )
x
1 e(x1) e(1x)
1 ex + ex
u3 (x) = + (p )
+
(q
)
(2.94)
(e + e )
(e + e )
e(x1) + e(1x)
1 ex ex
x
+
(q
)
(2.95)
u4 (x) = + p
(e + e )
(e + e )
onde 2 = /.
O conhecimento da solucao exata possibilitara o calculo do erro definido por
E(x) = uh (x) uex (x).
As normas em L2 (), H 1 () e a seminorma H01 () do erro E sao definidas por
nZ
o1/2
kEk0 =
|E|2 dx
dE 2 o1/2
nZ
kEk1 =
|E|2 + dx
.
dx
(2.96)
i=1
m
m
n X
X
Ei 2 o1/2
2
Ei + h
kEk1 = h
x
i=1
i=1
(2.97)
65
Sec. 9. Exemplos
A norma discreta kEk1 pode ser escrita na forma equivalente,
o1/2
o1/2 n P
n P
m
m E
i 2
)
h Ei2
+ h (
i=1
i=1 x
m
n P
o1/2 n 1 X
o1/2
m
= h Ei2
+
(Ei+1 Ei )2
h i=1
i=1
kEk1 =
(2.98)
(2.99)
Soluc
ao Num
erica
Exemplo 1 Problema de Dirichlet
uxx + u = f
u(0) = p, u(1) = q
(2.100)
1
(ex ex ),
1
ee
x [0, 1].
Usando a malha uniforme com h = 1/20, temos 20 elementos e 21 nos. A solucao aproximada uh e a solucao exata u nos nos sao dadas na Tabela(2.1) Os erros absolutos Ea
e relativos Er nas normas L2 (0, 1) e H01 (0, 1) obtidos sao
kEa k0 = 7.7673 106 , kEa k1 = 2.6648 105,
kEr k0 = 0.0186%,
kEr k1 = 0.0187%.
Para efeito de comparacao, para mostrar que o erro depende da malha, segue abaixo
66
Aproximada
+0.00000000
+0.00743773
+0.01476900
+0.02188711
+0.02868480
+0.03505403
+0.04088567
+0.04606926
+0.05049271
+0.05404203
+0.05660105
+0.05805111
+0.05827080
+0.05713560
+0.05451763
+0.05028528
+0.04430292
+0.03643054
+0.02652339
+0.01443165
+0.00000000
Exata
+0.00000000
+0.00743638
+0.01476628
+0.02188311
+0.02867955
+0.03504759
+0.04087818
+0.04606078
+0.05048336
+0.05403205
+0.05659056
+0.05804033
+0.05825994
+0.05712492
+0.05450734
+0.05027583
+0.04429452
+0.03642360
+0.02651833
+0.01442886
+0.00000000
kEr k0 = 0.3045%,
kEr k0 = 0.0758%,
kEr k1 = 0.3057%.
kEr k1 = 0.0762%,
Note que o erro kEa k0 na norma L2 (0, 1) para h = 1/20 ; h = 1/10 e h = 1/5, como
podemos ver na Figura (2.4), satisfaz a relacao E(h) 0 quando h 0, onde estamos
negligenciando os erros de arredondamento. Provaremos no proximo captulo, secao
Analise de Erro, que na norma L2 (0, 1) o erro e de ordem O(h2 ), ou seja e da forma
E(h) = ch2 , onde a constante c para esse exemplo e c = 0.03023. Para a norma H 1 (0, 1),
mostraremos que o erro absoluto e de ordem O(h), embora pode ser mostrado que a
ordem de convergencia e da forma O(h(1+) ), com 0 < 1.
67
Sec. 9. Exemplos
0.06
0.05
u(x)
0.04
0.03
0.02
0.01
0
0.2
0.4
0.6
0.8
0.2
0.25
x
Figura 2.3: Solucao exata
0.0002
E(h)
0.00015
0.0001
5e-05
0
0.05
0.1
0.15
h
kEr k1 = 6.5318%.
Note que o erro e pior nesse exemplo quando comparado com o anterior, mostrando
uma dependencia do parametro , que como veremos nos proximos captulos, o erro
absoluto e inversamente proporcional a .
(3.) Considere = = 1, p = 0, q = 1 e f (x) = x. Neste caso, a solucao exata
e a solucao aproximada sao iguais e dadas por u(x) = uh (x) = x. Os erros relativos
obtidos para 5 elementos sao kEr k0 = 0.0000% e kEr k1 = 0.0000%.
68
kEr k1 = 0.0004%.
1
((e + 1)ex (e1 + 1)ex )
e e1
kEr k1 = 0.0013%.
(2.101)
1
((e 1)(ex + ex )),
e e1
u(x)
0.55
0.5
0.45
0.2
0.4
0.6
0.8
x
Figura 2.5: Solucao exata
Usando a malha uniforme com h = 1/20, temos 20 elementos e 21 nos. A solucao
aproximada uh e a solucao exata u nos nos sao dadas na Tabela(2.2)
69
Sec. 9. Exemplos
No
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Aproximada
+0.46209684
+0.46265385
+0.46424291
+0.46674299
+0.47003525
+0.47400284
+0.47853073
+0.48350516
+0.48881352
+0.49434412
+0.49998564
+0.50562716
+0.51115775
+0.51646620
+0.52144074
+0.52596867
+0.52993637
+0.53322870
+0.53572881
+0.53731793
+0.53787494
Exata
+0.46211720
+0.46267408
+0.46426281
+0.46676257
+0.47005433
+0.47402132
+0.47854859
+0.48352227
+0.48882976
+0.49435946
+0.50000000
+0.50564057
+0.51117027
+0.51647776
+0.52145141
+0.52597868
+0.52994567
+0.53323734
+0.53573722
+0.53732580
+0.53788280
kEr k1 = 0.0040%.
1
(ex + ex )
1
ee
70
kEr k1 = 0.0419%.
u(x)
0.95
0.9
0.85
0.8
0.75
0.2
0.4
0.6
0.8
x
Figura 2.6: Solucao exata
Exemplo 3 Problema misto
(1.) Considere as condicoes de fronteira dadas por u (0) = 0, u(1) = 1, com =
= 1 e f (x) = x. Entao a solucao exata, representada pela Figura (2.6), e dada por
1
(e ex e1 ex ),
e + e1
A solucao aproximada uh e a solucao exata u nos nos sao dadas na Tabela(2.3): Os
erros absolutos e relativos para 20 elementos obtidos sao
u(x) = x +
kEr k1 = 0.0061%.
kEr k1 = 0.0048%.
71
Sec. 9. Exemplos
No
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Aproximada
+0.76155293
+0.76248443
+0.76519787
+0.76957500
+0.77550173
+0.78286773
+0.79156655
+0.80149484
+0.81255239
+0.82464194
+0.83766848
+0.85153961
+0.86616498
+0.88145620
+0.89732635
+0.91369003
+0.93046325
+0.94756287
+0.96490663
+0.98241276
+1.00000000
Exata
+0.76159418
+0.76252550
+0.76523858
+0.76961505
+0.77554089
+0.78290582
+0.79160345
+0.80153024
+0.81258607
+0.82467365
+0.83769804
+0.85156691
+0.86618978
+0.88147837
+0.89734566
+0.91370648
+0.93047667
+0.94757313
+0.96491349
+0.98241621
+1.00000000
1
0.98
u(x)
0.96
0.94
0.92
0.9
0.88
0.2
0.4
0.6
x
0.8
72
No
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Aproximada
+1.00000000
+0.98073423
+0.96379620
+0.94901866
+0.93623948
+0.92530161
+0.91605282
+0.90834486
+0.90203339
+0.89697766
+0.89303994
+0.89008522
+0.88798118
+0.88659751
+0.88580561
+0.88547844
+0.88549024
+0.88571596
+0.88603115
+0.88631147
+0.88643253
Exata
+1.00000000
+0.98073846
+0.96380430
+0.94903004
+0.93625379
+0.92531860
+0.91607201
+0.90836591
+0.90205604
+0.89700150
+0.89306480
+0.89011097
+0.88800752
+0.88662428
+0.88583273
+0.88550586
+0.88551772
+0.88574356
+0.88605875
+0.88633901
+0.88646013
73
2.10
Exerccios
xi = ()mi ,
x0 = 0
i = 1, , m
(2.102)
onde e uma constante positiva tal que 0 < < 1. Diz-se neste caso que a
malha tem razao . Usando a malha geometrica, com = 4/5, altere o programa
PEU.cpp de forma a determinar a solucao aproximada do Exemplo 2 do Cap.2 ,
com 20 elementos. Compare com a solucao aproximada obtida usando a malha
uniforme. Em que malha obtemos melhor solucao.
3. Considere o seguinte problema, chamado de Problema Sturm-Liouville:
p(x)u (x) + q(x)u(x) = f,
x (0, 1)
(2.103)
u(0) = 0,
u (1) = 0,
du
, p(x) e q(x) sao funcoes que representam caractersticas fsicas
dx
do material da corda. Assumiremos que p, q C 1 (0, 1) e alem disso, existem
constantes positivas 1 , 2 , 1 , 2 e tais que:
onde u denota
(ii) |p (x)|
x [0, 1]
1 q(x) 2 0,
x [0, 1]
(pu v + quv)dx =
0
f v dx,
v V
(b) Usando como base as funcoes lineares por partes i determine a matriz
global e o vetor forca global.
(c) Mostre que a matriz global e definida positiva.
74
CAPITULO 3
Func
ao Base e Estimativa de Erro
No captulo anterior solucao aproximada e gerada pelas funcoes bases i , onde i sao
funcoes lineares por partes em cada intervalo Ii = [xi1 , xi+1 ] e i (xj ) = 0 se xj
/ Ii .
Neste captulo sao introduzidas outros tipos de funcoes bases i , os polinomios por
partes de grau 2 e grau 3, com os procedimentos para obtencao da solucao aproximada,
isto e, a matriz e forca local para cada elemento e algoritmos para obtencao da matriz
e forca global. Introduzimos tambem estimativas de erros para espacos de Sobolev e a
relacao entre o erro e o grau do polinomio gerador do espaco das solucoes aproximadas
Vm . Alem das consideracoes do erro de interpolacao, o uso de funcoes base de ordem
superior e indispensavel para alguns problemas, como o problema da viga elastica que
apresentaremos.
3.1
Func
ao Base de Ordem Superior
Em (2.19), definimos a funcao i (x), que e linear por partes em cada intervalo
Ii = [xi1 , xi+1 ] e com essa base, gera-se o subespaco Vm = [1 , 2 , ..., m ], dado por
Vm = vh V ; vh |Ii = vhi C 0 = P1 (Ii ) ,
76
3.1.1
Base Quadr
atica
Considere o subespaco
Vm2 = vh V ; vh |Ii = vhi P2 (Ii ) ,
onde P2 sao polinomios de grau 2, definidos em cada elemento finito Ii . Para gerar
cada um dos polinomios interpoladores por partes de grau 2 sao necessarios tres pontos
e desta forma o intervalo = (0, 1) deve ser discretizado num n
umero par de pontos,
ou seja, considerando o intervalo Ii = [x2i , x2(i+1) ] e um outro ponto adicional, denotado por x2i+1 Ii , gerando os subintervalos [x2i , x2i+1 ] e [x2i+1 , x2(i+1) ] para i =
0, 1, n 1 , com x0 = 0 e x2m = 1. Dessa forma, definimos hi = x2(i+1) x2i , o passo
de cada intervalo. Entao o subespaco Vm2 e gerado pelas funcoes testes [0 , 1 , 2m ].
Estas funcoes sao definidas das seguinte forma:
As funcoes testes pares 2i satisfazem as condicoes,
2i (x2i ) = 1,
2i (x2i+1 ) = 2i (x2i+2 ) = 0,
2i (x2i1 ) = 2i (x2i2 ) = 0
em Ii ,
em Ii1 .
em Ii .
1
2
x
)
+
2i2
h2i
hi
1
3
2i (x) =
(x
x
)
+
(x x2i )2 , x [x2i , x2i+2 ],
1
2i
2h
2h
i
i
0,
x
/ [x2i2 , x2i+2 ].
4 (x x )(x x
2i
2i+2 ), x [x2i , x2i+2 ],
h2i
2i+1 (x) =
0,
x
/ [x2i , x2i+2 ].
(3.1)
(3.2)
77
1
3
x [x0 , x2 ],
x + 2 x2 ,
1
,
0 =
2hi
2hi
0,
/
[x
,
x
]
0
2
3
2
0,
x
/ [x2m2 , x2m ].
Note que no no x2i , temos que (2i , 2i+j ) = 0 se |j| 3, logo a matriz global K e uma
matriz pentagonal.
Matriz Rigidez Local
Considere a matriz do problema exemplo, definida por,
Z 1
di dj
Kij =
(
+ i j ) dx.
dx dx
0
2
3
he
he
4
e2 (x) = 2 (x xe1 )(x xe2 ),
(3.3)
he
2
1
e
Assim cada matriz local Kab
de ordem 3 3 e Forca Local Fae sao dadas por
Z xe2
de de
e
Kab =
( a b + ea eb )dx
1 a, b 3,
dx dx
xe1
Z xe2
(3.4)
e
e
Fa =
f a dx
1 a 3.
xe1
e
e
k11
= k33
=
e
e
e
e
k12
= k21
= k23
= k32
=
e
k22
e
e
k13
= k31
=
1
he
.
3he
30
he
8
+ ,
3he
15
78
e3 (x)
xe1
xe2
e1 (x)
xe1
e2 (x)
xe2
xe1
xe2
K(2e1),(2e+1) = K(2e+1),(2e1) = 0
e+1
e
K(2e),(2e)
= k33
+ k11
e
K(2e),(2e+1)
= k12
e = 1, 2, 3, . . . , m 1.
(3.5)
e
K
= k13
(2e),(2e+2)
K
= k22
(2e+1),(2e+1)
e
K(2e+1),(2e+2) = k23 .
A contribuicao do vetor forca local fae para o vetor forca global F de ordem (2m + 1)
e dado pelo algoritmo:
F2e = f3e1 + f1e ,
F2e+1 = f2e ,
F0 = f11 ,
F2m1 = f2m1 ,
F1 = f21 ,
F2m = f3m1 .
e = 1, 2, 3, . . . , m 1,
3.1.2
Base C
ubica
Um spline c
ubico, denotado por C(x), e um polinomio interpolador por partes de
grau 3 em cada intervalo Ii = [xi , xi+1 ], que interpola uma dada funcao g(x) e e duas
vezes diferenciavel em cada no xi . A funcao C(x) pode ser representada por
C(x) = Ci (x) = ai3 x3 + ai2 x2 + ai1 x1 + ai0 ,
x Ii ,
i = 1, 2 , m 1
79
Para que C(x) satisfaca as propriedades de interpolacao e de ser duas vezes diferenciavel
e necessario determinar os coeficientes aij de C(x) de forma que:
i = 1, 2 m
1. C(xi ) = g(xi ),
2. Ci1 (xi ) = Ci (xi ),
Ci1
(xi ) = Ci (xi ),
Ci1
(xi ) = Ci (xi ),
i = 2, 3, m 1.
Os coeficientes ai3 , ai2 , ai1 , ai0 a ser determinados em C(x) = Ci (x) totalizam
4(m 1) incognitas e o n
umero de condicoes requeridas sao: m + 3(m 2) = 4m
6. Assim sao necessarios impor mais duas condicoes adicionais para que C(x) seja
determinado de forma u
nica. Uma das possibilidades e tomar as seguintes condicoes
adicionais :
C (x1 ) = C (xm ) = 0,
(3.6)
e nesse caso o spline e denominado spline c
ubico natural. Mas este spline c
ubico nao e
a melhor escolha para a base, pois nao satisfaz a condicao:
Cj (xi ) = Cj (xi ) = 0,
se |i j| 2,
(3.7)
(x)
x [0, 1],
x [1, 2],
2 (x)
(x) =
1 (x)
2 (x)
x [1, 0],
x [2, 1],
x
/ [2, 2].
1 (0) = 1,
1 (0) = 0,
1 (1) = 2 (1),
1 (1) = 2 (1),
1 (1) = 2 (1),
2 (2) = 0,
2 (2) = 0,
2 (2) = 0.
80
3
3
1 (x) = 1 x2 + x3 ,
2
4
(3.8)
3
(x) = 2 3x + x2 1 x3 .
2
2
4
(x xi2 )3 ,
x [xi2 , xi1 ],
4h
1
3
3
3
4h
4h
4 4h
3
3
3
Bi (x) =
1
4 4h
4h
4h
(xi+2 x)3 ,
x [xi+1 , xi+2 ]
4h
0,
x
/ [xi2 , xi+2 ]
Pode se mostrar que Bi (x) de fato e uma base para os splines c
ubicos, ou seja, toda
spline c
ubica pode ser escrita como combinacao linear das B-splines.
i (x) = Bi (x), i = 3, , m 1,
81
onde B0 (x) e Bm+2 (x) sao os B-splines nos pontos x0 = x1 h e xm+2 = xm+1 + h,
respectivamente.
Temos que
i (xi ) = 1,
i = 2, 3, , m;
i (xi1 ) = 1/4,
i (xi+1 ) = 1/4,
i = 1, 2, , m 1,
i = 3, 4, , m + 1
m
X
j=2
dj j (x) ,
j V m .
Note tambem que pela definicao do B-spline, nao temos a propriedade de interpolacao, ou seja, uh (xi ) 6= di , entretanto a solucao aproximada nos nos xi pode ser
obtida pela relacao,
uh (x2 ) = d2 + 1 d3
4
uh (xi ) = 41 di1 + di + 41 di+1 , para i = 3, 4, , m 1
uh (xm ) = 1 dm1 + dm
4
t
A=
1 1/4
0
0
0
1/4
1 1/4
0
0
0 1/4
1 1/4
0
0
..
..
..
.
.
.
0
0
0
..
.
1/4
1 1/4
0
0
0
0
0
0 1/4
1
(3.10)
82
Matriz Local
Usando os mesmos argumentos anteriores, considere o elemento e definido em cada
intervalo Ii = [xi , xi+1 ], para i = 1, . . . , m. Entao em cada elemento e do intervalo
[xi , xi+1 ] = [xe1 , xe2 ], com h = xe2 xe1 , estao definidas as seguintes funcoes de interpolacao
local, (ver Fig. 3.2)
1
3 e
3
3
e
2
e
(x)
=
+
(x
x)
+
(x
x)
(xe2 x)3
1
2
2
2
3
4
4h
4h
4h
1
e
e 2
e 3
3 (x) = + (x x1 ) + 2 (x x1 ) 3 (x x1 )
4 4h
4h
4h
e4 (x) = 1 (x xe1 )3
4h3
e4 (x)
e1 (x)
1
4
1
4
xe1
e3 (x)
xe2
xe1
e2 (x)
1
4
xe2
xe1
xe2
1
4
xe1
xe2
129h
21
+
,
160h
2240
87
933h
=
+
,
160h
2240
9
3h
e
e
= k23
= k32
=
+
.
40h
112
e
e
k11
= k33
=
e
e
e
e
k12
= k21
= k34
= k43
=
e
e
k22
= k44
e
e
k13
= k31
e
e
k24
= k42
e
e
k14
= k41
83
e
A contribuicao local da matriz kab
para a matriz global K, de ordem (m + 1) (m + 1),
desconsiderando a simetria da matriz (3.12), pode ser obtida pelo seguinte algoritmo:
e2
e1
e+1
e
Kee
= k44
+ k33
+ k11
+ k22
,
e = 3, 4, . . . , m 1
e1
e+1
e
e1
e+1
e
K
=
k
+
k
+
k
,
e = 3, 4 . . . , m 2
(e+1)e
43
31
21
e+1
e
Ke(e+2) = k14 + k23 ,
e = 2, 3, . . . , m 2
(3.13)
e+1
e
e+1
K
=
k
,
e = 1, 2, . . . , m 2
24
e(e+3)
e+1
K(e+3)e = k42 ,
e = 1, 2, . . . , m 2.
1
2
2
2
1
2
3
1
1
1
K11 = k11
+ 17k22
4(k12
+ k21
),
K22 = k33
+ k11
+ k22
k32
k23
+ k22
1
2
1
1
1
1
2
1
1
1
K12 = k13 + k21 k12 4(k23 k22 ),
K21 = k31 + k12 k21 4(k32 k22 ),
1
2
1
1
2
1
K13 = k14 + k23 4k24 ,
K31 = k41
+ k32
4k42
,
1
2
3
1
1
2
3
1
K23 = k34 + k13 + k21 k24 ,
K32 = k43 + k31 + k12 k42
m2
m1
m2
m1
m
m
Km1,m+1 = k14
+ k23
4k24
,
Km+1,m1 = k41
+ k32
4k42
m2
m1
m2
m1
m
m
m
m
m2
m1
m
m
m
m
Km,m = k44 + k33 + k11 k14 k41 + k44 ,
m1
m
m
m
m
Km,m+1 = k34
+ k13
4(k14
k44
) k43
,
m1
m
m
m
m
K
= k43 + k31 4(k41 k44 ) k34
m+1,m
m1
m1
m1
m
Km+1, m+1 = k33
+ 17k44
4(k34
+ k43
)
A contribuicao do vetor forca local fae para o vetor forca global F de ordem n e dado
pelo algoritmo:
Fe = f4e2 + f3e1 + f1e + f2e+1
para e = 3, 4 , m 1
F1 = f11 + f22
Fm+1 = f4m1 + f3m
Note que ate agora, foi negligenciado os valores de fronteira. Assim o sistema linear
Kd = F, tem m + 1 incognitas d = (d1 , d2 , dm+1 ). A forma de insercao dos valores
de fronteira e semelhante ao procedimento que obtivemos para os polinomios linear por
partes (ver Secao 2.7), e dessa forma se as condicoes de fronteira sao tipo Dirichlet,
Neumann ou misto teremos, respectivamente, sistemas quadrados de ordem m 1,
m + 1 e m. Tambem observamos que o algoritmo (3.13) foi deduzido considerando a
simetria da matriz local.
84
3.1.3
Base de Hermite
Nesta secao, vamos introduzir uma funcao base conveniente para determinar a
solucao aproximada do problema da viga elastica, formulada por Bernoulli-Euler.
Seja = (0, 1). A formulacao forte do problema da viga elastica com extremos
encaixadas na parede, pode ser dada, formalmente, como um problema de valores de
fronteira de equacao diferencial de quarta ordem: Dada f : (0, 1) IR, queremos
determinar uma funcao u : [0, 1] IR tal que
(
uxxxx = f
em (0, 1),
(3.14)
u(0) = u(1) = ux (0) = ux (1) = 0.
Usando o mesmo procedimento feito no problema (2.1), ou seja multiplicando por
uma funcao teste e integrando por partes duas vezes obtemos o seguinte formulacao
variacional:
O problem (3.14) e equivalente a determinar u(x) satisfazendo
a(u, v) = (f, v) , v V,
onde
a(u, v) =
Z
(f, v) =
(3.15)
0
1
(3.16)
f v dx.
Note que, para obter a formulacao (3.15) e necessario que u, ux e uxx deve pertencer
ao espaco L2 (0, 1), isto significa que u deve pertencer ao espaco H 2(0, 1). Alem disso
devemos requerer que u(0) = ux (0) = u(1) = ux (1) = 0, pelas condicoes de fronteira,
ou seja, o H02 (0, 1) e o espaco conveniente para a solucao u. Tambem e necessario que
a funcao f deve pertencer ao espaco L2 (0, 1).
Seguindo o mesmo raciocnio, queremos determinar a solucao aproximada da forma:
uh (x) =
m
X
j=1
dj j (x) ,
j V m
(3.17)
onde Vm = [1 , 2 , , m ] e j (0) = j (1) = j (0) = j (1) = 0. Vimos que determinar a solucao aproximada consiste de resolver o sistema linear Kd = F onde a matriz
global K e dada por
Z 1 2
d i d 2 j
Kij =
( 2
) dx.
(3.18)
dx dx2
0
Logo as funcoes testes precisam ser de H02 (0, 1).
85
i (xi ) = 1,
i (xi+1 ) = 0,
i (xi1 ) = 0,
e se anulam para x
/ [xi1 , xi+1 ]. Assim, no intervalo [xi , xi+1 ] consideramos i (x)
e i (x) como polinomios c
ubicos a0 + a1 x + a2 x2 + a3 x3 , e podemos determinar os 4
coeficientes com as 4 condicoes dadas em (3.19) e (3.20), respectivamente para i (x) e
i (x). Tambem podemos fazer o mesmo no intervalo [xi1 , xi ]. Considerando a malha
uniforme com h = xi+1 xi , obtemos polinomios de Hermite, que sao funcoes C 1 (a, b)
por parte, na seguinte forma:
2 x x
i
x xi 1
2
x [xi1 , xi+1 ],
+1 ,
h
h
(3.21)
i (x) =
0,
x
/ [xi1 , xi+1 ],
x x
2
i
(x x )
x [xi1 , xi+1 ],
1 ,
i
h
i (x) =
(3.22)
0,
x
/ [xi1 , xi+1 ].
Observe que com relacao a funcao base de Hermite, a solucao aproximada uh (x)
pode ser escrita na seguinte forma,
m
X
ci i (x) + di i (x) .
(3.23)
uh (x) =
i=0
86
(ci i (x) + di i (x))xx , vxx = (f, v),
v Vm
i=0
m
X
m
X
j = 0, 1, m
j = 0, 1, m
i=0
i=0
m
X
i=0
Definindo as matrizes:
f (x)j (x) dx
0
(i )xx (j )xx dx
0
(i )xx (j )xx dx
(i )xx (j )xx dx
Fj2
f (x)j (x) dx
(3.24)
Note que os dois sistemas sao dependentes e podem ser escritos na seguinte forma,
denominado de sistema bloco:
c
K LT
F1
(3.25)
2
L M
d
F
87
bC
b =F
b de ordem 2(m + 1), notando
Temos portanto que resolver o sistema linear K
b
que as matrizes K, L e M sao tridiagonais e K e simetrica. Cada vetor {c, d, F 1, F 2 }
tem (m+1) componentes.
Como vimos em (2.31) as forcas podem ser interpoladas, usando como base a funcao
i na forma
m
X
f (x) =
fi i (x)
(3.26)
i=0
f (x)j (x) dx =
fi i (x)j (x) dx
0 i=0
Z xi
Z xi+1
Z
2
= fi1
i i1 dx + fi
(i ) dx + fi+1
0
xi1
Fj2
m
1X
xi1
m
1X
xi1
xi1
i i+1 dx
xi
f (x)j (x) dx =
fi i (x)j (x) dx
0 i=0
Z xi
Z xi+1
Z
= fi1
i i1 dx + fi
i i dx + fi+1
0
xi+1
xi+1
i i+1 dx
xi
Note que tambem podemos interpolar a funcao f (x) usando como funcao base a funcao
m
X
bC
b =F
b tem infinitas solucoes,
Condic
oes de Fronteira: O sistema linear bloco K
b e singular. Para obter uma u
b temos que introduzir
ou seja a matriz K
nica solucao C
os valores de fronteira dados pelo problema para garantir que a solucao aproximada
satisfaca os valores de fronteira. Em particular, para o exemplo (3.14) devemos ter a
seguinte condicao para a solucao aproximada: uh (x0 ) = uh (0) = uh (xm ) = uh (1) = 0
e uh (x0 ) = uh (0) = uh (xm ) = uh (1) = 0 ou seja,
m
X
ci i (x) + di i (x) = c0 = 0
uh (0) =
i=0
m
X
uh (1) =
ci i (x) + di i (x) = cm = 0
i=0
m
X
uh (0) =
ci i (x) + di i (x) = d0 = 0
i=0
m
X
ci i (x) + di i (x) = dm = 0
uh (1) =
i=0
88
x xe
2 2(x xe )
1
1
e
(x)
=
1
+
1
,
h
h
xe x
2 2(xe x)
2
2
e2 (x) =
1
+1 ,
h
h
(3.27)
x xe
2
1
e
e
1 (x) = x x1
1 ,
2
xe x
2
e (x) = x xe
1
.
2
2
h
2e (x)
xe1
e2 (x)
1e (x)
xe2
xe1
e1 (x)
1
xe2
xe1
xe2
xe1
xe2
89
3.2
An
alise de Erro do Problema Estacion
ario
v V.
(3.28)
vh Vm ,
(3.29)
Nel
[
e=1
e k = ,
se e 6= k,
90
onde Nel e o n
umero total de elementos.
Considere as seguintes hipoteses:
(H1) a(, ), (, ) e (, ) sao bilineares em V, i.e.,linear em cada argumento.
(H2) a(, ) e contnua e coerciva em V, i.e., existem constantes positivas 1 e 2 tais
que:
k a(u, v)k 1 kukV kvkV
u, v V,
(3.31)
a(v, v) 2 kvk2V
v V.
Segue entao o seguinte teorema,
Teorema 3.1. (Lema de C
ea). Seja e = u uh , denotando o erro absoluto da
aproximacao do metodo de elementos finitos. Ent
ao sob as hipoteses (H1) e (H2),
existe uma constante , independente do subespaco Vm tal que,
1. a(e, vh ) = a(u uh , vh ) = 0,
2. ku uh kV ku vh kV ,
para todo vh Vm , onde = 1 /2 .
A primeira condicao significa que o erro e ortogonal ao subespaco Vm , com respeito
a a(., .), ou ainda que uh e a projecao ortogonal de u no subespaco Vm , com respeito a
a(., .). A segunda condicao significa que a solucao uh obtida pelo metodo de Galerkin
e a melhor aproximacao para u com respeito `a norma k.kV e consequentemente uma
condicao suficiente para a convergencia e a existencia de uma famlia Vm de subespacos
do espaco V tal que, para cada u V , lim inf ku vh kV = 0.
h0 vh Vm
Demonstracao:
1. Como Vm V entao a solucao exata (3.28) pode ser escrita por
a(u, vh ) = (f, vh ) + (p, vh )
vh Vm .
(3.32)
vh Vm .
2 ku uh k2V a(u uh , u vh + vh uh )
a(u uh , u vh ) + a(u uh , vh uh )
= a(u uh , u vh ),
(3.33)
91
vh Vm .
(3.34)
onde = 1 /2 > 0.
Corol
ario 3.1. Se, alem das hipoteses (H1) e (H2), a forma a(, ) e simetrica em
V, ou seja, a(u, v) = a(v, u), u, v V, entao,
vh Vm .
(3.35)
ku uh kV ku vh kV
Demonstracao:
Considerando a identidade e a simetria de a(, ) temos
a(u vh , u vh ) = a(u uh + uh vh , u uh + uh vh )
vh Vm .
ku vh kV .
Logo, quando a forma bilinear a(, ) e simetrica, temos uma melhor aproximacao do
que a obtida por (3.34).
Corol
ario 3.2. Nas mesmas condicoes do Corolario 3.1, temos
kuh kV kukV .
Demonstracao:
a(u, u) = a(u uh + uh , u uh + uh ) = a(e + uh , e + uh )
(3.36)
92
kukV .
3.2.1
Erro de Interpolac
ao
(3.37)
(3.38)
onde
a(u, v) =
e
ux vx dx +
0
(f, v) =
1
0
uv dx, v V
1
0
f v dx , v V
(3.39)
Definic
ao 1. Denomina-se por interpolante ao polinomio interpolador de grau k, denotado por u
e(x) que interpola a solucao exata u nos pontos nodais {xi }, i.e, u(xi ) = u
e(xi )
e em cada intervalo, Ii = [xi , xi+1 ], i = 0, 1, m, u
e(x) e um polinomio de grau k.
No problema aproximado, definimos o subespaco Vm gerado pelas funcoes lineares
por partes (2.19) e desta forma uma maneira natural e escolher a interpolante tendo
como base a funcao i (x), ou seja,
u
e(x) =
m
X
u(xi )i (x),
i=1
onde u = u(xi ) e a solucao exata nos pontos nodais. Sendo i (x) uma base de Vm entao
u
e Vm , u
e(xi ) = u(xi ) e u
e e um polinomio de grau k = 1, em cada elemento finito Ii .
Assim u
e e um polinomio interpolador. O interpolante u
e nao deve ser confundido com
a solucao aproximada uh obtida variacionalmente pelo metodo de Galerkin.
Inicialmente vamos estabelecer uma estimativa de erro para o termo ku u
ek1 .
93
h2
1+ 2
12
kuk2 ,
(3.40)
m
X
i=1
ku u
ei k20,Ii + ku u
ei k20,Ii
Usaremos no que segue o fato de que a solucao u do problema (3.37), para f L2 (0, 1),
pertence ao espaco V = H01 (0, 1) H 2 (0, 1).
Seja = u u
e, tal que, i = |Ii . Desde que u
ei e uma interpolante de u em Ii , entao
nos pontos nodais xi e xi+1 temos que, i (xi ) = i (xi+1 ) = 0. Desta forma podemos
considerar a expansao i em serie de senos de Fourier, i.e,
i (x) =
cmi sen
m=1
m(x xi )
,
h
cmi IR
xi+1
2
i (x) dx =
xi
hX
(cmi )2 ,
i (y) dy =
2 m=1
2
i (y)
m=1
cmi
m
my
cos
,
h
h
cmi IR
94
hX
m2 2
2
2
ki k0,Ii =
i (x) dx =
(cmi )2
2 m=1
h2
xi
e de forma analoga;
kik20,Ii
xi+1
xi
i (x)2
m4 4
hX
(cmi )2
dx =
2 m=1
h4
u
ei = 0 e entao i (x) = u (x), x Ii . Logo, como m 1, obtem-se
ki k20,Ii
(cmi )2
m=1
h2 2
m4 2
=
ku k0,Ii ,
h2
2
i = 1, 2, , m.
ki k20 = ku u
ek20
h2 2
ku k0
2
hX
hX
h4
(cmi )2
(cmi )2 m4 = 4 ku k20,Ii ,
2 m=1
2 m=1
i = 1, 2, , m.
ki k20 = ku u
ek20
h4 2
ku k0
4
Extraindo a raiz quadrada, obtemos a estimativa de erro para i na norma L2 (0, 1),
kk0 = ku u
ek0
h2
ku k0
2
(3.42)
Diz-se neste caso que o erro de interpolacao e de ordem h2 e denota-se por O(h2 ).
Das desigualdades (3.41) e (3.42), conclui-se a estimativa de erro na norma H 1 (0, 1),
4
h2
h
2
2
2
2
kk1 = ku u
ek1 = ku u
ek0 + ku u
e k0
ku k20
+
4 2
95
h2
1+ 2
12
kuk2 ,
(3.43)
Note que a estimativa de erro em H 1 (0, 1) e de ordem O(h) e somente nao e ordem
O(h2 ) em razao da estimativa da derivada (3.41).
3.2.2
Erro na Norma H 1 ()
vh Vm .
1
h2 2
kuk2,
1+ 2
(3.44)
com erro de ordem O(h). Por outro lado, usando (2.7) obtemos a seguinte estimativa
em termos da funcao f , dada por
1
ch
h2 2
ku uh k1 ku u
ek1
kf k0 ,
1+ 2
(3.45)
3.2.3
96
L2 (), ku uh k0 , a u
nica relacao que temos entre o erro de interpolacao e o erro de
aproximacao e dada na norma H 1 (), ou seja
h
ku uh k1 ku u
ek1
1
h2 2
1+ 2
kuk2,
(3.46)
1
h2 2
1+ 2
kuk2,
(3.47)
(3.48)
97
(3.49)
(3.50)
onde c1 0 e uma constante positiva. Neste caso o metodo somente tera uma boa
aproximacao se h << , o que muitas vezes e inviavel em situacoes praticas.
No que segue, mostraremos que a solucao aproximada uh converge em norma para
a solucao exata u quando h 0.
Teorema 3.4. Se f L2 (0, 1) entao a solucao aproximada uh do problema (2.9)
converge para a solucao u H 2 (0, 1) H01 (0, 1) do problema (2.6), i.e,
lim ku uh k1 = 0 e
h0
lim ku uh k0 = 0.
h0
98
3.2.4
Erro na Norma H m ()
Vimos nos teoremas (3.2) e (3.3), que as estimativas de erro nas normas do H 1 (0, 1)
e L2 (0, 1) sao, respectivamente, de ordem O(h) e O(h2 ). Mostraremos a seguir que podemos melhorar a ordem de convergencia se a solucao exata pertence a um espaco mais
regular que o espaco H 2 (0, 1) H01 (0, 1). Nesta secao enunciaremos alguns resultados
mais gerais de estimativa de erro em normas de espaco de Sobolev, validos para
aberto, regular e limitado do IRn n 3, que depende da regularidade da solucao exata
e do grau do polinomio interpolador definido no espaco Vmk , cuja demonstracao pode
ser encontrada, em [5, 16, 24].
Teorema 3.5. Seja u H m , m 0 entao existe uma funcao interpolante u
e Vmk , tal
que para todo s, 0 s r,
ku u
eks ch kukm ,
(3.51)
onde = min{k+1s, ms}, k e o grau do polinomio interpolador, c e uma constante
independente de u e h = max{he }.
Corol
ario 3.3. (Estimativa Otima)
Seja u H k+1 e u
e Vmk entao,
ku u
ekm chk+1m kukk+1,
(3.52)
ku u
ek1 ch1 kuk2 , ku u
ek1 ch2 kuk3 , ku u
ek1 ch3 kuk4 .
99
Para a conclusao da analise do erro precisamos estabelecer uma relacao entre o erro
kekm = ku uh km e ku u
ekm , onde u e a solucao exata, uh e a solucao aproximada e
u
e e a funcao interpolante. Para isto e suficiente tomar u
e = vh Vm no Teorema (3.1),
obtendo-se:
ku uh km ku u
ekm .
(3.53)
Portanto, todas as estimativas anteriores sao validas para estimar o erro entre a
solucao exata e a solucao aproximada obtida pelo metodo de Galerkin, ou seja, de
(3.52) e (3.53) obtemos:
onde C = c.
3.3
kekm = ku uh km ku u
ekm Chk+1m kukk+1.
(3.54)
Erro Num
erico
h p
kEi km
i
=
,
h
kEi+1 km
i+1
i = 1, 2, .
(3.56)
onde hi+1 < hi . Atraves da relacao (3.56), dizemos que p e a taxa de converg
encia
num
erica. Na teoria o valor de p e constante, mas na pratica obteremos valores
100
aproximados para p dependentes da sucessao i, que pode ser comparado com o resultado
teorico estimado. O n
umero p pode ser explicitamente calculado por
p=
ln
ln i
h ,
i
para i = 1, 2, .
(3.57)
hi+1
Exemplo de construc
ao da sucess
ao da soluc
ao num
erica
Considere as solucoes numericas aproximadas u1 , u2 , uN/2 , obtidas usando o
i o
passo hi = (5 2i+1 )1 , ou seja, hi = 2hi+1 , i = 0, 1, (N 2)/2. Considere E
erro associado a uma norma, comparando as solucoes ui com uN . Para essa sucessao
temos, por exemplo:
p=
3.4
ln i
ln i
,
h =
ln 2
i
ln
hi+1
para i = 0, 1, , (N 2)/2
(3.58)
Exerccios
CAPITULO 4
Problema Estacion
ario
Bidimensional
Neste captulo desenvolveremos um programa utilizando o metodo de elementos
finitos para a equacao elptica, caracterizada pelo problema do calor em estado de
equilbrio. Sao estudadas as formulacoes forte e fraca, as condicoes para existencia
e unicidade de solucao para alguns tipo de condicoes de fronteira e sua influencia
na obtencao do sistema linear. Sao apresentados tambem o metodo de Crout para
resolver o sistema linear, alguns exemplos numericos com solucao grafica e os erros da
solucao aproximada utilizando diversos tamanhos de malha, bem como as condicoes
para existencia e unicidade de solucao. As etapas da elaboracao do programa, em
linguagem C, estao no final do captulo e o codigo no apendice deste texto.
4.1
Formulac
ao do Problema
u
,
xj
102
(I) Formulac
ao forte. Dadas as funcoes f : IR, q : q IR e p : p IR,
queremos encontrar u : IR tal que
u
Q
= f,
em ,
ij
xj
xi
u = q,
em q ,
ni = p, em p ,
qi ni = Qij
xj
Formula
c
ao Fraca
Sejam
H = u H 1 (); u = q em q
V = v H 1 (); v = 0 em q .
(4.2)
(4.3)
(II) Formulac
ao fraca. Dados f : IR, q : q IR, e p : p IR, encontrar
u H tal que
Z
Z
Z
v u
vp d, v V.
Qij
=
vf d +
xi xj
p
O proximo teorema estabelece uma relacao entre as duas formulacoes:
Teorema 1 (Equival
encia de Soluc
ao). Suponhamos que as funcoes sejam suficientemente regulares. Entao os problemas (I) e (II) sao equivalentes.
Demonstracao:
103
conclui-se que
v
xi
u
Qij
xj
d =
vf d +
vp d
u
ni = p(x) em p e que v = 0 em q . Portanto, u e
xj
p
Usando (4.4) no primeiro termo, obtemos
Z
Z
Z
qi
v
vqi ni d.
qi d = v
d +
xi
p
xi
Logo,
Definimos:
Z
qi
0=
v
v (qi ni + p) d
+ f d +
xi
p
Z
qi
u
=
Qij
+ f em ,
+f =
xi
xi
xj
= qi ni + p em p .
104
i) > 0 em p
ii) = 0 em q
iii) e suficientemente suave.
Nestas condicoes, v V = {v H 1 (); v = 0 em q }. Desde que = 0,
Z
Z
2 d
v d =
0=
p
Qij
= f em ,
xi
xj
u
ni = p em p .
xj
Portanto u e solucao do problema (I). Conclui-se, entao, a equivalencia de solucao entre
os problemas (I) e (II), se a solucao e suficientemente regular.
Qij
Exist
encia e Unicidade de Soluc
ao
Mostraremos a existencia e a unicidade da solucao fraca do problema II, quando os
dados iniciais f , p e q sao regulares. Considere
Z
u
v
Qij
d, , v V
(4.5)
a(v, u) =
xj
xi
Z
(v, f ) =
vf d, v V
(4.6)
(v, p) =
vp d,
v V
(4.7)
v V.
(4.8)
105
Assim,
Formula
c
ao de Galerkin
Para usar o metodo de Galerkin, as funcoes u e v devem pertencer ao mesmo espaco.
Sejam H h H, V h V subespacos de dimensao finita dos espacos de Hilbert H e V .
Definimos uma funcao
w h (x) = uh (x) q h (x),
(4.9)
x q .
106
Assim w h V h V = {v H 1 (); v = 0 em q } .
Definimos tambem a funcao
h
p (x) =
p(x),
0,
x p
x
/ p
(4.11)
v V.
(4.12)
As funcoes v h V h sao, em geral, funcoes lineares por partes. Assim, para domnios
em geral, a fronteira de pode nao coincidir com a fronteira aproximada h .
Restringindo a formulacao (4.12) aos subespacos V h e H h , temos
a(v h , uh ) = (v h , f ) + (v h , ph ) ,
v h V h .
Por (4.9),
a(v h , w h ) = (v h , f ) + (v h , ph ) a(v h , q h ),
v h V h .
(4.13)
a(v ,
m
X
j=1
Cj j ) = (v h , f ) + (v h , ph ) a(v h , q h ),
v h V h .
m
X
j=1
Cj j ) = (i , f ) + (i , ph ) a(i , q h ).
Cj a(i , j ) = (i , f ) + (i , ph ) a(i , q h ).
107
(4.15),
Fi = (i , f ) + (i , ph ) a(i , q h )
(4.16),
(4.17)
4.2
Discretizac
ao do Domnio
onde Nel e o n
umero total de elementos. Na particao do domnio definimos os nos
globais A, A = 1, 2, ...Nno, onde Nno e o n
umero total de nos da malha.
As subregioes, no caso bidimensional, geralmente sao triangulos ou retangulos, consistindo de 3 ou 4 nos locais para cada elemento finito e .
Constru
c
ao da Malha
Para a geracao da malha, consideremos no domnio um retangulo da forma
(a, b) (c, d). Os elementos finitos e que serao representados por e, tambem serao
retangulos. O procedimento para a obtencao de elementos triangulares e feito de forma
semelhante. Para obter os elementos retangulares basta subdividir os intervalos [a, b]
e [c, d] e fazer o produto cartesiano. Ha diversos tipos de malhas possveis, tais como a
malha geometrica, malha radical e em particular a malha uniforme. Por simplicidade,
para gerar a malha uniforme considere o seguinte procedimento:
108
i = 1, 2, , Nelx, com xo = a,
j = 1, 2, , Nely, com yo = c.
Assim,
[a, b] [c, d] =
Nelx
[
i=0
Nely
[xi , xi+1 ]
[yj , yj+1]
j=0
A subrotina DataInput faz a geracao da malha uniforme, onde em particular, tomamos a = c = 0 e b = d = 1. Dessa forma, h = 1/Nelx e k = 1/Nely.
Para gerar malha nao uniforme dentro da subrotina DataInput, basta entrar com
as coordenadas x e y manualmente. A subrotina DataInput gera as posicoes (i, j) das
coordenadas (x[i], y[j]), onde i = 0, 1, , Nelx e j = 0, 1, , Nely.
N
o Global 7 Posic
ao: Subrotina NoPos
O proximo passo e identificar o no global A com a sua posicao (i, j), obedecendo a
enumeracao sucessiva horizontal. A posicao i do no e o resto da divisao de (A 1) por
(Nelx + 1) e a posicao j e o quociente da divisao de (A 1) por (Nelx + 1), que serao
representados na linguagem C por
(i, j) = NoPos(A),
onde
i = (A 1)%(Nelx + 1),
j = (A 1)/(Nelx + 1).
Por exemplo, considere a malha dada na Fig 4.1: Temos portanto 25 nos globais, 16
elementos (representados por um crculo) e Nelx = Nely = 4. Por exemplo, o no global
A = 18 e representado pelo par ordenado (i, j) = (2, 3).
Posic
ao 7 N
o Global: Subrotina PosNo
Esta subrotina faz o processo inverso da subrotina NoPos, isto e, dada a posicao
identifica-se o no global A,
A = PosNo(i, j),
atraves da relacao:
A = j(Nelx + 1) + i + 1.
Assim, na posicao (1,4) temos o no A = 22, considerando a malha anterior.
109
22
13
16
14
17
9
11
18
12
20
12
14
7
8
2
19
13
25
16
11
24
15
10
23
15
8
9
3
10
4
Elemento 7 Posic
ao: Subrotina ElmPos
Para cada elemento e, temos 4 nos globais. Para identifica-lo e suficiente conhecer
a posicao de apenas um desses nos, que adotaremos neste caso, como sendo o menor no
global (veremos adiante que este no global corresponde ao no local a = 1) do elemento
e, dado pela relacao:
Dado um elemento e, a sua posicao (i, j) e dada pelo resto e o quociente da divisao.
Temos
(i, j) = ElmPos(e),
onde
i = (e 1)%Nelx,
j = (e 1)/Nelx.
Por exemplo, considere o elemento e = 8 da malha anterior. Entao, (i, j) = (3, 1).
Observando a tabela, verifica-se que na posicao (3, 1) temos o no global A = 9 que e
o representante do elemento e = 8. De forma analoga temos e = 11 (i, j) = (2, 2),
que e a posicao do no A = 13.
110
N
o Local 7 N
o Global: Subrotina NoLG
A subrotina NoLG identifica os nos locais a = 1, 2, 3, 4 de cada elemento (retangulo)
com os nos globais A da malha,
A = NoLG(a, e)
da seguinte forma:
Dado um elemento e, o primeiro passo e identificar sua posicao atraves da subrotina
anterior, (i, j) = ElmPos(e).
Sabemos entao, que na posicao (i, j) existe um no global A que representa o elemento e. O no global A sera entao o primeiro no local a = 1 do elemento e. Assim,
a = 1 (i, j). Para a = 2, temos o no global (A + 1) que e identificado pela posicao
(i + 1, j). Para a = 3, temos a posicao (i + 1, j + 1). Para a = 4, temos a posicao
(i, j + 1). Geometricamente, temos
4
3
e
111
Por exemplo, suponhamos que a solucao uA = u(A) seja conhecida nos nos globais
A = {2, 3, 8, 12, 22, 24} da Fig. 4.1. Entao, tem-se que
A
eqn[A]
A
eqn[A]
1 2
1 0
14 15
10 11
3 4 5 6 7 8
0 2 3 4 5 0
16 17 18 19 20 21
12 13 14 15 16 17
9 10 11 12 13
6 7 8 0 9
22 23 24 25
0 18 0 19
=
=
=
=
{(x, c) ;
{(b, y) ;
{(x, d) ;
{(a, y) ;
a x b}
c y d}
a x b}
c y d}
entao precisamos identificar os nos pertencentes a cada uma das fronteiras i , independentes se sao do tipo Neumann ou Dirichlet. A subrotina (Fronteira) tem essa
funcao, alem de quantificar os nos de cada fronteira pela expressao (Nbn[i]) N
umero
112
de nos da fronteira [i]. Assim por exemplo, para a malha Fig. 4.1, temos os seguintes
nos globais em cada fronteira:
1
2
3
4
=
=
=
=
{1, 2, 3, 4, 5}
Nbn[1] = 5
{5, 10, 15, 20, 25}
Nbn[2] = 5
{21, 22, 23, 24, 25}
Nbn[3] = 5
{1, 6, 11, 16, 21}
Nbn[4] = 5
Construc
ao do sistema linear
Seja N o conjunto de nos da malha e Nq o conjunto dos nos do tipo 1, isto e, os
nos para os quais a solucao e conhecida. Entao o conjunto N Nq representa os nos
para os quais a solucao devera ser determinada.
Seja A N um no global. Definimos em A uma funcao interpolante linear A
satisfazendo a condicao:
1, se A = B,
A (B) =
B N.
0, se A 6= B,
Para A N Nq o conjunto das funcoes lineares A geram um espaco vetorial
linear por partes V h que e um subespaco do espaco V . Assim, toda funcao w h V h
pode ser escrita por
X
w h (x) =
CB B (x).
(4.18)
BN N q
(4.19)
113
KIJ CJ = FI ,
J=1
onde
KIJ = a(A , B ),
(4.20)
FI = (A , f ) + (A , ph ) a(A , q h ).
(4.21)
4.3
Interpolac
ao dos Dados Iniciais
A (x)fA ,
(4.22)
A (x)qA ,
(4.23)
A (x)pA ,
(4.24)
AN
q h (x) =
AN q
ph (x) =
AN p
q h (xA ) = qA
e ph (xA ) = pA .
BN p
BN q
114
(4.25)
BN q
BN p
p
BN
4.4
(4.26)
C KC =
Neq
X
CI KIJ CJ =
I,J=1
= a(w h , w h) =
A,BN N q
Qij
bA A , C
bB B )
a(C
w h w h
d 0,
xi xj
Por outro lado, se C T KC = 0, segue que Qij (w h /xi )(w h /xj ) = 0. Entao a
igualdade e verdadeira se w h e uma constante. Mas se q 6= entao w h V h e
portanto w h = 0 em q . Assim w h = 0, x e C = 0. Portanto, a matriz K e
definida positiva. Note que para problema de Neumann, temos q = e neste caso
w h e uma constante arbitraria e consequentemente a matriz K e somente semi-definida
positiva.
115
FIe
X Z
BN
e
eA eB fB
d +
X Z
BN p e
p
eA eB pB d
e
KAB
qB ,
(4.28)
BN q
e=1
e
A matriz KIJ
e o vetor Forca FIe definidos em (4.27) e (4.28) tem ordem Neq Neq
e Neq 1. Mas a funcao de interpolacao eA tem suporte compacto em e e assim a
matriz e o vetor forca sao nulos para todos os nos B
/ e . Considerando em e , quatro
e
nos globais, a matriz KIJ tem somente uma submatriz de ordem 4 4 cujos elementos
sao nao necessariamente nulos e o vetor forca FIe tem somente quatro coordenadas nao
necessariamente nulas. Considere, por exemplo um elemento e dado por
61
62
e
8
9
Figura 4.2: Um elemento e
onde A = {8, 9, 61, 62} sao os nos globais. Suponhamos que a estes nos correspondem
as equacoes eqn(A) = {5, 6, 47, 48}, onde esta correspondencia e dada pela subrotina
e
e
e
e
e
EqNo. Entao os elementos da matriz e do vetor forca K5,5
, K5,6
, K5,47
, K5,48
; K6,6
,
e
e
e
e
e
e
e
K6,47
, K6,48
; K47,47
, K47,48
, K48,48
e F5e , F6e , F47
, F48
sao os u
nicos elementos que nao
sao necessariamente nulos. Para todos os nos B
/ e = {8, 9, 61, 62} a funcao de
interpolacao eA 0 e, portanto, os coeficientes da matriz K e e as coordenadas de F e
116
correspondentes sao nulas. Se, por exemplo, a malha tem uma quantidade de nos A
e
que corresponde a 1000 equacoes, entao, cada matriz KIJ
tem ordem 1000 1000, onde
para cada elemento e somente 4 4 = 16 coeficientes da matriz e 4 coordenadas do
vetor forca nao sao necessariamente nulos.
A desvantagem deste procedimento esta no armazenamento das matrizes K e e do
vetor forca F e e tambem do n
umero desnecessario de operacoes entre zeros. Para o
exemplo acima, cada matriz K e tem (1000 1000) (4 4) = 999984 coeficientes
nulos. Esta e uma das razoes para se introduzir os nos locais.
N
os Locais
Considere e um retangulo como dado abaixo:
4
3
e
Fae
4 Z
X
b=1
ea eb
fbe
d +
4 Z
X
b=1 e
ea eb
peb
4
X
e e
Kab
qb .
(4.30)
b=1
Seja B = NoLG(b,e). Entao a primeira, segunda e terceira integrais sao validas para
B N Nq, B Np e B Nq, respectivamente. Efetivamente a introducao do
e
no local permite obter uma matriz local Kab
de ordem (4 4) que e uma submatriz
e
e
da matriz KIJ
formada pelos elementos nao necessariamente nulos de KIJ
. De forma
e
analoga, o vetor Fa e formado pelas quatro coordenadas nao necessariamente nulas de
FIe . Estabelecendo uma relacao entre os nos locais a e os nos globais A, determina-se
117
I = eqn[A],
9 (2)
e
Atraves de (4.29) e (4.30) calcula-se a matriz local Kab
e Fae dadas genericamente
por
e
Kab
e
e
e
e
K11
K12
K13
K14
e
e
e
K22
K23
K24
=
e
e
K33
K34
e
K44
F1e
F2e
e Fae =
F3e
F4e
eqn[NoLG(1,e)] = eqn[8] = 5
eqn[NoLG(2,e)] = eqn[9] = 6
eqn[NoLG(3,e)] = eqn[62] = 48
eqn[NoLG(4,e)] = eqn[61] = 47
Portanto, a contribuicao do elemento e, na montagem da matriz global K e do vetor
forca sao dados por
118
K55
K56
K5 48
K5 47
K66
K6 48
K6 47
K48 48
K48 47
K47 47
+
+
+
+
+
+
+
+
+
+
e
K11
e
K12
e
K13
e
K14
e
K22
e
K23
e
K24
e
K33
e
K34
e
K44
F5
F6
F48
F47
F5
F6
F48
F47
+
+
+
+
F1e
F2e
F3e
F4e
Variando e = 1, 2, ..., Nel, a matriz global K e o vetor forca F do sistema linear sao
obtidos por
Nel
Nel
X
X
e
K=
K ,
F =
F e,
e=1
e=1
4.5
Func
ao de Interpolac
ao
PP
PP
PP
xe1
e
xe3
x2
Para cada e definiremos as funcoes teste ou funcao de interpolacao, de tal forma que:
i) ea e de classe C 1 no interior de cada e ,
ii) ea e contnua no interior de cada elemento e da fronteira,
119
1 se a = b,
0 se a 6= b,
(4.31)
a = 1, 2, 3, 4,
onde os Ci s deverao ser determinados de tal forma a satisfazer a condicao de interpolacao. Em particular, considere e um retangulo com as seguintes coordenadas
locais:
4
3
e
1
e2 (x, y) =
e3 (x, y) =
e4 (x, y) =
onde xe1 = (xe1 , y1e), xe2 = (xe2 , y1e ), xe3 = (xe2 , y2e ), xe4 = (xe1 , y2e ). A funcao de interpolacao
ea pode ser representada graficamente por
120
xe
Transformac
ao Isoparam
etrica
Em particular, quando o domnio e o quadrado biunitario [1, 1] [1, 1], a funcao
de interpolacao a tem a forma simples, ou seja, denotando
1 = (1, 1),
2 = (1, 1),
3 = (1, 1),
4 = (1, 1).
temos
1
1 (, ) = (1 )(1 ),
(4.32)
4
1
(4.33)
2 (, ) = (1 + )(1 ),
4
1
3 (, ) = (1 + )(1 + ),
(4.34)
4
1
(4.35)
4 (, ) = (1 )(1 + ),
4
para (, ) [1, 1] [1, 1]. Devido a forma simples do polinomio interpolador
a (, ), a = 1, 2, 3, 4; no quadrado biunitario e principalmente por usar elementos
finitos uniformes e conveniente fazer uma parametrizacao entre os elementos e e o
quadrado biunitario, [1, 1] [1, 1], denotado por b .
Considere a aplicacao:
(, ) b 7 (x, y) e
definida por
x(, ) =
4
X
a (, )xea ,
(4.36)
a (, )yae .
(4.37)
a=1
y(, ) =
4
X
a=1
121
(2 , 2 ) = (1, 1)
(4 , 4 ) = (1, 1)
entao,
4
X
x(b , b ) =
a (b , b )xea
a=1
y(b, b ) =
4
X
a (b, b )yae
a=1
(-1,1)
(1,1)
xea , se a = b,
0, se a 6= b.
yae , se a = b,
0, se a 6= b.
(xe4 , y4e ) PP
PP
PP
PP
PP e e
(x , y )
3 3
e
e e
(xe , y e )
(-1,-1)
(1,-1)
(4.38)
x1 =
(x2 , y2 )
4
X
a ()xea .
(4.39)
a=1
x x
J = det y
(4.40)
y > 0
122
x x
,
y y
,
4
X
xea
a=1
4
X
a=1
yae
a
a
(, ),
(, )
a
a
(, ),
(, )
4
X
xea a (, ),
(4.43)
4
X
yae a (, ),
(4.44)
a=1
a=1
(4.45)
Gradiente da Fun
c
ao de Interpolac
ao
Para o calculo da matriz local K e e da forca local F e , precisamos calcular a (x, y)
no quadrado biunitario b , usando a transformacao isoparametrica. Temos que
a
a
a
=
+
,
x
x
x
123
a a
a
=
+
.
y
y
y
Na forma matricial temos
a
a
x x x
(4.46)
a = .
a
y
y y
x x
x = y
(4.47)
y .
Da definicao de x(, ) dada por (4.36) e (4.37), calcula-se a matriz x . Entao, a
inversa de x e dada por
y
x
y = 1
= 1 x
(4.48)
(x )1 = x = x
x J ,
J y
x y
e a matriz adjunta de x .
onde J = J(, ) = det(x ) e x
Substituindo em (4.46) temos
y
y
a
a
x 1
a = x
.
x
a
J
y
(4.49)
2
0
y = dxe
(x )1 = x
2
0
dye
x y
124
Portanto,
4.6
a a 2 a 2
=
.
,
y
dxe dye
(4.52)
Quadratura Gaussiana
(4.53)
Para o n
umero de pontos interiores igual a dois nas direcoes e , os pontos sao
3 3
3 3
,
), (2 , 2 ) = (
,
),
(1 , 1 ) = (
3
3
3 3
3 3
3 3
(3 , 3 ) = (
,
),
(4 , 4 ) = (
,
),
3 3
3
3
com pesos
w1 = w2 = w3 = w4 = 1.
Logo, temos
g(, ) d =
4
X
g(k , k ).
(4.54)
k=1
C
alculo da Matriz Local
Para o calculo da matriz local K e precisamos tambem introduzir a matriz condutividade Q, que por hipotese e simetrica e definida positiva. Temos que Q = Q(x, y),
(x, y) IR2 e os coeficientes da matriz podem ser dados por
Q11 Q12
f1 (x, y) f2 (x, y)
=
Q=
Q12 Q22
f2 (x, y) f3 (x, y)
onde as funcoes fi sao definidas de forma a satisfazer as hipoteses sobre Q. Quando
o material e homogeneo as funcoes fi sao constantes. Se o material e isotropico entao
f2 (x, y) = 0 e f1 (x, y) = f3 (x, y).
125
(4.55)
22
a
.
24
e
Para o calculo da matriz local Kab
dada por (4.56) e suficiente definir
e
Kab
(a ) Q(b )d =
2 Z
X
k,l=1
Como
Qkl
a b
d.
xk xl
(4.57)
a i
a
=
,
xk
i xk
tem-se
e
Kab
Z
2
X
i,j,k,l=1
Qkl
a i b j
|J| db.
i xk j xl
(4.58)
126
Z
2
X
4|J|
a b
=
db .
Qij
e
e
dx
dx
i
j
i
j
b
i,j=1
(4.59)
x, y e ,
e
Kab
Definindo a matriz
Qabij =
a b
db =
i j
a b
dd.
i j
(4.60)
= 4|J|
2
X
dxei dxej
i,j=1
Qeij (A)Qabij ,
(4.61)
onde 1 a, b 4.
Desde que 1 i, j 2 tem-se entao as matrizes Qab11 , Qab12 , Qab21 e Qab22 de ordem
4 definidas por (4.60) que podem ser calculadas diretamente ou usando a quadratura
Gaussiana.
Usando a quadratura Gaussiana, definimos
gabij =
a b
,
i j
4
X
l=1
gabij (l , l ).
(4.62)
127
2 2 1
1
1 2
2
1 1
,
Qab11 =
1
2 2
6 1
1 1 2
2
1
1 1 1
1 1 1
1
1
,
Qab12 =
1
1
4 1 1
1
1 1 1
1 1 1
1
1 1 1 1
1
,
Qab21 =
1
1 1
4 1
1
1
1 1
2
1 1 2
1 1
2 2 1
.
Qab22 =
2
1
6 1 2
2 1
1
2
O calculo de Qabij esta contido na subrotina PhiMatriz e da matriz local esta contido
na subrotina LocalSystem.
e
Para o calculo da matriz local Kab
quando e e um retangulo temos as formulas
(4.56) e (4.61).
C
alculo da For
ca Local
A forca local definida por (4.30) pode ser escrita por
Fae = fae + pea qae ,
onde
fae
4 Z
X
b=1
a = 1, 2, 3, 4,
ea eb fbe de ,
(4.63)
(4.64)
128
pea
4 Z
X
b=1
qae
ea eb peb de ,
4
X
(4.65)
e e
Kab
qb .
(4.66)
b=1
As igualdades (4.64), (4.65) e (4.66) sao validas para todo no local b e tal que o
correspondente no global B, dado por B = NoLG(b, e) satisfaca as respectivas condicoes:
B N, B Np e B Nq .
C
alculo de fae
Consideremos e um retangulo. De (4.50) e (4.51) as funcoes (x, y) e (x, y) sao
aplicacoes isoparametricas entre e e o quadrado biunitario b .
Dessa forma tem-se
fae
4
X
fbe
b=1
ea eb
de =
b=1
Definindo
Qab =
entao,
fae
=J
4
X
4
X
fbe
ea eb J db .
ea eb db ,
fbe Qab ,
a = 1, 2, 3, 4.
(4.67)
(4.68)
b=1
Usando as definicoes de a (, ) dada por (4.41), a matriz Qab pode ser calculada
diretamente ou usando-se quadratura Gaussiana.
A matriz e dada por
Qab
1 2
=
9 1
2
2
4
2
1
1
2
4
2
2
1
.
2
4
(4.69)
129
C
alculo dos Valores de Fronteira
Os vetores pea e qae definidos anteriormente sao as condicoes de fronteira do tipo
Neumann e Dirichlet, respectivamente, os quais influenciam na forca local Fae para os
nos globais A que pertencem `a fronteira p ou q , onde p q = .
Para ilustrar a contribuicao da fronteira no calculo da forca local, considere a malha
dada anteriormente na Fig. 4.1.
onde A p ou A q .
=
=
=
=
NoLG(2, 4) q
NoLG(3, 4) p
NoLG(1, 4)
/ q p
NoLG(4, 4)
/ q p
130
f1e
f2e q2e
f3e + pe3
f4e
=
=
=
=
C
alculo de qae
Por definicao
qae
4
X
e e
Kab
qb ,
a = 1, 2, 3, 4.
b=1
Como vimos, somente sao calculados as coordenadas (q1e , q2e , q3e , q4e ) que satisfazem a
condicao de no global A q onde A = NoLG(a, e).
Por definicao de interpolacao qbe = q(xeb ) = q(B), onde B e o no global correspondente a (b, e). Assim se B q , a solucao do problema u(x) e conhecida neste no e
portanto,
u(B) = q(B) = qbe
Se B
/ q qbe = 0. Assim o calculo de qae e feito atraves do seguinte procedimento:
4
X
e e
Kab
qb
b=1
4 Z
X
b=1
ea eb peb d,
131
4
nx
nx
ny
ea eb d,
(4.70)
entao,
pea
4
X
Mab peb .
(4.71)
b=1
Para determinar o vetor pea e suficiente determinar a matriz Mab em cada uma das
fronteiras pi .
Para calcular a matriz Mab em p1 e p3 , observe que a funcao de interpolacao linear
so depende de x. Assim:
Em p1 as funcoes a (x, y) = a (x, y1e ) sao dadas por
1 (x, y1e ) =
x xe2
,
xe1 xe2
2 (x, y1e ) =
x xe1
, 3 = (x, y1e ) = 4 (x, y1e ) = 0.
e
e
x2 x1
x xe1
,
xe2 xe1
4 (x, y2e ) =
x xe2
.
xe1 xe2
132
As funcoes de interpolacao dadas acima sao obtidas das funcoes de interpolacao (4.32)
a (4.35), definidas sobre retangulos.
Usando a definicao de Mab , conclui-se em p1 , que os coeficientes nao necessariamente nulos sao M11 , M12 , M21 , M22 e em p3 sao M33 , M34 , M43 , M44 .
Os coeficientes sao calculados por
Z xe2
dxe
M11 =
1 (x)1 (x) dx =
= M22 ,
3
xe1
Z xe2
dxe
= M21 .
M12 =
1 (x)2 (x) dx =
6
xe1
Entao a matriz Mab para a fronteira p1 e dada por
2 1 0
dxe
1 2 0
Mab =
6 0 0 0
0 0 0
Analogamente, para a fronteira p3 tem-se
M33 = M44 =
Assim, em p3 a matriz
Mab
dxe
,
3
0
0
0
0
M34 = M43 =
0
e
dx 0
=
6 0
0
0
0
0
0
0
0
2
1
dxe
.
6
0
0
1
2
0 0 0 0
dy e
0 2 1 0
Mab =
6 0 1 2 0
0 0 0 0
133
2
e
dy 0
=
6 0
1
0
0
0
0
0
0
0
0
1
0
0
2
2 1 0 0
dxe
1 2 0 0
(4.72)
Mab =
6 0 0 2 1
0 0 1 2
2 0 0 1
dy e
0 2 1 0
(4.73)
Mab =
0 1 2 0
6
1 0 0 2
Considere o no global A associado ao no local a do elemento e pela relacao,
A = NoLG(a, e).
Se o fluxo normal esta definido na direcao x entao o no A p2 p4 e a matriz
Mab e definida por (4.73).
Se o fluxo normal esta definido na direcao y entao o no A p1 p3 e a matriz
Mab esta definida por (4.72).
Consideremos um elemento e da malha para o qual os nos locais a = 2, 3 estao
associados a nos globais A2 , A3 , onde A2 , A3 p2 .
Por definicao
pea
4
X
Mab peb .
b=1
dy e e
(2p2 + pe3 )
6
dy e e
(p + 2pe3 )
=
6 2
pe4 0
134
Desde que p q = , entao, neste caso a forca local Fae recebe a contribuicao de
p nas seguintes coordenadas:
F2e f2e + pe2
F3e f3e + pe3
pe2 0
pe3 0
dy e e
(2p1 + pe4 )
6
dy e e
(p1 + 2pe4 )
6
e a contribuicao do elemento e para a forca local e dado por
pe4 pe1 M41 + pe4 M44 =
dxe
(2pe3 + pe4 )
6
e
dx
(pe + 2pe4 )
pe4 pe3 M43 + pe4 M44 =
6 3
Assim para os dois nos globais prescritos A3 e A4 temos as seguintes contribuicoes para
a forca local
pe3 pe3 M33 + pe4 M34 =
pe3 0
pe4 0
135
Os valores pea = p(xea , yae ) = p(A) onde a funcao p = p(x, y) sao prescritos no problema.
Quando calculamos o valor de pea , no exemplo anterior, consideramos dois nos globais
para o qual o fluxo e prescrito. Mas e claro que, a quantidade de nos prescritos em
cada elemento pode ser diferente de 2 (dois) e portanto teramos contribuicao em mais
ou menos coordenadas na forca local Fae .
Contribui
c
ao da Fronteira de Neumann: TractionBoundary
Vimos que a contribuicao dos valores de fronteira de Neumann, sao definidos pelas
matrizes (4.72) e (4.73), quando o fluxo esta definido na direcao x e y. A partir da
identificacao de todos os nos de fronteira feita pela subroutina CondFront, e necessario
entao identificar a direcao do fluxo para inserir os valores referentes as matrizes correspondentes, ou seja para calcular o valor de pea , em 1 , 2 , 3 , 4 . Esse procedimento e
feito pela subroutina TractionBoundary, que obviamente somente se aplica aos valores
de fronteira do tipo Neumann.
C
alculo da Matriz Mab com parametriza
c
ao
Para o calculo da matriz Mab definida em (4.70), usamos o fato de que os elementos
sao retangulos. De um modo mais geral, se os elementos da malha sao quadrilateros,
entao um dos procedimentos para o calcular os elementos da matriz e atraves da parametrizacao. Para isso considere o segmento de reta (txb + (1 t)xa ) e a seguinte funcao
de interpolacao:
a txb + (1 t)xa = 1 t.
a (x) =
1
0
se
se
x = xa
x = xb
Logo
Mab =
ea eb
1
d =
(1 t)t |ab | dt =
|ab |
6
136
Maa = Mbb =
=
eb eb
Z1
0
d =
t2 |ab | dt =
4.7
Constru
c
ao da Matriz Global e For
ca Global
e
A matriz local K e = [Kab
] e o vetor forca local F e = [Fae ] para e = 1, 2, ..., Nel
e 1 a, b 4, serao utilizados na obtencao da matriz global e do vetor forca global
atraves da relacao:
Nel
Nel
X
X
e
F e.
K , F =
K=
e=1
e=1
A forma de alocacao dos coeficientes da matriz local e forca local para a matriz global K e o vetor forca global F e uma das etapas fundamentais do metodo de elementos
finitos.
Como vimos, a matriz local K e e uma matriz quadrada de ordem 4 (para quadrilateros lineares) e F e e uma matriz de ordem 4 1. A matriz global K e quadrada
com ordem Neq e F uma matriz (vetor) com ordem Neq 1, onde Neq e o n
umero de
equacoes do sistema linear.
A maneira pela qual as matrizes locais e as forcas locais contribuem para a matriz
K e o vetor F , pode ser dado nas seguintes etapas:
I) Identificacao do no local (e, a) com o no global A, usando a subrotina:
A = NoLG(e, a).
II) Identificacao do no global A com o n
umero da equacao correspondente no sistema,
eqn[A], atraves da subrotina EqNo.
Como ja observamos, o n
umero de equacoes Neq do sistema linear e menor ou igual
ao n
umero de nos (Nno) A da malha, como consequencia das condicoes de fronteira.
Consideremos um exemplo para ilustrar a montagem da matriz global K e o vetor
forca global F atraves da matriz local e forca local. Considere o exemplo dado pela
137
16
X
K ,
F =
e=1
16
X
F e.
e=1
1
1
2
7
6
2
2
3
8
7
3 4
3 4
4 5
9 10
8 9
5 6 7 8 9 10
6 7 8 9 11 12
7 8 9 10 12 13
12 13 14 15 17 18
11 12 13 14 16 17
11
13
14
19
18
12
14
15
20
19
13
16
17
22
21
14
17
18
23
22
15
18
19
24
23
16
19
20
25
24
1 2
0 1
14 15
11 12
3 4 5 6 7 8
0 2 0 3 4 5
16 17 18 19 20 21
13 14 15 16 17 18
9 10 11 12 13
6 7 8 9 10
22 23 24 25
0 19 0 20
Assim o n
umero de equacoes do sistema linear Neq = 20, com o n
umero total de nos
Nno = 25, e o n
umero de nos prescritos e igual a 5. Neste caso a matriz global K
tem ordem 20 20 e os coeficientes sao calculados atraves do seguinte procedimento,
onde somente serao listados os coeficientes da banda superior da matriz simetrica que
recebem contribuicao do no.
1) Para o no A = 1 o valor ja esta prescrito e assim este no nao gera a equacao.
2) Para o no A = 2, temos a 1a equacao do sistema e portanto precisamos calcular
a 1a linha do sistema: K11 , K12 , ..., K1,20 . Mas o no A = 2 pertence aos elementos
e = 1 e e = 2, mais precisamente 2 = NoLG(1, 2) = NoLG(2, 1). Assim:
K11
K13
K14
K15
1
2
K22
+ K11
1
K24
1
2
K23
+ K14
2
K13
138
3
4
K22
+ K11
3
K24
3
4
K23
+ K14
4
K13
5) O no A = 5 e semelhante ao no A = 3.
6) Para o no A = 6 temos a 3a linha do sistema dado por
K33
K34
K38
K39
1
5
K44
+ K11
5
1
+ K12
K34
5
K14
5
K13
139
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
F21 + F12
F23 + F14
F41 + F15
F31 + F42 + F25 + F16
F32 + F43 + F26 + F17
F33 + F44 + F27 + F18
F34 + F28
e
Desde que Kab
e Fae sao conhecidos entao obtemos o sistema linear. O procedimento
descrito na subrotina GlobalSystem faz a montagem do sistema global em ordem
de elementos pelas contribuicoes de cada no local ao seu correspondente n
umero da
equacao do sistema, eqn[NoLG(a, e)].
140
4.8
Resoluc
ao do Sistema Linear
Assim, a matriz K do sistema linear e uma matriz banda e simetrica. Dessa forma,
nao podemos usar o metodo de Cholesky. Usaremos um metodo variante da decomposicao LU, denominado U TDU que utiliza o algoritmo de Crout, e que e uma consequencia do teorema:
141
Teorema. Seja A uma matriz simetrica, entao existe uma matriz triangular superior
U com diagonal principal unitaria e uma matriz diagonal D tal que
A = U TDU
Observa
c
ao:
(1) Se A e positiva definida, os elementos da diagonal Dii sao positivos. Alem disso:
det(A) = det(U T ) det(D) det(U) = det(D)
o qual possibilita a verificacao da singularidade da matriz A.
(2) Se A e positiva definida, a decomposicao de Cholesky coincide com a decomposicao de Crout, bastando tomar L = D 1/2 U. De fato,
A = U TDU = U TD 1/2 D 1/2 U = (D 1/2 U)T (D 1/2 U) = LT L.
(3) Uma matriz A nao singular, pode ser decomposta na forma:
U
A=L
e uma matriz triangular inferior com diagonal unitaria e U
uma matriz
onde L
triangular superior. Alem disso, se A e simetrica,
U )T = U T L
T = U TDU
LU = A = AT = (L
U
no
isto e, a decomposicao de Crout e um caso particular da decomposicao L
caso simetrico, onde
= U,
T = DU.
U
L
(4) Usando a decomposicao de Crout, somente e necessario o armazenamento da
matriz triangular superior U que pode ser compactada em consequencia da caracterstica da matriz A. Como a matriz D e uma matriz diagonal e as diagonais
da matriz U sao unitarias, entao sao armazenados na diagonal de U os elementos
da matriz D.
(5) Apos a decomposicao de Crout, o sistema linear Ax = b pode ser resolvido por
Ax = (U TDU)(x) = (U T D)y = U T z = b,
onde
Ux = y,
Dy = z,
U T z = b.
142
Algoritmo de Crout
A matriz simetrica A pode ser fatorada por
Aij =
j
X
k=1
onde
Uii = 1 e Uij = 0 se i > j.
Queremos determinar a matriz D U. Como a matriz U e triangular superior e
Uii = 1, entao e suficiente calcular os elementos Uij , para os quais i < j. Sem perda de
generalidade, consideremos a matriz A com ordem 4.
A obtencao do algoritmo diferente do Metodo de Eliminacao de Gauss, consiste em
fixar as colunas js e variar as linhas is ate a diagonal. Com efeito:
Para j = 1 e i = 1, temos
A11 = U11 D11 U11 = D11
Para j = 2 e i = 1, 2, temos
A12 = U11 D11 U12 + U21 D22 U22 = D11 U12
A22 = U12 D11 U12 + U22 D22 U22 = U12 D11 U12 + D22
Para j = 3 e i = 1, 2, 3, temos
A13 = D11 U13
A23 = U12 D11 U13 + D22 U23
A33 = U13 D11 U13 + U23 D22 U23 + D33
Para j = 4 e i = 1, 2, 3, 4, temos
A14 = D11 U14
A24 = U12 D11 U14 + D22 U24
A34 = U13 D11 U14 + U23 D22 U24 + D33 U34
A44 = U14 D11 U14 + U24 D22 U24 + U34 D33 U34 + D44
Logo, as matrizes D e U podem ser obtidas pelas relacoes acima, onde
D11 = A11
=
=
=
=
=
=
=
=
=
143
A12 /D11
2
A22 D11 U12
A13 /D11
(A23 U12 D11 U13 )/D22
2
2
A33 D11 U13
D22 U23
A14 /D11
(A24 U12 D11 U14 )/D22
(A34 U13 D11 U14 U23 D22 U24 )/D33
2
2
2
(A44 D11 U14
D22 U24
D33 U34
)/D44
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
A11
A12
L21 /D11
A22 L21 U12
A13
A23 U12 L31
L31 /D11
L32 /D22
A33 L31 U13 L32 U23
A14
A24 U12 L41
A34 U13 L41 U23 L42
L41 /D11
L42 /D22
L43 /D33
A44 L41 U14 L42 U24 L43 U34 .
144
1 1
0
0
1
2 1
0
A=
0 1
2 1
0
0 1
2
1 1
0
0
1
1
0
U =
1 1
1
eD=
1
1
1
1
A = U TDU
Desde que os elementos da diagonal de U sao unitarios, podemos acoplar a matriz
diagonal D na matriz U, isto e
Uii Dii , i = 1, 2, ...
Dessa forma, nao e necessario o armazenamento da matriz D. Alem disso, para evitar
a proliferacao de armazenamento de matrizes, a matriz U sera substituda pela matriz
A e a matriz auxiliar L nao precisa ser armazenada. Assim, o algoritmo de Crout pode
ser reescrito por
Para j = 2, 3, ..., n
para i = 2, 3, ..., j 1
i1
X
Aki Akj
Aij Aij
k=1
Para i = 1, 2, ..., j 1
T Aij
Aij T /Aii
Ajj Ajj T Aij
145
Uij zi = bj .
i=1
2. Sistema Diagonal Dy = z.
Como D e uma matriz diagonal, temos
Djj yj = zj .
Portanto, fazemos
para j = 1, 2, ..., n
bj
.
bj
Ajj
Se Ajj = 0, a matriz original A e singular e, portanto, o sistema linear nao tem solucao
u
nica.
146
3. Sistema Ux = y.
O sistema pode ser escrito por
n
X
Uij xj = yi
j=1
Como a matriz U e triangular superior, o sistema pode ser resolvido por retrosubstituicao dado por
xn = yn
para i = n 1, n 2, ..., 1
n
X
xi = yi
Uij xj
j=i+1
4.9
147
KC = F ,
obtem-se o vetor solucao C = (C1 , , CNeq ). Como a solucao aproximada e dada por
h
w (x) se x /q ,
h
h
h
u (x) = w (x) + q (x) =
,
q h (x) se x q
e a associacao entre o no global A e a sua correspondente equacao I no sistema e dada
por
I = eqn(A), 1 I Neq,
tem-se
u (A) =
se A N/Nq ,
se A Nq ,
CI
qA
Nno
X
uh (A)A (x).
A=1
4.10
Erro da Solu
c
ao Num
erica
148
Nno
X
A=1
dA A (x).
kEk1 =
Z
1/2
|u
u|2 d
O calculo das normas podem entao ser efetuados por um metodo de integracao numerica, como por exemplo, a quadratura Gaussiana.
v(x) dx =
Nel
X
4
X
e=1 a,b=1
Mas
dea deb
Z X
Nel X
4
e=1 a,b=1
ea (x)eb (x) dx
.
ea (x)eb (x) dx
ea ()eb ()J db ,
e=1
149
onde os coeficientes Qab da matriz local foram anteriormente calculados usando quadratura Gaussiana para obtencao em (4.67) da forca local fae .
Por outro lado, a seminorma e dada por
kvk21
|v(x)| dx =
Nel X
4
X
dea deb
e=1 a,b=1
2 Z
X
i=1
i ea (x)i eb (x) d .
i ea i eb
2
X
dx =
i=1
4J
(dxei )2
X 4J
a b
dd =
Qabii ,
i i
(dxei )2
i=1
2 X
4 X
Nel
X
i=1 a,b=1 e=1
dea deb
4J
Qabii .
(dxei )2
(4.75)
4.11
Entrada de Dados
A entrada de dados consiste somente do n
umero de divisao no eixo-x e no eixo-y
para a geracao da malha e das condicoes de fronteira.
O programa admite malhas uniformes e nao uniformes (geometrica, radical). Em
qualquer caso, deve ser dado o n
umero de divisoes do intervalo no eixo-x : (Nelx) e
no eixo-y (Nely). Para a malha uniforme e suficiente entrar com o extremo inferior
do intervalo do eixo-x e do eixo-y que o programa calcula todos as outras coordenadas
uniformemente.
Por exemplo: Seja o intervalo [a, b] do eixo x e [c, d] do eixo y. Definimos:
h=
ba
dc
, k=
, xo = a, yo = c
Nelx
Nely
entao
xi = x0 + ih , i = 1, 2, ..., Nelx
yj = y0 + ik , j = 1, 2, ..., Nely
150
quando a = 0 e b = d = 1 entao:
xi = ih , i = 1, 2, ..., Nelx
yj = ik , j = 1, 2, ..., Nely
Para o caso da malha nao uniforme devemos entrar com todos os dados das coordenadas xi e yj .
Todos os nos A da fronteira da malha, sao typ[A] = 1 (Dirichlet) ou typ[A] 6= 1
(Neumann) e a forma de contribuicao na forca sao bastantes diferentes, dentro da
subroutina CondFront.
Sada de Dados
A criterio do operador, podem ser inseridas algumas sadas de dados para a verificacao da correcao do programa. Este procedimento e aconselhavel em varias etapas
do programa. Neste programa, as sadas de dados sao:
1. Elementos:
Todos os elementos com sua conectividade, ou seja, os elementos e = 1, 2, ..., Nel.
com suas coordenadas locais.
2. Condicao de Contorno:
Todos os nos globais sao classificados como: no, tipo, valor.
3. Matriz Rigidez:
O programa imprime a matriz rigidez K na forma compacta (em colunas) como
descrito previamente.
4. Vetor Forca:
O programa imprime o vetor forca F , com a contribuicao dos valores de fronteira,
se houver.
5. Vetor Solucao:
Apos o vetor forca sao impressas as solucoes aproximadas do problema.
6. Erro da solucao numerica:
Sao calculados os erros nas normas L2 () e H 1 () ou H01 ().
151
4.12
Exemplos Num
ericos
u
Qij
= f,
em ,
xj
xi
u = q,
em q ,
ni = p, em p ,
qi ni = Qij
xj
=
=
=
=
{(x, 0) ;
{(1, y) ;
{(x, 1) ;
{(0, y) ;
0 x 1}
0 y 1}
0 x 1}
0 y 1}
152
4
[
q i ,
q i = i ,
i=1
com
sen x
0
q(x) =
sen x
0
em
em
em
em
q 1 ,
q 2 ,
q 3 ,
q 4 .
p = =
4
[
p i ,
p i = i .
i=1
p = Qij
u
ni .
xj
Basta relembrar que o vetor normal unitario da fronteira e dado por n = (0, 1); (1, 0);
(0, 1); (1, 0) em p1 , p2 , p3 e p4 , respectivamente. Temos as seguintes condicoes de
fronteira:
cos x em = ,
p1
1
2 cos y em p2 = 2 ,
p(x) =
cos x em p3 = 3 ,
2 cos y em p4 = 4 .
Exemplo 3. Fronteira mista
153
4.13
Isto significa que se v(x, y) e uma solucao qualquer, existe uma constante C, tal que,
u(x, y) = v(x, y) + C e uma solucao desejada em V . De fato,
Z
Z
(v(x, y) + C)d =
v(x, y)d + ()C = 0,
que implica
1
C=
()
v(x, y)d.
fixo.
Pode se verificar, para uma malha suficientemente pequena com razoaveis dgitos significativos, que a matriz rigidez K e singular. Sendo assim, o sistema possui infinitas
solucoes. Quando fixamos um ponto em q , a matriz de Rigidez K torna-se nao singular
e o sistema admite uma u
nica solucao.
154
Etapas da Soluc
ao Num
erica.
Para os 3 exemplos dados, construiremos a solucao numerica desenvolvendo todas
as etapas, para melhor compreensao deste texto, na seguinte ordem:
1. Geracao e enumeracao da malha.
2. Condicoes de fronteira.
3. Matriz local e forca local.
4. Matriz global e forca global.
5. Resolucao do sistema linear.
6. Estimativa de erro.
4.14
Exemplos Num
ericos
Exemplo 1
1. Gerac
ao e enumerac
ao da malha
Assumiremos que = [0, 1] [0, 1] e a discretizacao uniforme em ambos os eixos com
passo h = 1/Nelx e k = 1/Nely. Logo, o n
umero de elementos e na direcao-x e
direcao-y e igual a 4, isto e
Nelx = Nely = 4
Consequentemente, a malha tem 5 nos no eixo-x e 5 nos no eixo-y e portanto, o
n
umero total de nos Nno = 25 e o n
umero total de elementos Nel = 16, os quais sao
enumerados em ordem crescente da esquerda para a direita. Geometricamente, temos
a malha mostrada na Fig. 4.1.
2. Condic
ao de fronteira
Analisemos inicialmente a condicao de fronteira de Dirichlet. Os valores de fronteira
sao inseridos pelo operador na subrotina CondFront, da seguinte forma: As fronteiras
155
0,
em q2 = 2 ,
q(x) =
sen x, em q3 = 3 ,
0,
em q4 = 4 .
Como todos os nos da fronteira sao prescritos a solucao u[n] e conhecida nesses nos. O
ndice [i] da funcao bdy percorre todos os nos de cada fronteira, identificando-o com os
nos globais.
Em q1 , temos os seguintes nos globais A = {1, 2, 3, 4, 5}. Logo, os respectivos
valores sao:
Temos, portanto, 16 nos para o qual o valor da solucao e conhecido. Assim, precisamos determinar a solucao numerica em 9 nos a saber:
{7, 8, 9, 12, 13, 14, 17, 18, 19}
Os valores e o tipo de fronteira sao introduzidos como dados na subrotina CondFront,
onde relembramos que os nos A da fronteira do tipo typ[A] = 1 sao os nos cujos valores
sao prescritos e a subrotina NoPos(A) tem a funcao de identificar o no A com a posicao
da malha para que seja possvel o calculo da funcao q(x) = q(x, y) definida na fronteira
q . Em particular, no Exemplo 1, q(x) = senx. A subrotina PosNo tem a funcao
156
Como estamos usando uma malha uniforme, o Jacobiano j e constante e, alem disso,
dxk = dxl = 1/4.
11
1
2
e
=
Kab
6 7
2
2 7 2
5 2 1
2 11 2
1 2
5
0.351010
0.292508
0.320898
0.336815
6
F
=
Fa5 =
a
0.196797 .
0.292508
0.248201
0.285411
157
K=
Nel
X
K ,
F =
e=1
Nel
X
F e.
e=1
32 4
0 4 7
0
0
0
0
32 4 1 4 7
0
0
0
32
0 1 4
0
0
0
32
4
0
4
7
0
1
32 4 1 4 7
K=
,
6
32
0 1 4
32 4
0
32 4
32
e o vetor forca F dada por
F =
5. Resoluc
ao do sistema linear
+2.14492
+3.03014
+2.14035
+0.71033
+0.00000
0.71033
2.14035
3.03014
2.14492
158
+0.48886
+0.68935
+0.48696
+0.00417
+0.00000
d=
0.00417
0.48696
0.68935
0.48886
0x1 e 0y1
Exemplo 2
1. Condic
ao de fronteira
Considere a malha para Nelx = Nely = 4, como anteriormente. Para este exemplo
p = e q = . Mostramos que se q = entao o problema nao tem solucao u
nica.
Assim fixamos um valor para a solucao na fronteira, por exemplo,
u(0, 0) = 0
159
=
=
=
=
{2, 3, 4, 5}
{10, 15, 20}
{21, 22, 23, 24, 25}
{6, 11, 16}
Tem-se que
p = cos x,
p = 2 cos y,
em p1 p3 = 1 3
em p2 p4 = 2 4 .
Na subrotina CondFront basta introduzir as funcoes em 1 , 2 , 3 e 4 , representadas no programa por bdy[1][i], bdy[2][i], bdy[3][i] e bdy[4][i], respectivamente. Para
esse exemplo temos
n = bdy[1][i], p = NoPos(n)
1 =
Bv[1][i] = cos( x[p.v[0]]);
n = bdy[2][i], p = NoPos(n)
2 =
Bv[2][i] = 2 cos( y[p.v[1]]);
n = bdy[3][i], p = NoPos(n)
3 =
Bv[3][i] = cos( x[p.v[0]]);
n = bdy[4][i], p = NoPos(n)
4 =
Bv[4][i] = 2 cos( y[p.v[1]]).
Quando a funcao Bv esta recebendo valores, significa que existe alguma fronteira i do
tipo Neumann.
u[1] = 0
160
4
X
a = 1, 2, 3, 4.
1 1
1 1
Kab
qb = Ka1
q1 = 0,
a = 1, 2, 3, 4,
b=1
q11
pois
= 0, consequencia de u = 0, correspondente ao no A = 1 prescrito. Para os
outros nos A = 2 e 6 em p ,
Fa1 = fa1 + p1a ,
a = 2, 4
0.196797
0.135778
Fa1 =
0.351010
0.122039
0.351010
0.196797
0.248201
16
0.383838
, F 11 =
a
0.351010 , Fa = 0.511922
0.135778
0.320898
3. Estimativa de Erro
A solucao exata do problema e a mesma do Exemplo 1. Os erros, neste caso, sao
dados a seguir:
kEkL2 () = 9.047955 102 ,
kEkH 1 () = 1.797705 101 .
Para esse exemplo temos {Nno = 25, Nel = 16, Neq = 24}.
161
Exemplo 3
1. Gerac
ao e enumerac
ao da malha
Consideremos a mesma malha dos exemplos anteriores, com Nelx = Nely = 4.
2. Condic
ao de fronteira
Neste caso em p (Neumann) a funcao definida na fronteira 1 e 3 e dada por
cos x, em
1
p(x) =
cos x, em
3
e em 2 e 4 (Dirichlet) temos os valores prescritos.
0,
em
2
q(x) =
0,
em
4
Os valores de fronteira sao inseridos pelo operador na subrotina CondFront, da
seguinte forma: As fronteiras 1 , 2 , 3 e 4 sao representados respectivamente dentro
da subrotina por bdy[1], bdy[2], bdy[3] e bdy[4] e dessa forma as fronteiras de Neumann
1 e 3 e as fronteiras do tipo Dirichlet 2 e 4 , sao inseridos no programa por:
n = bdy[1][i], p = NoPos(n)
1 =
Bv[1][i] = cos( x[p.v[0]]);
n = bdy[3][i], p = NoPos(n)
3 =
Bv[3][i] = cos( x[p.v[0]]);
n = bdy[2][i], p = NoPos(n)
2 =
typ[n] = 1; u[n] = 0;
n = bdy[4][i], p = NoPos(n)
4 =
typ[n] = 1; u[n] = 0;
Considerando a malha do exemplo temos os seguintes nos globais em p = 1 3
e q = 2 4 sao dados por
p = {2, 3, 4, 22, 23, 24}
q = {5, 10, 15, 20, 25, 1, 6, 11, 16, 21, }
O procedimento e analogo aos anteriores. O n
umero de incognitas nestas condicoes
e de (25 10) = 15 e portanto a matriz rigidez e de ordem 1515.
162
0.196797
0.157562
0.004878
, Fa11 = 0.248201 ,
Fa1 =
0.351010
0.351010
0.320898
0.248201
Fa16
0.351010
0.248201
=
0.1575627 .
0.004878
4. Estimativa de Erro
A solucao exata do problema e a mesma do Exemplo 1. Os erros, neste caso, sao
kEkL2 () = 2.658667 102 ,
kEkH 1 () = 1.372426 101 .
Para esse exemplo temos {Nno = 25, Nel = 16, Neq = 15}. Note que Neq = Nnoq
4.15
Resultados Num
ericos
Para os tres exemplos, sao mostrados a seguir os graficos das solucoes numericas e
os erros em varias malhas diferentes.
163
1.0
0.5
0
-0.5
-1.0
1.0
0
0.5
0.5
0
Erros Numericos
Malha
k E k0
k E k1
10 10
1.44 103
1.05 102
20 20
3.73 104
2.70 103
20 25
3.08 104
2.22 103
25 20
3.06 104
2.22 103
30 30
1.69 104
1.21 103
40 40
9.59 105
6.92 104
164
0.5
0
-0.5
-1.0
1.0
0
0.5
0.5
0
Erros numericos
Malha
k E k0
k E k1
10 10
1.56 102
3.17 102
20 20
3.92 103
8.04 103
20 25
3.02 103
6.47 103
25 20
3.45 103
6.87 103
30 30
1.72 103
3.59 103
40 40
9.0 104
2.01 103
165
0.5
0
-0.5
1.0
0
0.5
0.5
0
Erros numericos
Malha
k E k0
k E k1
10 10
5.04 103
2.68 102
20 20
1.29 103
6.77 103
20 25
1.04 103
5.26 103
25 20
1.09 103
5.89 103
30 30
5.81 104
3.04 103
40 40
3.31 104
1.73 103
166
4.16
Exerccios
CAPITULO 5
5.1
Formulac
ao do Problema
:
:
:
:
168
(5.3)
2. Para qualquer matriz simetrica Sij , existem constantes positivas C e C, tais que
CSij Sij CijkSij Sk CSij Sij
(5.4)
ij
= fi em
xj
(5.5)
ui = qi
em qi
ij nj = pi
em pi
n
H = u (H 1 ()) ; ui = qi em qi
V = {v (D())n ; vi = 0 em qi } ,
169
Z
2 !1/2
ui
d
|ui |2 +
xj
vi d =
fi (x)vi (x) d,
(5.6)
xj
(ij vi ) d = vi ij nj d
xj
pi
Assim, a formulacao fraca e dada por
(II) Formulac
ao fraca. Dadas as funcoes fi : IR, qi : qi IR e pi : pi IR.
Determinar u H tal que
Z
Z
Z
vi
ij d =
fi vi d +
vi pi d v V
xj
pi
A formulacao fraca tambem e denominada princpio do trabalho virtual e v e o deslocamento virtual.
De (5.1) e (5.2) e da simetria de Cijk, tem-se
1
uk
u
uk
ij = Cijk k = Cijk
= Cijk
+
.
2
x
xk
x
170
pi
Definindo por
a(v, u) =
Cijk
(v, f ) =
(v, p) =
vi uk
d
xj x
vi fi d
(5.7)
(5.8)
vi pi d
(5.9)
pi
(5.10)
Formula
c
ao de Galerkin
Considere o subespaco H h H e V h V de dimensao finita, gerado pelos mprimeiros vetores da base do espaco de Hilbert H e V .
Seja uh H h , tal que, uh = w h + q h , onde w h V h e
qi (x);
x qi
h
qi (x) =
0
x
/ qi
(5.11)
pi (x);
0
x pi
x
/ pi
(5.12)
Temos que
uhi (x) = wih (x) + qih (x) = qi ,
x qi
171
v h V h,
vh V h.
(5.13)
onde w h V h .
De forma analoga ao captulo anterior, considere N o conjunto de nos da malha e
Nq o conjunto de nos prescritos. Para cada no A, considere A a funcao de interpolacao
da base de V h . Assim, como a solucao aproximada w h V h , podemos representa-la
por
Nno
X
h
dA A (x)
(5.14)
w (x) =
A=1
BN Nqj
qjB B (x),
BNqj
1 j n.
(5.16)
q h = qjh ej
onde wjh e qjh sao dados por (5.15) e (5.16). Assim a forma bilinear a(, ) e dada por
a(v h , wjh ej ) = a(v h ,
BN Nqj
djB B ej ),
vh V h
172
Como a igualdade e valida para todo v h = vih ei , entao, em particular, podemos tomar
v h V h na forma v h = A ei . Substituindo tem-se
a(v h , wh ) =
n
X
j=1
BN Nqj
a(A ei , B ej )djB ,
1 i n.
De forma analoga,
(v h , f ) = (A ei , f ),
(v h , ph ) = (A ei , ph ) ,
a(v h , q h ) = a(A ei , q h ).
Como anteriormente podemos interpolar a funcao q h pela funcao base A , ou seja,
X
qjh =
A (x)qjA
ANqj
onde
qjA = qjh (xA ),
Logo
a(v h , q h ) =
n X
X
j=1
BNqj
xA qj .
a(A ei , B ej ) qjB
j=1 BN Nqj
a(A ei , B ej )djB = (A ei , f ) + (A ei , p )
n
X
X
a(A ei , B ej )qjB
j=1 BNqj
onde A N Nqi .
Definindo
KAB = a(A ei , B ej )
FA = (A ei , f ) + (A ei , ph )
Entao,
n
X
(5.17)
a(A ei , B ej )qjB .
(5.18)
j=1 BNqj
KAB djB = FA .
(5.19)
173
2 3
2 4
3 5
4 5
0 0
6 0
Assim para esse exemplo, temos 6 equacoes para se determinar a solucao aproximada.
De um modo geral, definindo
M = eqn[i, A]
N = eqn[j, B]
FM = (A ei , f ) + (A ei , p )
2
X
X
(5.20)
a(A ei , B ej )qjB
(5.21)
j=1 BNqj
174
(A ei )
(B ek )
KM N = a(A ei , B ek ) =
Cijk
d
xj Z
x
Z
B
B
A
A
ei Cijk
ek d =
ek Ckij
ei d = KN M
=
x
xj
x
xj
pois Ckij = Cijk.
2. KM N e definida positiva:
Seja d = (d1 , d2, , dNeq ). Entao,
T
d Kd =
Neq
X
d M KM N d N =
M,N =1
X
= a
ANNqi
Bnnqj
diA A ei ,
AN Nqi
BN Nqj
0 = a(u , u ) =
djB B ej = a(uh , uh ) 0.
uhi
uhk
Cijk
d.
xj
x
De (5.3) e (5.4), Cijk e positivo definido para todas as matrizes simetricas, logo,
uhj
uhi
+
= 0,
xj
xi
Isto implica que uhi e um movimento rgido, que pode ser representado por,
uhi = Wij xj + C,
onde C e uma constante e Wij uma matriz anti-simetrica, cujo valor deveria ser
pequeno, representando uma rotacao infinitesimal para a teoria linear. Se q 6= ,
pois uhi = 0 em q , entao
Wij = 0
C = 0,
isto e, o corpo tem um movimento rgido nulo. Assim uhi = 0 e K e uma matriz
definida positiva. Caso q = , entao K e uma matriz definida positiva se o corpo
satisfaz a condicao adicional de ter movimento rgido nulo.
175
5.2
a(u, v) =
ui
vj
Cikj
d.
xk
x
A B
Cikj ir js d.
xk x
(5.22)
Para o vetor forca definido em (5.18) e substituindo os ndices (i, j) por (r, s) tem-se
que
2
X
X
r
h
a(A er , B es ) qsB .
FA = (A er , f ) + (A er , p )
s=1 BNqs
Agora,
(A er , f ) =
h
(A er , p ) =
2
X
X
A (f , er ) d =
A fr (x) d,
Z
h
A pr d,
A (p , er ) d =
pr
pr
a(A er , B es )qsB =
s=1 BNqs
A fr d +
rs
KAB
qsB .
BNqs
pr
A pr d
2
X
X
s=1 BNqs
rs
KAB
qsB .
(5.23)
176
pr (x) =
A (x)prA
(5.25)
ANps
BNps
(A , B )frB +
BNps
BN Nqs
ps
s=1 BNqs
(A , B ) prB
2
X
rs
KAB
qsB .
s=1 BNqs
(5.26)
(5.27)
Desde que
M = eqn[r, A] e N = eqn[s, B]
o sistema linear pode ser escrito por
Z
Z
A B
A B
KM N = rk s Cikj
d =
Cirjs
d,
xi xj
xi xj
X
X
X
rs
KAB
qsB .
(A , B ) prB
(A , B )frB +
FM =
(5.29)
BNqs
BNps
BN Nqs
(5.28)
Nel
[
e=1
e k = se e 6= k
Para cada elemento finito e temos a funcao base eA com suporte compacto em e .
Dessa forma a matriz global e o vetor forca podem ser obtidos em termos locais atraves
da soma;
Nel
Nel
X
X
e
K=
K
F =
Fe
e=1
e=1
177
BNps
ep
BNqs
e qsB = qs (xB ).
e
e
As matrizes KM
em ordem NeqNeq e Neq1, respectivamente. Do suporte
N e FM t
compacto de A em e , conclui-se que para todo no global B
/ e os elementos da
matriz e do vetor forca sao nulos. Por exemplo, considere um elemento com os seguintes
nos globais:
61
62
e
8
8 9
5 7
6 8
61 62
47 49
48 50
e
A matriz Kmn
e o vetor forca Fme serao chamados de matriz local e forca local para
os quais sao introduzidos os nos locais a associados aos nos globais A. Observe que os
nos locais do elemento e no caso vetorial sao definidos de forma analoga ao caso escalar,
ou seja, se e e um retangulo, os 4 vertices do retangulo sao os nos locais a = 1, 2, 3, 4
para o elemento e, enumerados no sentido anti-horario. A associacao entre o no local
e o no global e dada por
A = NoLG(e, a)
178
4 Z
X
b=1
ea eb frb
de +
4 Z
X
b=1
ep
ea eb prb d
e
4
X
e
Kmn
qsb
(5.31)
b=1
(5.32)
P = eqn[i, A] 1 i 2; A N Nqi ,
onde P e o n
umero da equacao. Temos
P = eqn[i, NoLG(a, e)]
179
e
Como os coeficientes da matriz local Kmn
estao associados aos nos locais pela relacao
(5.32), podemos associar para cada elemento e, os coeficientes da matriz global KM N
e
com os coeficientes Kmn
e analogamente para FM .
Por exemplo, considere o elemento e que tem como nos globais A = {8, 9, 61, 62} e
o n
umero de equacoes e dado pela tabela anterior. Para o elemento e fixo tem-se
NoLG(1, e) = 8
NoLG(2, e) = 9
NoLG(3, e) = 61
NoLG(4, e) = 62
e
Localmente temos a matriz Kmn
de ordem 8 8.
..
.
e
K55 + K11
e
K56 + K12
e
K57 + K13
e
K58 + K14
e
K5,47 + K15
..
.
K5,50
K6,6
K6,7
..
.
..
.
e
K5,50 + K18
e
K6,6 + K22
e
K6,7 + K2,3
..
.
K6,50
..
.
..
.
e
K6,50 + K28
..
.
e
K49,49 K49,49 + K77
e
K49,50 K49,50 + K78
e
K50,50 K50,50 + K88
..
.
F5 + F1e
F6 + F2e
..
.
180
C
alculo de Matriz Local
Para calcular a matriz local utilizaremos o mesmo procedimento do captulo anterior, isto e, faz-se a transformacao isoparametrica entre o elemento finito e para o
quadrado biunitario b e entao utiliza-se as funcoes base ea definida em (4.41) por
1
a (, ) = (1 + a )(1 + a ),
4
a = 1, 2, 3, 4.
(5.33)
1
(a (1 + a ), a (1 + a ))
4
J = det
Definindo a matriz
be
Q
abij
x1
1
x1
2
x2
1
x2
2
ea eb k
db ,
k xi xj
(5.34)
181
2
i
se i = k
=
dx
xk 0 i se i 6= k
be =
Q
abij
onde
Qeabij
4
Qe ,
dxi dxj abij
ea eb
db .
k
(5.36)
Je =
(5.37)
onde dxe = (xe2 xe1 ) e dy e = (y2e y1e ). Assim, a matriz local pode ser calculada por
e
e
Kmn
= |J e | Cirjs
4
Qe
dxi dxj abij
(5.38)
Observe que os u
nicos termos dependentes do elemento e sao o Jacobiano e o coeficiente de elasticidade Cikj . Em (5.38) estamos omitindo o somatorio dos ndices
1 i, j, k, l; r, s 2 e 1 a, b 4.
A matriz local dada acima e similar a matriz local dada em (4.53) e esta definida na
subrotina LocalSystem, onde a integral (5.36) foi calculada pela quadratura Gaussiana.
C
alculo da Forca Local Fme
Por (5.31) a forca local e dada por
e
e
Fme = fm
+ pem qm
,
onde
e
fm
4 Z
X
b=1
pem
4 Z
X
b=1
para m = 2(a 1) + r
(5.39)
e
(ea eb )fbr
de
(5.40)
(ea eb )pebr d
(5.41)
ep
182
e
qm
4
X
e
e
Kmn
qbr
(5.42)
b=1
As igualdades acima sao validas para todo no local b e , tal que, o correspondente
no global B = NoLG(e, b) satisfaca as respectivas condicoes B N Nqi , B Npi e
B Nqi .
e
C
alculo de fm
O calculo e analogo ao caso escalar feito em (4.68). Assim, usando o mesmo procedimento, obtem-se
e
fm
4 Z
X
b=1
e
(ea eb )fbr
de = J
4
X
e
fbr
b=1
onde
Qab =
e
fbr
f (xebr )
fr (xeb )
(ea eb ) db = J e
e
X
e
fbr
Qab
(5.43)
b=1
ea eb db
= fr (B),
B = NoLG(e, b), r = 1, 2
com m = 2(b 1) + r.
14
7
8
10
4
5
11
12
6
7
2
16
9
1
1
15
8
3
183
onde qi e o conjunto dos nos globais nos quais ui esta prescrita e pi e o conjunto
dos nos globais nos quais a derivada normal de ui esta prescrita. Note que deve ser
satisfeita a seguinte relacao: = p1 q1 e = p2 q2 .
N
umero de Equac
oes: eqn[i, A]
i\A
1
2
1
0
1
2 3 4
0 2 3
0 0 0
5 6
0 5
4 6
7 8 9
7 0 9
8 0 10
10 11 12 13 14 15
11 13 15 0 17 19
12 14 16 0 18 20
16
0
0
Por outro lado, para cada no global A, existe um no local a, dado pela relacao:
A = NoLG(e, a) e o n
umero de equacoes locais m e dado pela relacao m = 2(a 1) + r,
r = 1, 2, a = 1, 2, 3, 4.
Definimos em (5.39) que a forca local e calculada por
e
e
Fme = fm
+ pem qm
.
se m = 1, 2, , 8,
5
= 0.
pois p5m = qm
(2) Seja e = 8. Neste caso, temos a associacao {1, 2, 3, 4} com {10, 11, 15, 14}, onde
A = 14, 15 p1 p2 . Entao (r, 4) e (r, 3) p1 p2. Assim, para as equacoes
m = {5, 6, 7, 8}, temos
8
Fm8 = fm
se m = 1, 2, 3, 4
8
8
Fm = fm
+ p8m se m = 5, 6, 7, 8 ,
184
=
=
=
=
=
f12 q12
f22 q22
f32
f42 q42
2
fm
;
se m = 5, 6, 7, 8
= NoLG(6, 2) q1
= NoLG(6, 2) q2
= NoLG(6, 3) p1
= NoLG(6, 3) p2
Se e = 3
Se e = 4
Se e = 7
3
Fm3 = fm
se m = 1, 7, 8
3
3
3
Fm = fm qm se m = 2, 4, 5, 6
3
+ p3m se m = 3.
Fm3 = fm
4
Fm4 = fm
se m = 3, 4, 5, 6
4
4
4
Fm = fm qm se m = 1
4
Fm4 = fm
+ p4m se m = 2, 7, 8.
7
Fm7 = fm
se m = 3, 4
7
7
7
Fm = fm
qm
se m = 7, 8
7
7
7
Fm = fm + pm se m = 1, 2, 5, 6.
185
9
Fm9 = fm
se m = 1, 2
9
9
9
Fm = fm qm se m = 5, 6
9
Fm9 = fm
+ p9m se m = 3, 4, 7, 8.
e
C
alculo de qm
Por definicao,
e
qm
4
X
e
e
Kmn
qbr
b=1
e considere
B = NoLG(e, b).
e
Se B qr entao, ur (B) = qr (B) = qr (xeb ) = qbr
. Se B
/ qr , entao ur (B) nao esta
e
prescrita, ou seja, qbr = 0.
pem
4 Z
X
b=1
onde
pebr
pr (xeb )
per
epr
(ea eb )pebr
d =
4
X
Mab pebr
(5.44)
b=1
Mab =
1
3
dxe
1
6
se a = b
(5.45)
dx
se a 6= b
186
ou
Mab =
1
3
dy e
se a = b
1
6
dy e
se a 6= b
(5.46)
logo,
dy e
dxe
ou M22 =
.
3
3
4
X
b=1
para r = 2 e b = 1
p72 = M11 p2 (x71 ) + M31 p2 (x71 )
para r = 1 e b = 3:
p75 = M13 p1 (x73 ) + M33 p1 (x73 )
187
r = 0, 1
u[A][r] = ur (A)
Quando uma componente tem um valor prescrito e outra tem a outra derivada prescrita, basta concatenar as insercoes acima. Por exemplo, se temos conhecido ux (0, A)
na direcao horizontal e u(1, A) na direcao vertical, o procedimento pode ser feito por:
Bv[j][i][0] = ux (0, A)
typ[A][1] = 1;
u[A][1] = u1 (A)
188
Contribuic
ao da Fronteira de Neumann: TractionBoundary
Como anteriormente, a subroutina TractionBoundary, tem a funcao de inserir
apropriadamente a contribuicao dos valores de fronteira de Neumann na forca, usando
as matrizes definidas em (4.72) e (4.73), ou seja calcular o valor de pea , em 1 , 2 , 3 , 4 ,
quando essas fronteiras sao do tipo de Neumann.
Construc
ao da Matriz Global
Por definicao a matriz global e obtida por
K=
Ne
X
K e.
e=1
1
1
2
6
5
2
2
3
7
6
3
3
4
8
7
4 5 6 7 8 9
5 6 7 9 10 11
6 7 8 10 11 12
10 11 12 14 15 16
9 10 11 13 14 15
189
1
0
1
2 3 4
0 2 3
0 0 0
5 6
0 5
4 6
7 8 9
7 0 9
8 0 10
10 11 12 13 14 15
11 13 15 0 17 19
12 14 16 0 18 20
16
0
0
Assim, para os 15 nos globais temos 20 equacoes e portanto, a matriz global tem
ordem 20 20. Consideremos agora a contribuicao de cada no global A para os coeficientes da matriz global K em ordem crescente. Aplicaremos a seguinte relacao:
j = eqn[i, A] = eqn[i, NoLG(e, a)].
(5.47)
Se j = 0 entao (i, A) nao gera equacao e portanto nao contribui para os coeficientes da
matriz KM N .
Se j 6= 0, (i, A) gera a j-esima equacao e portanto, contribui para j-esima linha
da matriz global KM N , onde j M. Relembramos que os coeficientes da matriz local
e
Kmn
satisfazem a relacao:
m = 2(a 1) + i
n = 2(b 1) + i
a, b = 1, 2, 3, 4
i = 1, 2
(5.48)
190
2. e = 2: Neste caso os nos globais sao: A = {2, 3, 7, 6}. Observando a Tabela 5.2 e
a relacao (5.48) conclumos que os coeficientes da matriz local que irao contribuir
para a matriz global sao
2
2
2
2
2
2
2
2
2
; K36
; K37
; K38
; K55
; K56
; K57
; K58
;
K33 ; K35
2
2
2
2
2
2
K66
; K67
; K68
; K77
; K78
; K88
; + simetricos
Construc
ao da For
ca Global
A forca global e definida por
F =
Ne
X
Fme ,
e=1
m = 2(a 1) + r ,
r = 1, 2
a = 1, 2, 3, 4
F1
F4
F5
F6
+
+
+
+
F21
F81
F51
F61
191
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
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
F2
F5
F6
F7
F8
F2
F5
F6
F7
F8
+
+
+
+
+
F32
F72
F82
F52
F62
F5
F6
F7
F8
F13
F14
F11
F12
+
+
+
+
+
+
+
+
F15
F25
F35
F45
F55
F65
F75
F85
192
De forma analoga pode-se calcular toda a contribuicao para a forca global dos
elementos e da malha.
Os procedimentos da matriz global e a da Forca Global estao na subrotina do
programa GlobalSystem.
5.3
Sistema Linear
uj (xB ) =
BN Nqj
kEk1 = ku uh k0 ,
(5.49)
kEk1
100.
kuk0
(5.50)
e os percentagens de erros:
E0 % =
5.4
kEk0
100,
kuk0
E1 % =
Exemplos Num
ericos
e
A matriz local Kmn
e definida por
e
Kmn
= rk s
onde
Qabij =
4
e
J e Cikj
Qabij
di dj
a b
db
i j
(5.51)
193
Ou
nico termo a ser definido em (5.51) e o coeficiente de elasticidade {Cikj } que depende da posicao. Como 1 i, k, j 2 entao devemos conhecer os 16 coeficientes.
Em particular, no exemplo numerico vamos considerar o corpo isotropico. Neste
caso o coeficiente de elasticidade pode ser escrito por
Cijk(x) = (x)(ik j + i jk ) + (x)ij k
(5.52)
onde e sao conhecidos como parametros de Lame. Os coeficientes nao necessariamente nulos sao
C1111 = C2222 = + 2
C1122 = C2211 =
(5.53)
C1212 = C1221 = C2112 = C2121 =
Supondo que o corpo e homogeneo entao Cijk nao depende de x, assim podemos
definir os coeficientes na forma
C1111 , C1112 , C1121 , C1122 , C1211 , C1212 , C1221 , C1222 ,
+ 2, 0, 0, , 0, , , 0,
=
C2111 , C2112 , C2121 , C2122 , C2211 , C2212 , C2221 , C2222
0, , , 0, , 0, 0, + 2
Nestas condicoes o problema de elasticidade linear
uk
Cijk
= fi , x
xj
x
x .
2 u2
2 u1
+
x2
xy
( + )
2 u2
2 u1
+
xy
y 2
2 u1
2 u1
+
x2
y 2
= f1
(5.54)
2 u2
2 u2
+
x2
y 2
= f2
(5.55)
194
(5.56)
0 x 1}.
u(x, 0) =
1
(cos x, 0) 3 ,
2
1
u(1, y) = 2 ( cos y, 0) 2 .
u(x, 2) =
(5.57)
A solucao exata do problema (5.54) e (5.55) com essas condicoes de fronteira e dada
por
1
u = (u1, u2 ) = 2 (cos x cos y, sen x sen y).
(5.58)
n = bdy[1][i], p = NoPos(n)
typ[n][0] = 0; u[n][0] = cos( x[p.v[0]])/( 2 );
1 =
typ[n][1] = 1; u[n][1] = 0;
n = bdy[2][i], p = NoPos(n)
typ[n][0] = 0; u[n][0] = cos( y[p.v[1]])/( 2);
2 =
typ[n][1] = 1; u[n][1] = 0;
n = bdy[3][i], p = NoPos(n)
typ[n][0] = 0; u[n][0] = cos( x[p.v[0]])/( 2 );
3 =
typ[n][1] = 1; u[n][1] = 0;
n = bdy[4][i], p = NoPos(n)
typ[n][0] = 0; u[n][0] = cos( y[p.v[1]])/( 2);
4 =
typ[n][1] = 1; u[n][1] = 0;
195
u[n][r] =
1
(cos x, 0)
2
u[n][r] =
1
(cos x, 0)
2
u[n][r] =
1
( cos y, 0)
2
u[n][r] =
1
(cos y, 0)
2
Em 4 e 2 estamos identificando, respectivamente, os nos prescritos na fronteira para x = 0 e x = 1. Por u[n][r] estamos denotando o valor prescrito na
componente r do no global n.
A matrix global K construda a partir da matriz local e de ordem Neq Neq.
e
e
Fme = fm
+ pem qm
Na tabela que mostraremos a seguir, para a malha 40 80 tem-se 3.321 nos, 3.200
elementos e 6.162 equacoes, ou seja, {Nno = 3.321; Nel = 3.200; Neq = 6.162}. Dessa
forma a matriz global e de ordem 6.162 6.162.
196
1
(p1 (0, y), p2(0, y) = (p1 (1, y), p2(1, y)) = sen y (3.5, 1)
(5.59)
1
sen x sen y.
2
(5.60)
e
A matriz local Kmn
e a mesma do Exemplo 1, mas a matriz global K e de ordem
NeqNeq, onde Neq e o n
umero de equacoes que dependera da escolha do procedimento
descrito na secao unicidade do problema de Neumann.
n = bdy[1][i], p = NoPos(n)
Bv[1][i][0] = sen( x[p.v[0]])/;
1 =
Bv[2][i][1]
= sen( y[p.v[1]])/;
n = bdy[3][i], p = NoPos(n)
Bv[3][i][0] = sen( x[p.v[0]])/;
3 =
197
Dessa forma na proxima secao, descrevemos tres procedimentos para obter a unicidade
de solucao e serao mostrados os erros absolutos e relativos para um dos procedimentos.
No procedimento 1, estamos escolhendo aquela solucao cujo deslocamento e momento de deslocamento medios sao nulos, descritos dentro da subroutina Restriction.
No procedimento 2, estamos fixando tres componentes (duas verticais e uma horizontal), no final da subroutina CondFront forcando a solucao a passar pela origem,
ou seja, no exemplo 2, estamos fixando, para o no global A = 1 as duas componentes
horizontal e vertical e para o u
ltimo no (escolha arbitraria) do eixo-x, A = Nelx + 1
estamos fixando a componente vertical, da seguinte forma:
typ[1][0] = 1; u[1][0] = 0; (comp. horiz.do no global A=1)
typ[1][1] = 1; u[1][1] = 0; (comp. vert. do no global A=1)
typ[Nelx + 1][1] = 1; u[Nelx + 1][1] = 0; (comp. vert. do no global A=Nelx+1)
No procedimento 3, fixamos inicialmente apenas duas componentes verticais, da
seguinte forma:
typ[1][1] = 1; u[1][1] = 0; (comp. horiz. do no global A=1)
typ[Nelx + 1][1] = 1; u[Nelx + 1][1] = 0; (comp. vert. do no global A=Nelx+1)
Nesse caso obtemos uma infinidade de solucoes, que se diferenciam apenas na translacao
em relacao ao eixo-x. Depois, podemos fixar uma delas, como por exemplo a`quela que
passa pela origem, da seguinte forma
u[n][0] = u[1][0],
n = 2, 3, ;
u[1][0] = 0;
For
ca Local
Em geral a forca local e calculada por:
e
e
Fme = fm
+ pem qm
,
m = 2(a 1) + r ,
r = 1, 2
a = 1, 2, 3, 4
e
Mas nesse caso qm
= 0, para todos os elementos, exceto para os nos fixados A = 1 (nas
duas componentes) e A = Nelx (componente vertical), que significa:
198
onde (p1 (0, y), p2(0, y)) 4 e (p1 (1, y), p2(1, y)) 2 .
n = bdy[1][i], p = NoPos(n)
typ[n][0] = 0; u[n][0] = 0;
1 =
typ[n][1]
= 1; u[n][1] = 0;
n = bdy[2][i], p = NoPos(n)
typ[n][0] = 0; u[n][0] = 3.5 sen y/;
2 =
typ[n][1]
= 1; u[n][1] = 0;
n = bdy[4][i], p = NoPos(n)
typ[n][0] = 0; u[n][0] = 3.5 sen y/;
4 =
m = 2(a 1) + r ,
r = 1, 2
a = 1, 2, 3, 4
e em 1 e 3 por
e
e
Fme = fm
+ qm
1
sen(x) sen(y).
2
Nesse exemplo, para uma malha 5050 temos {Neq = 4.998, Nno = 2.601, Nel = 2.500}
199
5.5
(5.61)
onde Ci e uma constante de translacao e Wij e uma matriz anti-simetrica definida por
0
.
[W ] =
0
Verifica-se que vi tambem e uma solucao do problema. Observamos que por hipotese,
na formulacao do problema de elasticidade linear, o gradiente do deslocamento e infinitesimal e portanto o valor de e teoricamente pequeno e consequentemente a matriz W
representa uma rotacao infinitesimal de um angulo . Entretanto, matematicamente,
a nao-unicidade da solucao do problema e valida para qualquer valor de . Para obter
a unicidade descrevemos a seguir tres procedimentos para o problema 2:
Procedimento 1
Nesse procedimento vamos impor uma restricao apos a resolucao do sistema, ou
seja, primeiro obtemos uma solucao qualquer, pois a matriz rigidez K e singular e
consequentemente existem infinitas solucoes; em seguida, determinamos as rotacao e
translacao apropriadas para a solucao com a referida restricao, como descrito a seguir:
Para assegurar a unicidade de solucao podemos determinar a rotacao do angulo
e a translacao Ci de tal forma que satisfacam as seguintes relacoes:
Z
Z
Z
v1 d = 0,
v2 d = 0,
(v1 x2 v2 x1 ) d = 0.
(5.62)
I2 I0 0
b1
I1 0 I0 C1 = b2 ,
I3 I2 I1
C2
b3
onde
b1 =
u1 d, b2 =
u2 d, b3 = (u1 x2 u2 x1 ) d,
Z
Z
Z
Z
I0 =
d, I1 =
x1 d, I2 =
x2 d, I3 = (x21 + x22 )d.
200
I0 I2
I0 I1
I02
b1
C1 = 1 I0 I3 I12
I1 I2
I0 I2 b2 ,
(5.63)
D
2
I1 I2
I0 I3 I2 I0 I1
b3
C2
onde D = I0 (I0 I3 I12 I22 ).
v1 d =
v2 d =
uex
1 d,
uex
2 d,
(v1 x2 v2 x1 ) d =
(5.64)
Z
ex
(uex
1 x2 u2 x1 ) d.
Assim, a partir de uma solucao numerica ui obtemos a solucao procurada pela determinacao da rotacao e translacao desejadas para a comparacao:
e1 b1
I0 I2
I0 I1
I02
C1 = 1 I0 I3 I12
I1 I2
I0 I2 e2 b2 ,
D
2
C2
I1 I2
I0 I3 I2 I0 I1
e3 b3
onde
e1 =
uex
1
d,
e2 =
uex
2
d,
e3 =
(5.65)
ex
(uex
1 x2 u2 x1 ) d.
201
Procedimento 2
Nesse procedimento, podemos prescrever as tres componentes dentro da subrotina
CondFront. Observe que as restricoes (5.62) ou (5.64) envolvem 3 graus de liberdade
caracterizada pelas constantes , C1 e C2 . Podemos prefixar 3 valores de deslocamento,
ou sejam u1 e u2 de um no e uma componente, por exemplo u1 , de um outro no, e
consequentemente a matriz rigidez sera positiva definida.
Procedimento 3
Esse procedimento e similar ao anterior, mas ao inves de fixar tres componentes,
podemos fixar inicialmente apenas duas componentes verticais, permitindo assim uma
infinidade de solucoes que se diferenciam somente pela translacao no eixo-x, nesse caso,
ou seja, se u(x, y) e solucao do problema entao u(x, y) = u(x, y) + c, tambem e uma
solucao. Ao final podemos entao escolher o valor de c conveniente, que no exemplo
2 desse contexto foi tomado c = 0, ou seja, dentro da subrotina GlobalSystem pode
ser feita a seguinte translacao :
Para (n = 2; n <= Nno; n + +)
u[n][0] = u[1][0]; u[1][0] = 0; (Translacao da solucao passando pela origem)
Os tres procedimentos anteriores sao para estabelecer, dentre as infinitas solucoes
possveis do problema original com fronteira de Neumann, a mais adequada ao modelo
fsico. No procedimento 1, estamos escolhendo aquela solucao cujo deslocamento medio
e momento medio de deslocamento sao nulos (5.62). Nos procedimentos 2 e 3, estamos
escolhendo a solucao que passa pela origem.
Para o exemplo 2, geramos solucoes para os tres tipos de procedimentos, cujos erros
relativos e nas normas L2 e H 1 sao dados nas tabelas a seguir:
202
k E k0
k E k1
E0 %
E1 %
10 10
8.54 103
5.88 102
12.11
18.76
20 20
1.28 103
7.3 103
1.79
2.28
50 50
2.33 10
1.4 10
0.03
0.045
k E k0
k E k1
10 10
2.42 102
20 20
7.13 10
50 50
1.72 103
E0 %
E1 %
2.76 102
42.45
8.79
7.73 10
10.7
2.43
2.45
0.57
1.8 103
k E k0
k E k1
10 10
1.12 102
20 20
3.68 10
50 50
1.14 103
E0 %
E1 %
1.37 102
16.07
4.39
4.41 10
5.21
1.39
1.43 103
1.60
0.45
Note que para uma malha 50 50 temos 2.500 elementos, 2.601 nos e o n
umero de
equacoes e igual 5.202 ou 5.199 ou 5.201, dependente respectivamente do procedimento,
{1, 3, 2}.
5.6
Resultados Num
ericos
203
Erros numericos
Malha
k E k0
k E k1
10 20
7.24 104
20 40
1.85 10
40 80
5.15 105
E0 %
E1 %
3.62 103
0.73
0.82
9.28 10
0.18
0.21
2.59 104
0.05
0.06
204
k E k0
k E k1
E0 %
E1 %
10 10
1.12 102
1.37 102
16.07
4.39
20 20
3.68 103
4.41 103
5.21
1.39
50 50
1.14 10
1.43 10
1.60
0.45
205
Erros numericos
Malha
k E k0
k E k1
E0 %
E1 %
10 10
1.99 103
6.64 103
2.89
2.14
20 20
5.13 104
1.71 103
0.72
0.54
50 50
1.12 10
3.74 10
0.16
0.12
206
5.7
Exerccios
CAPITULO 6
M
etodos Num
ericos e Algoritmos:
Equac
ao do Calor
6.1
Equac
ao Parab
olica
u(x, 0) = u0 (x),
x (0, 1),
onde e sao constantes reais positivas e f = f (x, t) e uma fonte de calor, u(0, t)
e u(1, t) representam as temperaturas na fronteira em cada instante, ou seja, a temperatura nos extremos do intervalo sao fixas e u0 (x) e a temperatura inicial da barra.
Vamos supor que f = f (x, t) e u0 (x) sejam funcoes suficientemente regulares.
A solucao u(x, t) representa a temperatura da barra em cada instante t [0, T ],
que esta presa nos extremos.
207
208
A solucao do problema (6.1), para uma forca f L2 ((0, T ; L2(0, 1)), por exemplo, pode
ser obtida usando o metodo de separacao de variaveis (metodo de Fourier), no qual a
solucao u(x, t) e representada por uma serie infinita. O problema numerico e a convergencia lenta da serie de Fourier, mesmo quando usada a denominada transformada
rapida de Fourier. Essa e uma das razoes para introducao do metodo de elementos
finitos.
Definimos a forma bilinear
a(u, v) =
ux vx dx +
0
uv dx,
(6.2)
associado a norma
kuk2a = kuk20 + kuk20.
(6.3)
Formulac
ao Variacional para a Equac
ao do Calor
Seja D(0, 1) = {v C0 (0, 1); v(0) = v(1) = 0} o espaco das funcoes testes com
suporte compacto em (0, 1). Note que a funcao v = v(x) somente depende da variavel x.
209
(6.5)
(6.6)
v V ,
onde (6.6)2 representa a temperatura inicial de uma haste e estamos denotando u(t)
por u e u(x, 0) = u(0).
Problema Aproximado
Seja T > 0 e Vm = [w1 , w2 , ..., wm ] V , um subespaco vetorial gerado pelos
m-primeiros elementos da base do espaco de Hilbert V (A existencia da base e uma
consequencia do espaco de Hilbert V ser um espaco separavel). Sabemos que toda
funcao um (t) Vm pode ser escrita como combinacao linear dos elementos da base,
representada por
m
X
um (t) =
di (t)wi (x).
(6.7)
i=1
um (0) = u0m u0
em V.
(6.8)
210
m
X
i=1
(u0 , wi )wi u0 =
(u0 , wi )wi ,
em V,
i=1
quando m ,
onde di (0) = (u0 , wi ). Assim e natural a escolha de u0m como condicao inicial do
problema em Vm .
No captulo de analise numerica (existencia e unicidade de solucao), provaremos que
existe uma sucessao de solucoes um (x, t) do problema aproximado (6.8) pertencentes ao
subespaco Vm que sao limitadas, independente de m, possibilitando mostrar que essa
sucessao converge para solucao exata u(x, t), quando m , ou seja, quando aumentamos o n
umero de vetores {wi }m
cao do problema aproximado
i=1 da base de Vm a solu
converge para a solucao u do problema do problema (6.6).
Nesta secao estamos principalmente interessamos em desenvolver metodos para obter as solucoes numericas um (x, t) do problema aproximado (6.8) para cada instante
de tempo t.
Como a solucao procurada e da forma (6.7) entao substituindo em (6.8) obtemos
m
X
di (t)wi (x), vm
i=1
m
X
+a
di (t)wi (x), vm = (f, vm ) , vm Vm .
i=1
Como ., . sao definidos em Vm , podemos escrever
m
X
i=1
di (t)
m
X
wi (x), vm +
di (t) a wi (x), vm = (f, vm ) , vm Vm ,
i=1
m
X
di (t) a wi (x), wj (x) = f (t), wj (x) .
di (t) wi (x), wj (x) +
i=1
Definindo as matrizes
Z
A = wi , wj =
Z 1
Z 1
B = a wi , wj =
(wi )x (x)(wj )x (x) dx +
(wi )(x)(wj )(x) dx,
0
Z
F = Fj = f (t), wj (x) =
(6.9)
211
di (t) aij +
di (t) bij = Fj , para j = 1, , m
i=1
i=1
t [0, T ]
Ad (t) + Bd(t) = F (t),
(6.10)
onde d(0) e a condicao inicial e d(t) = (d1 (t), d2 (t), , dm (t))T e o vetor incognita. A
matriz A e chamada de matriz capacitancia enquanto que a matriz B e chamada de
matriz de condutividade e F e uma fonte de calor. Note que A + B e a mesma matriz
rigidez K definida em (2.13), tomando = = 1. Alem disso, como provado em
(2.15) e (2.16), a matriz A e simetrica e definida positiva. Em particular a matriz A
e invertvel e assim podemos escrever o sistema de equacoes diferenciais ordinarias na
forma
d (t) + A1 Bd(t) = A1 F (t), t > 0, com d(0) = d0 ,
e portanto tem solucao u
nica d(t) para t [0, T ]. Assim, por (6.7), a solucao aproximada um (x, t) do problema (6.8) pode ser calculada.
6.2
Vamos agora introduzir alguns dos metodos numericos mais conhecidos da literatura, ver em [9, 10], para a resolucao numerica do sistema (6.11), ou seja, para obtencao
212
= um (x, tn ) =
m
X
i=1
6.2.1
m
X
dni wi (x).
(6.12)
i=1
M
etodo de Euler Regressivo
(d (t))t=tn =
=
d dn1 ,
t n t
onde a funcao d, como sabemos, depende somente da variavel tempo t = tn . Substituindo a aproximacao no sistema (6.11) e usando a notacao dada, obtemos;
1 n
A d dn1 + Bdn = F n ,
t
n = 1, 2 N
(6.13)
ou equivalentemente
(A + tB)dn = tF n + Adn1 = bn ,
n = 1, 2, N.
(6.14)
213
Algoritmo
Para inicializacao do metodo iterativo, faz-se n = 1 em (6.14), obtendo-se
(A + tB)d1 = tF 1 + Ad0 = b1 ,
Mas F 1 = f (x, t1 ), wj (x) e conhecido para todo x e d0 = d(0) e a condicao inicial
n = 2, 3, N.
(6.15)
6.2.2
M
etodo de Euler Progressivo
(d (t))t=tn =
=
d
dn .
t n t
De forma analoga ao metodo anterior, substituindo a aproximacao no sistema (6.11)
obtemos o seguinte sistema linear,
Adn+1 = (A tB)dn + tF n ,
n = 0, 1, N.
(6.16)
214
6.2.3
M
etodo de Crank-Nicolson
n = 0, 1, (N 1) (6.17)
Algoritmo
Para inicializacao do metodo iterativo, faz-se n = 0 em (6.17), obtendo-se
(2A + tB)d1 = (2A tB)d0 + t(F 1 + F 0 ) = b0 .
Mas F 0 , F 1 sao conhecidos para todo x e d0 = d(0) e a condicao inicial dada. Como
(A + tB) e nao singular, entao resolvendo o sistema determina-se d1 e sucessivamente
obtemos de forma u
nica d2 , d3, dN , atraves do sistema (6.17). Nas secoes posteriores
mostraremos que a ordem de convergencia e O(t)2 , que pode ser visto tambem em
{[9],[19],[20]}.
6.2.4
M
etodo Generalizado Trapezoidal: (-m
etodo)
F n+ = F n+1 + (1 )F n ,
[0, 1].
215
Algoritmo 1
A inicializacao do metodo e semelhante aos metodos anteriores, ou seja, faz-se n = 0
em (6.18) e entao resolve-se o sistema linear obtendo-se o vetor solucao d1 . A partir
desse vetor solucao determina-se d2 , d3 , dN .
Algoritmo 2: M
etodo Generalizado Trapezoidal
Considere o seguinte algoritmo;
(6.19)
216
dn+1 = dn + tv n+ = dn + t v n+1 + (1 )v n = den+1 + tv n+1
A + tB v n+1 = F n+1 B den+1
Resolvendo o sistema linear obtem-se v n+1. Com v n+1 calculado, entao os valores de
dn+1 sao determinados pela relacao (ii), ou seja,
dn+1 = den+1 + tv n+1 ,
6.3
Simulac
ao Num
erica: Equac
ao do Calor
Nessa secao faremos algumas simulacoes numericas do problema parabolico, utilizando os diferentes metodos apresentados. Para verificar a eficiencia dos metodos,
serao construdos problemas onde a solucao exata do problema (6.1) e conhecida, possibilitando entao comparar com as solucoes numericas em diferentes normas.
O conhecimento da solucao exata possibilita o calculo do erro definido por
E(xi , tn ) = u(xi , tn ) uh (xi , tn ).
(6.20)
As normas L (0, T ; L2 (0, 1)) e L (0, T ; H 1(0, 1)) do erro sao definidas por
kEkL (0,
T ;L2 (0,
1))
1))
= max
tn [0, T ]
= max
tn [0, T ]
Z
Z
1/2
|E(x)|2 dx
1/2
dE(x) 2
(|E(x)|2 + |
| ) dx
dx
(6.21)
217
1))
i=1
m
m
X
X
E n 1/2
n 2
= max h
|Ei | + h
| i |2
tn [0, T ]
x
i=1
i=1
m
m
1/2 1 X
X
1/2
n 2
n
= max h
|Ei |
+
|Ei+1
Ein |2
.
tn [0, T ]
h
i=1
i=1
(6.22)
kEkL (0,T ;L2 (0,1)) = ku uh kL (0,T ;L2 (0,1)) c1 hk+1 + (t)m
kEkL (0,T ;H01 (0,1)) = ku uh kL (0,T ;H01 (0,1)) c2 hk + (t)m ,
(6.23)
De outra forma dizemos que o erro kEkL (0,T ;L2 (0,1)) e de ordem O(hk+1 + tm ) e
kEkL (0,T ;H01 (0,1)) tem ordem O(hk + tm ).
Note que, em particular para k = 1, ou seja, quando as funcoes bases sao polinomios
lineares por partes entao a ordem no espaco e de O(h) em H01 (0, 1) e ordem O(h2 ) em
L2 (0, 1).
Alem disso, se = 1/2 m = 2 e se 6= 1/2 m = 1. As constantes c1 e c2
sao positivas independentes de h e t e k e o grau do polinomio interpolador da base
do subespaco Vmk . Do resultado podemos concluir que:
i O metodo de Crank-Nicolson, = 1/2, tem convergencia quadratica no tempo
O(t)2 .
ii O metodo de Euler progressivo, = 0, e condicionalmente convergente.
Para os exemplos numericos a seguir, considere os intervalos discretos tn [0, 1], e as
funcoes bases Vmk como as funcoes lineares por partes, ou seja, k = 1 em (6.23).
Serao comparados os metodos:
218
Considere o problema,
(6.24)
219
Para < 0.5, os metodos numericos sao condicionalmente convergentes e nas mesmas condicoes de malha, todos os -metodos testados divergiram.
A tabela 6.2 mostra a dependencia dos erros em relacao ao incremento de tempo t,
para os -metodos, com os parametros, = 0.5 (Crank-Nicolson), = 0.75, = 1.0
(Euler regressivo).
n
2
4
6
8
10
t h = t
0.1
0.05
0.2
0.05
0.3
0.05
0.4
0.05
0.5
0.05
E0.5
0.000620
0.000343
0.000160
0.000068
0.000028
E0.75
0.002495
0.001484
0.000742
0.000341
0.000149
E1.0
0.005398
0.003409
0.001816
0.000892
0.000418
0.006
E50
E75
E100
0.005
E(t)
0.004
0.003
0.002
0.001
0
0.1
0.15
0.2
0.25
0.3
tempo
0.35
0.4
0.45
0.5
Ordem de Converg
encia
Vamos analisar numericamente a ordem de convergencia do exemplo 1, onde a
solucao e conhecida e dada por: u(x, t) = (1/ 2 ) sen(x) exp(( 2 + 1)t). Considere
Ei = max kEi (t)kL2 (0,1) , o erro associado a malha h = (52i+1 )1 , para i = 0, 1, N
t[0,1]
e considere em particular t = h. Entao, como vimos em (3.58), a ordem de convergencia p = ln(Ei /Ei+1 )/ ln(2). Vamos agora calcular, a ordem de convergencia p
para o metodo de Crank-Nicolson e o metodo de Euler regressivo. A tabela 6.3, mostra
que para o metodo de Crank-Nicolson, p 2, e para o Euler regressivo p 1.
220
= 1.0
h = 0.1
T =1
= 0.75
h = 0.1
T =1
= 0.5
h = 0.1
T =1
t
EL (0,T ;L2 (0,
0.1
0.009911
0.05
0.005683
0.025
0.003016
0.1
0.004351
0.05
0.002627
0.005
0.001383
0.1
0.003176
0.05
0.000862
0.025
0.000357
1))
EL (0,1;H 1 (0,1))
0.013051
0.007483
0.003972
0.005730
0.003459
0.001821
0.004182
0.001136
0.000470
= 1.0
(Euler
Regressivo)
= 0.5
(Crank
Nicolson)
1))
0.760
0.865
0.927
0.962
2.147
2.035
1.992
2.000
(6.25)
221
= 1.0
(Euler
Regressivo)
= 0.5
(Crank
Nicolson)
1))
0.928
0.965
0.977
1.093
2.000
t
h
EL (0,T ;L2 (0,
0.001 0.1
0.000003
0.001 0.05
0.000002
0.001 0.1
0.000002
0.001 0.05
diverge
1))
EL (0,T ;H 1 (0,
0.000004
0.000003
0.000003
diverge
1))
E(t)
0.00015
0.0001
5e-005
0
0
0.2
0.4
0.6
0.8
tempo
222
6.4
Exerccios
1. Bases c
ubicas e Hermite Considere o problema (6.25) do Exemplo 2.
(a) Determine as solucao numerica aproximada para os metodos definidos na
tabela 6.2, usando como funcao base (i Vm ) as funcoes B-splines, definidas em (3.9). Como as B-splines sao polinomios de grau k 3 podemos
esperar que os erros sejam menores em ambas as normas L (0, T, L2 (0, 1))
e L (0, T, H01 (0, 1)), definidas em (6.22).
(b) Nas mesmas condicoes do item anterior, refaca o problema usando como
funcao base os polinomios de Hermite, definidos em (3.21).
(c) Suponha que a solucao exata do problema (6.25) seja desconhecida. Verifique a ordem de convergencia numerica, definida em (3.58), para o metodo
de Crank-Nicolson e Euler regressivo, usando como funcao base as funcoes
dos tens anteriores e compare com a estimativa de erro esperado em (8.85).
2. Fronteira mista: Considere o problema (6.25), com = = 1. Sabendo que a
solucao exata e u(x, t) = (1/ 2 ) sen(x) exp(( 2 + 1)t), entao o problema com
as condicoes de fronteira de Neumann (x = 0) e Dirichlet (x = 1) e dado por
u(x, t) = 0,
x e t [0, 1]
=
=
=
=
{(x, 0) ;
{(1, y) ;
{(x, 1) ;
{(0, y) ;
0 x 1}
0 y 1}
0 x 1}
0 y 1}
(6.27)
Sec. 4. Exerccios
223
CAPITULO 7
M
etodos Num
ericos e Algoritmos:
Equac
ao da Onda
u(0, t) = u(1, t) = 0,
t [0, T ]
(7.1)
u(x, 0) = u0 (x),
x (0, 1),
ut (x, 0) = u1 (x),
x (0, 1),
onde e sao constantes reais positivas e f = f (x, t) e a forca atuando sobre a barra
em cada instante t [0, T ], u(0, t) e u(1, t) representam as condicoes de fronteira
em cada instante, u(x, 0) = u0 (x) e a posicao inicial da onda e ut (x, 0) = u1 (x) e a
velocidade inicial da onda.
A solucao u = u(x, t) representa a posicao da onda em cada instante t [0, T ],
que esta presa nos extremos.
224
225
Formula
c
ao Variacional da Equac
ao da Onda
Seja D(0, 1) = {v C0 (0, 1); v(0) = v(1) = 0} o espaco das funcoes testes com
suporte compacto em (0, 1). Note que a funcao v = v(x) somente depende da variavel x.
Multiplicando a equacao (7.1) por v D(0, 1) e integrando em (0, 1) obtem-se
Z 1
Z 1
Z 1
Z 1
u (t)v dx
uxx (t)v dx +
u(t)v dx =
f (t) v dx, v D(0, 1). (7.2)
0
(u(0), v) = (u , v), v V .
1
7.1
(7.3)
Problema Aproximado
m
X
di (t)wi (x).
(7.4)
i=1
(7.5)
Provaremos no teorema (9.5) sobre existencia e unicidade de solucao, que existe uma
sucessao de solucoes um (x, t) do problema aproximado (7.5) pertencentes ao subespaco
226
di (t)wi (x), vm
i=1
m
X
+a
di (t)wi (x), vm = (f, vm ) , vm Vm
i=1
Como ., . sao definidos em Vm , podemos escrever
m
X
di (t)
i=1
m
X
di (t) a wi (x), vm = (f, vm ) , vm Vm ,
wi (x), vm +
i=1
di (t)
m
X
di (t) a wi (x), wj (x) = f (t), wj (x) .
wi (x), wj (x) +
i=1
Definindo as matrizes
A = wi (x), wj (x) ,
B = a wi (x), wj (x)
e F = Fj = f (t), wj (x) ,
(7.6)
di (t) aij +
m
X
i=1
di (t) bij = Fj ,
para j = 1, , m
(7.7)
onde d(t) = (d1 (t), d2 (t), , dm (t))T e o vetor incognita, d(0) e a posicao inicial e d (0)
e a velocidade inicial da onda. A matriz A e chamada de matriz massa enquanto que
a matriz B e a ja conhecida matriz rigidez. Note que a matriz A e simetrica e definida
227
t > 0,
com d(0) = d0 ,
d (0) = d1
7.2
7.2.1
d(0) = d0
n = 0, 1, N, temos
t [0, T ]
(7.8)
d (0) = d1
M
etodo da Diferenca Central
n = 0, 1, (N 1)
(7.10)
Como a matriz A e nao singular e o lado direito do sistema e conhecido entao resolvendo
o sistema linear para cada tn = nt, obtem-se uma u
nica solucao do sistema e portanto
o vetor dn e determinado e consequentemente a solucao aproximada um (x, tn ) por (7.4).
Algoritmo
Para inicializacao do metodo iterativo, faz-se n = 0 em (7.10), obtendo-se
Ad1 = (2A (t)2 B)d0 + (t)2 F 0 Ad1
(7.11)
228
d1 d1
= v1
2t
(7.12)
(t)2 0
(t)2
B)d0 +
F + tAv1
2
2
(7.13)
Como a matriz e nao singular entao o sistema linear de m equacoes tem uma u
nica
1
1 1
1
solucao d = (d1 , d2 , , dm ). Para calcular as solucoes nos tempos n = 1, 2, , N,
basta resolver o sistema (7.10) para cada n, ou seja,
Adn+1 = (2A (t)2 B)dn + (t)2 F n Adn1
n = 1, 2, (N 1)
7.2.2
M
etodos Implcitos - M
etodo de Newmark
(7.14)
229
Algoritmo
Para inicializacao do processo tomemos n = 0 em (7.16), obtendo-se
Md1 = Ld0 Md1 + (t)2 (F 1 + F 1 ) + (1 2)F 0
(7.17)
O valor de d1 pode ser obtido pela aproximacao (7.12). Para a forca, no processo de
inicializacao (n = 0) podemos tomar a aproximacao
F 0 = (F 1 + F 1 ) + (1 2)F 0 ,
desde que o valor de F 1 seja conhecido. Caso contrario podemos tomar a aproximacao
inicial F 0 = F 0 . Assim o algoritmo pode ser inicializado por
1
(t)2 0
Md1 = Ld0 + tMv1 +
F
2
2
(7.18)
230
7.2.3
M
etodo Num
erico: -m
etodo: Equac
ao da Onda
m
X
di (t)i (x)
i=1
um (x, t) =
m
X
i (t)i (x).
(7.20)
i=1
d (t) (t) = 0,
A (t) + Bd(t) = F (t)
(7.21)
P2 :
P1 :
d(0) = d
(0) = d (0) = d1
0
n+ = n+1 + (1 )v n ,
, [0, 1].
Aplicando aos Problemas (P1) e (P2), que sao de primeira ordem, os -metodos
para cada dos problemas separadamente, obtemos:
(n+1 n )
n+1
dn )
+ Bdn+ = F n+
(d
A
= n+ ,
t
t
P2 :
(7.22)
P1 :
d(0) = d .
(0) = d (0) = d1
0
Desenvolvendo os termos, obtemos o sistema:
An+1 = An tB(dn+1 + (1 )dn ) + t(F n+1 + (1 )F n )
dn+1 = dn + t(n+1 + (1 )n ), para n = 0, 1,
(7.23)
231
Sistema Linear
Note que o sistema (7.23) e um sistema acoplado, ou seja determina-se {dn+1, n+1 }
a partir do conhecimento da solucao no tempo anterior {dn , n }. Na forma matricial
podemos escrever o seguinte sistema linear:
Kn+1 = Ln + Fn+ ,
onde
K=
n =
t I
tB
I
L=
(7.24)
( 1)tB
A
(1 )tI
Fn+ =
n+1
+ (1 )F
0
(7.25)
Algoritmo
Fazendo n = 0 no sistema linear (7.24), temo
K1 = L0 + F0+ .
(7.26)
Observa
c
ao
1. Quando (, ) 1/2, o metodo e incondicionalmente estavel, como consequencia
do Teorema 8.6. Alem disso se (, ) = 1/2; (metodo de Crank-Nicolson); o metodo
232
7.3
Simulac
ao Num
erica: Equac
ao da Onda
Nessa secao faremos algumas simulacoes numericas do problema hiperbolico, utilizando o metodo de Newmark para diversos valores de . Para os exemplos numericos,
o programa computacional utilizou como funcao base os polinomios lineares por partes. Nos exemplos a solucao exata e conhecida e podemos entao calcular o erro entre
a solucao numerica aproximada e a solucao exata, nas normas definidas em (6.22), ou
seja L (0, T ; L2 (0, 1)) e L (0, T ; H 1(0, 1)).
Considere o problema:
u(0, t) = u(1, t) = 0,
u(x, 0) = sen(x)
ut (x, 0) = 0
(7.27)
0,
f (x, t) =
(2 + ) 2 + ) u(x, t)
se
2 = + /()2
se
2 6= + /()2.
233
u(0, t) = u(1, t) = 0,
u(x, 0) = sen(x)
ut (x, 0) = 0
(7.28)
1/2
Nesse caso a solucao exata e u(x, t) = sen(x) cos(t), com = ( + /()2 ) Para
1/2
o exemplo numerico, foram considerados = = 1. Assim = (1 + 1/()2 ) 1.05
Na tabela 7.1, sao mostrados os erros nas normas L (0, T ; L2 (0, 1)) e L (0, T ; H 1(0, 1)),
do metodo de Newmark para diversos , com os parametros t = 0.01, h = 0.05 e
T = 0.5 fixos.
t = 0.01
h = 0.05
T = 0.5
EL (0,T ;H 1 (0,
0.001288
0.001108
0.000927
0.000764
0.000620
1))
1))
Erro(theta)
0.001
0.0009
0.0008
0.0007
0.0006
0.0005
0
0.25
0.5
theta
0.75
1))
234
Nas tabelas de erros, tabela 7.2 e tabela 7.3 sao mostradas a dependencia dos erros
em relacao aos parametros de discretizacao espacial h e do parametro do passo temporal
t.
h
EL (0,1;L2 (0,1))
0.1
0.003853
0.05
0.000660
0.025
0.000142
t = 0.01
= 0.75
T = 0.5
EL (0,1;H 1 (0,1))
0.005074
0.000764
0.000153
h = 0.01
= 0.75
T = 0.5
t
EL (0,1;L2 (0,1))
0.05
0.0104
0.025
0.002637
0.0125
0.000697
EL (0,1;H 1 (0,1))
0.010727
0.002720
0.000719
= 1.0
t = h
0.1
0.05
0.025
0.0125
0.1
0.05
0.025
0.0125
1))
1.981
1.995
1.995
1.933
1.982
1.999
235
= 0.25
= 0.5
t
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
0.01
h
EL (0,T ;L2 (0,
0.1
0.00479
0.05
0.00123
0.01
diverge
0.1
0.00472
0.05
0.00106
0.01
0.00011
0.1
0.00445
0.05
0.00089
0.01
0.00024
1))
= 0.0
t = h/2
h
EL (0,T ;L2 (0,
0.05
0.1
0.006188
0.025
0.05
0.001561
0.0125
0.025
0.000387
0.00625 0.0125
0.000097
1))
1.987
1.997
1.997
236
u(0.5,t)
0.5
-0.5
-1
0
10
0.035
E0.dat
E25.dat
E50.dat
E75.dat
E100.dat
0.03
0.025
0.02
0.015
0.01
0.005
0
0
10
u(0, t) = u(1, t) = 0,
u(x, 0) = sen(x)
ut (x, 0) = 0
(7.29)
237
Sec. 4. Exerccios
Para esse exemplo, os valores consignados na tabela 7.7 sao os erros nas normas
L (0, T ; L2 (0, 1)) e L (0, T ; H 1(0, 1)), dependente do parametro do metodo de Newmark, com os parametros fixos t = 0.01, h = 0.05 e T = 0.5. Observamos novamente,
t = 0.01
h = 0.05
T = 0.5
1))
EL (0,T ;H 1 (0,
0.001203
0.001049
0.000894
0.000755
0.000640
1))
7.4
Exerccios
1. Bases C
ubicas e Hermite: Considere o problema (7.27) do Exemplo 2.
(a) Determine as solucao numerica aproximada para o Metodo da Diferenca
Central , usando como funcao base a funcao B-splines, definidas em (3.9).
Como as B-splines sao polinomios de grau k 3 podemos esperar que os
erros sejam menores nas normas L (0, T, L2 (0, 1)) e L (0, T, H01 (0, 1)).
(b) Nas mesmas condicoes do item anterior, refaca o problema usando como
funcao base os polinomios de Hermite, definidos em (3.21) e (3.22).
(c) Suponha que a solucao exata do problema (7.27) seja desconhecida. Verifique a ordem de convergencia numerica, definida em (3.58) do Metodo da
Diferenca Central usando as bases dos tens anteriores e verifique se satisfaz
a estimativa de erro (9.40).
2. Fronteira de Neumann: Considere o mesmo problema (7.27), com = 3
e = 2 . Sabendo que a solucao exata e u(x, t) = sen(x) cos(2t) entao o
problema com as condicoes de fronteira de Neumann e dado por
u(x, 0) = sen(x),
ut (x, 0) = 0
x (0, 1),
Como observado anteriormente, para o problema ter solucao u
nica e necessario
conhecer a solucao em pelo menos um ponto, como por exemplo, u(0, 0) = 0.
238
u(x, t) = 0,
x e t [0, 1]
=
=
=
=
{(x, 0) ;
{(1, y) ;
{(x, 1) ;
{(0, y) ;
S4
i=1
(7.31)
i , onde
0 x 1}
0 y 1}
0 x 1}
0 y 1}
CAPITULO 8
An
alise Num
erica:Equac
ao do Calor
Nesse captulo provaremos os resultados de convergencia dos metodos numericos
e algoritmos discutidos anteriormente, tanto no contexto do problema semidiscreto
quanto no problemas totalmente discretos. Os resultados de convergencia dessa secao,
tambem sao encontrados, por exemplo, nas referencias [1, 9, 11, 17, 21].
8.1
Estimativa de erro
Nessa secao estamos interessado em fazer estimativas de erro para o problema semidiscreto e Problema Discreto da equacao do calor.
8.1.1
Problema Semidiscreto
(8.1)
240
Tempo Contnuo
satisfazendo,
a(u(t) u
e(t), vh ) = 0,
vh Vmk .
(8.5)
a projecao u
e seria exatamente a solucao uh Vmk , obtida pelo metodo de Galerkin.
241
A projecao u
e(t) sera usada como vetor intermediario entre a solucao exata u(t) do
problema (8.3) e a solucao aproximada uh (t) do problema aproximado (8.2). Note que
sendo a projecao u
e(t) Vmk e i (x) uma base de Vm = Vmk podemos escrever,
u
e(x, t) =
m
X
ui (t)i (x),
(8.6)
i=1
(8.7)
Em [6], Douglas & Dupont provaram que valem as mesmas estimativas para as
derivadas no tempo, como podemos ver no seguinte Lema:
Lema 8.1. Sejam {u(t), u(t), u (t)} H k+1(), t [0, T ] e seja u
e(t) o interpolador
k
ku (t) u
e (t)km c2 hk+1m ku (t)kk+1
(8.8)
k 1.
242
Demonstracao:
Considere a decomposicao do erro dado por
e(t) = u(t) uh (t) = u(t) u
e(t) + u
e(t) uh (t) = (t) + (t),
onde u
e(t) e o interpolante de u(t) em Vmk . Somando e subtraindo u
e(t) em (8.4), obtemos
( (t) + (t), vh ) + a((t) + (t), vh ) = 0, vh Vmk
(8.9)
De (8.5), temos que a((t), vh ) = 0 e assim a equacao (8.9) pode ser escrita na
forma:
(t), vh + (t), vh + a (t), vh = 0, vh Vmk .
(8.10)
(8.11)
d
1d
2
|(t)|0 |(t)|0 =
|(t)|0 = (t), (t)
dt
2 dt
a (t), (t) = k(t)k21 + |(t)|20 0.
(8.12)
(t), (t)
| (t)(t)|dx = | (t)|0 |(t)|0
0
(8.13)
243
k 1.
(8.14)
(8.15)
(8.16)
ku(s)kk+1 .
(8.17)
(8.18)
ku(t)kk+1 ,
|u(t) uh (t)|0 |(t)|0 + |(t)|0 Ch
Note que para todo t [0, T ], por hipotese u(t) H k+1() e (t) L2 (). Assim
podemos tomar super essencial no tempo para obter a seguinte estimativa:
k+1 kukL (0,T ;H k+1 ()) .
ku uh kL (0,T ;L2 ()) Ch
(8.19)
Nas estimativas (8.16) e (8.18) para (t) na norma L2 (), observe que o erro aumenta quando o tempo finito t cresce, desde que todos os termos do lado direito sao
positivos.
244
para cada
t [0, T ] onde
k 1.
Demonstracao:
Considere em (8.10), vh = (t) Vmk . Entao,
| (t)|20 +
1d
k(t)k21 + ( (t), (t)) = 0
2 dt
1 2
| (t)|0 + | (t)|20
2
d
k(t)k21 | (t)|20 .
dt
Como | (t)|2 > 0 entao integrando os termos restantes de 0 a t, obtemos
| (t)|20 +
k(t)k21
k(0)k21
| (t)|2
(8.20)
k 1.
245
onde podemos notar uma perda de precisao de ordem O(h) na norma H01 (). Retornando a (8.20) obtemos
k
k(t)k1 Ch
k(0)k1 +
ku (s)kk+1 ds
(8.21)
(8.22)
b k ku(t)kk+1,
ku(t) uh (t)k1 Ch
(8.23)
Como anteriormente, tomando super essencial no tempo para obter a seguinte estimativa:
k
1
(8.24)
ku uh kL (0,T ;H ()) Ch kukL (0,T ;H k+1 ()) .
As estimativas (8.16) e (8.18) e (8.21), (8.23) nas normas L2 () e H01 () respectivamente, nao sao estimativas otimas, em razao do u
ltimo termo ser acumulativo, ou
seja, o erro aumenta quando o tempo t cresce. A seguir sera feita uma estimativa otima
para a norma L2 ().
Estimativa Otima
na Norma L2 ()
Teorema 8.3. Nas mesmas condicoes do Teorema (8.1) temos,
ku(t) uh (t)k0 c1 hk+1 ku(t)kk+1
onde k 1.
Demonstracao:
Seja i uma sucessao de autovalores associados aos autovetores wi do espaco H01 (0, 1),
satisfazendo a seguinte condicao:
2 wi
= i w i
x2
(8.25)
246
Observa
c
ao: Os autovetores wi = 2 sen(ix), por exemplo, e uma base ortonormal
e completa em H01 (0, 1) e os autovalores associados sao i = (i)2 .
Considere agora a equacao (8.12). Usando a equivalencia de normas em H01 () e a
desigualdade elementar (8.120) obtem-se
1d
|(t)|20 + |(t)|20 + |(t)|20 | (t)|0 |(t)|0.
2 dt
(8.26)
d
|(t)|0 + (1 + )|(t)|20 | (t)|0 |(t)|0 ,
dt
(8.27)
que e equivalente a
d
|(t)|0 + |(t)|0 | (t)|0 ,
dt
(8.28)
onde = 1 + .
Multiplicando (8.28) por et , obtemos
d t
e |(t)|0 et | (t)|0 .
dt
(8.29)
e |(t)|0 |(0)|0
es | (s)|0 ds,
que e equivalente a
t
|(t)|0 e
|(0)|0 +
t
0
|(t)|0 ch
Z t
t
e ku(0)kk+1 +
e(ts) ku(s)kk+1 ds .
(8.30)
Temos agora uma estimativa otima para o erro na norma L2 (), pois o erro decai
exponencialmente quando o tempo t cresce, concluindo a estimativa otima
247
8.1.2
Problema Discreto
Resultados Preliminares
Nota
c
ao e definic
ao
Inicialmente vamos introduzir o conceito de norma discreta para uma funcao w
dependente do tempo t. Denotaremos por w n = w(tn ) o valor de w no tempo discreto
tn = nt e
w n+1/2 = (w n+1 + w n )/2,
w n = w n+1 + (1 2)w n + w n1,
w n+ = w n+1 + (1 )w n ,
1
w n+ 2 = (w n+1 w n )/t;
(8.31)
n 21
n
n1
w
= (w w )/t;
1
n
w = (w n+ 2 w n1/2 )/t = (w n+1 w n1)/2t;
2 w n = (w n+1 2w n + w n1)/(t)2 ;
onde [0, 1] denota o parametro de Newmark.
kwkH 1 ()
m
m
1/2 X
X
w(xi ) 2 1/2
2
|w(xi )|
= h
+ h
x
i=1
i=1
248
Definimos as normas discretas do espacos L2 (0, T ; H) e L (0, T ; H), onde H pode ser
L2 (0, 1), H01 (0, 1) ou H 2 (0, 1),
kwkLb (0,T ;H) = max{kw n kH ,
n = 0, 1, , N 1},
= t
kwk2Le2(0,T ;H) = t
N
1
X
n=0
N
1
X
n=0
n = 0, 1, , N 1},
(8.32)
kw n k2H ,
1
kw n+ 2 k2H ,
+ ct
entao
1
X
n ,
n=0
exp(ct ),
= 0, , N ,
= 0, , N;
(8.34)
(8.35)
(8.36)
(8.37)
249
(8.39)
(8.41)
N
1 1
X
n1/2
N1 1
N1 1
n=1
N
1 2
X
n n+ 2
(8.42)
n n1/2 ,
(8.43)
n=1
e
t
N
1 1
X
n=1
onde 2 N1 N.
n+ 12
N1 1
N1
N
1 1
X
n=2
250
Decomposi
c
ao do Erro
Nas estimativas de erro que se seguem, considere a forma bilinear a(., .), definida
em (6.2) por
Z 1
Z 1
a(u, v) =
ux vx dx +
uv dx.
(8.44)
0
(8.45)
onde u
e e o interpolante de u em Vmk , ou equivalentemente u
e e conhecida como projecao
de Rayleigh-Ritz, ou seja, a projecao ortogonal da solucao exata u em Vmk , com respeito
a forma bilinear a(., .) da seguinte forma,
a(u(t) u
e(t), vh ) = 0,
t [0, T ],
vh Vmk ,
(8.46)
No Teorema (8.7) da proxima secao, sao mostrados resultados de existencia e unicidade de solucao para o Problema (6.1). Para obter as estimativas de erro no tempo
discreto, sao necessarios resultados adicionais mais regulares que daremos na seguinte
hipotese:
HC: Suponha que a forca f dada, a solucao u do Problema(6.1) e sua derivadas
tenham a seguinte regularidade:
f L2 (0, T ; H k+1(0, 1)), u L (0, T ; H01 (0, 1) H k+1 (0, 1))
(8.47)
com as derivadas {ut , utt , uttt } L (0, T ; H k+1(0, 1)).
M
etodo de Euler Regressivo
n = 1, 2, N,
251
n = 0, 1, N
(8.49)
v Vmk
e para todo n = 0, 1, , N.
(8.50)
(8.51)
Desde que estimativas de erro para o termo n sao conhecidos por (8.8) entao o objetivo
e estimar o termo n , para n = 0, 1, , N.
A formulacao fraca do problema (8.3) calculada no tempo discreto tn e dada por:
(
d n
u , v) + a(un , v) = (f n , v) , v H01 (0, 1)
dt
1
d n
u , v)
dt
(8.52)
(uh
(8.53)
252
( n 2 , vh ) + a( n , vh ) = (un 2
1
d n
u , vh ) (n 2 , vh ), vh Vmk .
dt
(8.55)
Mas
1
1
1
d
( n 2 , n ) + a( n , n ) = (n 2 , n ) + ( un un 2 , n )
dt
(
n 21
, ) =
1 n
( n1 ), n
t
1
k n k0 k n1k0 k n k0 ,
t
(8.56)
(8.57)
e temos tambem
1
1
1
1
d
d
(n 2 , n ) + ( un un 2 , n ) kn 2 k0 + k un un 2 k0 k n k0 .
dt
dt
Substituindo os dois u
ltimos termos em (8.56), obtem-se
1
1
1
d
k n k0 k n1k0 k n k0 +a( n , n ) kn 2 k0 +k un un 2 k0 k n k0 (8.58)
t
dt
Desde que
a( n , n ) = k n k21 + | n |20 0,
Note que
Logo
0 = u
e0 u0h = u
e0 u0 + u0 u0h = 0 + u0 u0h
(8.60)
253
k 1.
k+1
k k0 ch
1
N
1
N
X
X
1
d
n 12
ku0 kk+1 + t
k
k0 +
k un un 2 k0
dt
n=1
n=1
(8.61)
1 n
1
=
( n1 ) =
t
t
tn
(s) ds
tn1
k+1
n 21
k0
k (s)k0 ds ch
ku (s)kk+1 ds.
(8.62)
t
k
n=1
t0
t0
d n
d n
1 n
1
u un 2 =
u
(u un1 ).
dt
dt
t
Pela expansao de Taylor, temos
Z tn
tn1
tn1
tn
tn
u (s) ds
(tn1 s)u (s) ds =
(tn1 s)u (s)/tn1 +
t tn1
t
tn1
1
1
= unt +
un un1 = unt + un 2
t
(8.63)
254
n 21
1
k0
t
tn
tn1
1
ku kL (tn1 ,tn L2 (0,1))
t
tn
tn1
t
ku kL (tn1 ,tn L2 (0,1))
2
kunt un 2 k0
t X
ku kL (tn1 ,tn L2 (0,1)) CkukL (0,T ;L2 (0,1))
2 n=1
(8.64)
k+1
k k ch
n
o
k+1
(8.65)
(8.66)
(8.67)
kekL (0,T ;L2 (0,1)) = ku uh kL (0,T ;L2 (0,1)) c2 hk+1 + t
De forma analoga obtem-se a estimativa L (0, T ; H01(0, 1). Observe nesse caso, que
por causa da relacao
kN k1 = ku(t) u
e(t)k1 chk ku(t)kk+1
255
M
etodo de Crank-Nicolson
Teorema 8.5. Sob a hipotese (8.47), e os dados iniciais u0 H01 (0, 1) H k+1 (0, 1))
entao a solucao numerica obtida pelo metodo de Crank-Nicolson (6.17), tem a seguinte
estimativa de erro:
kekL (0,T ;L2 (0,1)) = ku uh kL (0,T ;L2 (0,1)) c2 hk+1 + (t)2
(8.68)
kekL (0,T ;H01 (0,1)) = ku uh kL (0,T ;H01 (0,1)) c1 hk + (t)2 ,
onde c1 e c2 sao constantes positivas, independentes de h e t.
Demonstracao:
Vamos inicialmente demonstrar a estimativa em L (0, T ; L2 (0, 1)).
A formulacao fraca do problema e dada por
(ut (t), v)0 + a(u(t), v) = (f, v)0 ,
v H01 (0, 1)
(8.69)
(ut
v H01 (0, 1)
v H01 (0, 1)
(8.70)
1 n+1
1
1
n+ 1
(u
un ) e uma aproximacao para ut com
onde g n = un+ 2 ut 2 e un+ 2 =
t
erro de O(t).
Por outro lado, para o problema aproximado, a formulacao e dada por
n+ 21
(uh
n+ 21
, vh )0 + a(uh
, vh ) = (f n+ 2 , vh )0 ,
vh Vmk
(8.71)
( n+ 2 , vh )0 + (n+ 2 , vh )0 + a( n+ 2 , vh ) = (g n , vh )0 ,
vh Vmk
(8.73)
256
a(n+ 2 , vh ) =
1
a(n+1 + n , vh ) = 0.
2
( n+ 2 , n+ 2 )0 + a( n+ 2 , n+ 2 ) = (g n n+ 2 , n+ 2 )0
(8.74)
n+ 21
n+ 21
)0
1 n+1 2
1
n 2
n+1
n n+1
n
k k0 k k0
(
,
+ )0 =
=
2t
2t
1 n+1
=
k k0 k n k0 k n+1 k0 + k n k0
2t
1
a( n+ 2 , n+ 2 ) = k n+ 2 k21 + k n+ 2 k20 0
(8.75)
(8.76)
1
1
1
(g n , n+ 2 )0 kg n k0 k n+ 2 k0
2
1
1
1
1
1
(n+ 2 , n+ 2 )0 kn+ 2 k0 k n+ 2 k0
2
Substituindo e multiplicando a desigualdade por 2t obtemos:
1
1
k n+1k0 k n k0 k n+1k0 + k n k0 t kg n k0 + kn+ 2 k0 k n+ 2 k0
1
t kg n k0 + kn+ 2 k0 k n+1 k0 + k n k0
N
1
1
N
X
X
n+ 12
k0 +
kg n k0
k k0 k k0 + t
k
N
n=0
n=0
(8.77)
257
Como estamos estimando na norma L2 (0, 1), entao devemos tomar m = 0 em (8.8),
obtendo-se
k 0 k0 c1 h(k+1) ku0 kk+1
(8.78)
Z
Z
N
1
tN
tN
X
1
t
kn+ 2 k0
ku(s)kk+1 ds
k (s)k0 ds c2 h(k+1)
(8.79)
t0
t0
n=0
(8.80)
Para obter a u
ltima igualdade, basta integrar por partes duas vezes.
N
1
X
n=0
(8.82)
(8.83)
Como por hipotese u0 H k+1 , u L1 (0, T, H k+1(0, 1)) e u L (0, T, L2 (0, 1)) entao
b > 0 tal que
existe um constante C
b k+1 + (t)2 ),
k N k0 C(h
ou seja, dizemos que o erro tem ordem (hk+1 + (t)2 ) , usualmente escrito na forma
k N k0 O(hk+1 + (t)2 ).
Por outro lado, tomando m = 0 em (8.8), obtemos
kN k0 = ku(t) u
e(t)k0 chk+1 ku(t)kk+1,
(8.84)
258
A demonstracao da estimativa de erro para o espaco L (0, T ; H01(0, 1)) pode ser
vista no proximo teorema, quando em particular, ( = 1/2).
Podemos constatar um perda de precisao no espaco, obtendo a seguinte estimativa:
kekL (0,T ;H01 (0,1)) = ku uh kL (0,T ;H01 (0,1)) C hk + (t)2
Famlia -M
etodos
Nesta secao faremos uma estimativa de erro para o metodo generalizado trapezoidal
ou -metodos, descrito em (6.18). Como mencionado anteriormente, essa famlia de
metodos engloba os metodos de Euler Progressivo ( = 0), Euler Regressivo ( = 1) e
Crank-Nicolson ( = 1/2).
Teorema 8.6. Sob a hipotese (8.47), e os dados iniciais u0 H01 (0, 1) H k+1 (0, 1))
entao a solucao numerica obtida pelo Metodo Generalizado Trapezoidal (6.18), para
[1/2, 1], tem a seguinte estimativa de erro:
kekL (0,T ;L2 (0,1)) = ku uh kL (0,T ;L2 (0,1)) C hk+1 + (t)m
(8.85)
kekL (0,T ;H01 (0,1)) = ku uh kL (0,T ;H01 (0,1)) C hk + (t)m ,
onde C e uma constante positiva e independentes de h e t. Alem disso, m = 2 se
1
1
= e m = 1 se 6= .
2
2
Demonstracao: Provaremos inicialmente a estimativa em L (0, T ; L2 (0, 1)).
Fazendo t = (n + 1) e t = n com pesos e (1 ) respectivamente em (8.3) e
somando os termos, obtemos
(utn+ , v) + a(un+ , v) = (f n+ , v) , v H01 (0, 1)
onde estamos denotando un+ = un+1 + (1 )un ,
[0, 1].
(8.86)
259
(8.87)
(uh
, vh ) + a(uhn+ , vh ) = (f n+ , vh ), vh Vmk .
(8.88)
n+ 21
(un+ 2 uh
(8.89)
( n+ 2 , vh )0 + (n+ 2 , vh )0 + a( n+ , vh ) + a(n+ , vh ) = (g n , vh )0 ,
vh Vmk (8.90)
( n+ 2 , vh )0 + a( n+ , vh ) = (g n , vh )0 (n+ 2 , vh )0 ,
vh Vmk
(8.91)
( n+ 2 , n+ ) + a( n+ , n+ )0 = (g n , n+ )0 (n+ 2 , n+ )0 ,
vh Vmk
(8.92)
1 n+1
(
n , n+1 + (1 ) n )
t
1 n+1 2
k k0 + (1 2)( n+1 , n ) (1 )k n k20 .
=
t
( n+ 2 , n+ )0 =
(8.93)
260
Note que, por hipotese [1/2, 1] entao o termo (12) 0. Assim podemos escrever
a seguinte desigualdade:
(1 2)( n+1, n ) (1 2)k n+1k0 k n k0 .
Alem disso, temos que
k n+ k0 k n+1k0 + (1 )k n k0
Substituindo as duas u
ltimas relacoes em (8.93) obtemos
h
i
h
i
1
k n+1 k0 k n k0 k n+1k0 +(1)k n k0 t kg n k0 +kn+ 2 k0 k n+1 k0 +(1)k n k0
Cancelando os termos comuns, e fazendo a soma para n = 0, 1 N 1, obtemos
N
1
1
N
X
X
n+ 12
kg n k0
k0 +
k k0 k k0 + t
k
N
(8.94)
n=0
n=0
Note que
N
1
X
n=0
k n+1k0 k n k0 = k N k0 k 0 k0
(8.95)
Vamos agora a analisar os dois termos restantes do lado direito de (8.102). Por
definicao
Z tn+1
1
1 n+1
n+ 21
n
(s) ds
=
=
t
t tn
Entao, tomando a norma em L2 (0, 1), obtemos
n+ 21
1
k0
t
tn+1
tn
k (s)k0 ds,
N
1
X
n=0
n+ 21
k0
N
1 Z tn+1
X
n=0
hk+1
tn
tN
k (s)k0 ds =
tN
k (s)k0 ds
(8.96)
261
Para o segundo termo de (8.102), observe que a funcao g n definida em (8.87) pode
ser decomposta na forma
1
1
1
n+1/2
n
u
)
= g1n + g2n
g n = un+ 2 utn+ = un+ 2 ut
) ( )(un+1
t
2 t
1 n+1
1
1 n+1
onde g1n =
ut + unt
e g2n = ( )(un+1
(u
un )
unt ).
t
t
2
2
(8.97)
(8.98)
onde a u
ltima igualdade e obtida integrando por partes duas vezes. Usando (8.82),
obtemos que
N
1
X
n=0
(8.99)
1
1
= ( )(un+1
unt ) = ( )
t
2
2
tn+1
u (s) ds
tn
Logo
1
kg2n k0 t| |ku kL (tn ,tn+1 ;L2 (0,1))
2
Somando de n = 1, , N 1 e multiplicando por t, temos
t
N
1
X
1
kg2n k0 t | | ku kL (0,T ;L2 (0,1))
2
n=1
(8.100)
262
N
1
X
n=1
kg k0 t
N
1
X
n=1
kg1n k0
+ t
N
1
X
n=1
kg2n k0
1
c1 (t) ku kL (0,T,L2 (0,1)) + t| | ku kL (0,T ;L2 (0,1))
2
2
1
+c1 (t) ku kL (0,T,L2 (0,1)) + t| | ku kL (0,T ;L2 (0,1))
2
2
(8.101)
(8.102)
Logo
kN k0 = ku(t) u
e(t)k0 chk+1 ku(t)kk+1,
(8.104)
(8.105)
Para = 21 ,
kekL (0,T ;L2 (0,1)) kkL (0,T ;L2 (0,1)) + kkL (0,T ;L2 (0,1)) C hk+1 + (t)2 , (8.106)
263
Vamos estimar o erro entre a solucao exata e aproximada na norma L (0, T ; H01(0, 1)),
completando a demonstracao do teorema.
Considere a igualdade dada por (8.91)
1
( n+ 2 , vh )0 + a( n+ , vh ) = (g n , vh )0 (n+ 2 , vh )0 ,
vh Vmk
(8.107)
k n+ 2 k20 + a( n+ , n+ 2 ) = (g n , n+ 2 )0 (n+ 2 , n+ 2 )0 ,
(8.108)
1
a( n+1 n , n+1 + (1 ) n )
t
1 n+1 2
n+1 n
n 2
k ka + (1 2)( , )a (1 )k ka .
=
t
a( n+ , n+ 2 ) =
(8.109)
a( n+ , n+ 2 )
1 n+1 2
k ka k n k2a
2t
k n+1k2a
k n k2a
N
1
X
n=0
264
Ou seja
k N k2a
k 0 k2a
+ t
N
1
X
n=0
(8.111)
Devido a equivalencia das normas k.ka e k.k1 , entao podemos usar a desigualdade (8.8)
como m = 1 para obter
k 0 k1 chk ku0 kk+1
Para os dois termos restantes, sabemos de (8.96) e de (8.101) que
t
N
1
X
n=0
N
1
X
n=1
kg n k0
(t)2
1
ku kL (0,T,L2 (0,1)) + t| | ku kL (0,T ;L2 (0,1))
2
2
(t)2
ku kL (0,T,L2 (0,1))
2
(8.112)
(8.113)
Para = 21 ,
kekL (0,T ;H01 (0,1)) kkL (0,T ;H01 (0,1)) + kkL (0,T ;H01 (0,1))
o que conclui o teorema
k
2
C h + (t) ,
(8.114)
265
Observa
c
ao
1 - Para concluir as estimativas para o -Metodos, faremos algumas consideracoes,
sem demonstrar, sobre o metodo quando [0, 1/2). No metodo das diferencas finitas,
ver por exemplo em ([19]), que nesse intervalo temos a convergencia condicionada a`
h2
r = t
. De forma analoga, no metodo de elementos finitos temos uma
2(1 2)
t
restricao similar, ou seja 2 f (). As estimativas de erro nesse intervalo, sao as
h
mesmas de (8.85). Note tambem que, o Metodo de Euler progressivo ( = 0), como ja
mencionado, e condicionalmente estavel.
2 - Note que as estimativas dependem do grau do polinomio interpolador, alem da
regularidade da solucao, como visto no Teorema(3.5). Do citado teorema, sabemos que
o erro de interpolacao (3.51) e dado por:
ku u
eks ch kukm ,
8.1.3
Exerccio
( n+ 2 , vh ) + a( n , vh ) = (un+ 2
1
d n
u , vh ) (n+ 2 , vh ), vh Vmk .
dt
(8.115)
266
8.2
Exist
encia e unicidade de solu
c
ao
d
(u(t), v) + a(u(t), v) = (f, v),
dt
(iii) u(0) = u0 .
Demonstracao:
Para provar o teorema, e introduzido um problema aproximado ao problema (6.1),
definido num subespaco de dimensao finita, que denotaremos por Vm . Determina-se
uma sucessao de solucoes aproximadas um Vm e a dificuldade principal e mostrar
que essa sucessao converge para a solucao u do problema original quando m .
Esse metodo foi primeiro empregado por Faedo-Galerkin. Seja T > 0 e Vm =
[w1 , w2 , ..., wm ], um subespaco vetorial gerado, onde {wi , i = 1, m} sao os mprimeiros elementos da base do espaco de Hilbert H01 (0, 1) (A existencia da base e uma
consequencia do espaco de Hilbert H01 (0, 1) ser um espaco separavel). Se um (t) Vm
entao ele pode ser representado por
um (t) =
m
X
(8.116)
i=1
267
m
X
i=1
(u0 , wi )wi u0 =
(u0 , wi )wi ,
i=1
quando m ,
onde gim (0) = (u0, wi ). Assim e natural a escolha de u0m como condicao inicial do problema em Vm . Observe que no problema aproximado a variavel tempo ainda e contnua
e que os produtos internos (., .) sao definidos somente na variavel espacial x. A ideia
da demonstracao consiste em mostrar que existe uma sequencia de solucoes um (x, t) do
problema aproximado (8.117) pertencentes ao subespaco Vm que sao limitadas, independente de m, possibilitando mostrar que essa sequencia converge para solucao exata
u(x, t), quando m , significando que cada vez mais o subespaco Vm se aproxime
do espaco H01 (0, 1).
Substituindo (8.116) em (8.117), obtemos
m
X
i=1
m
X
gim
(t)wi (x), v + a
gim (t)wi (x), v = (f, v) , v Vm
i=1
Como ., . sao definidos em Vm , podemos escrever
m
X
(t)
gim
m
X
wi (x), v +
gim (t) a wi (x), v = (f, v) , v Vm ,
i=1
i=1
i=1
Definindo as matrizes
A = aij = wi (x), wj (x) ,
B = bij = a wi (x), wj (x)
e F = Fj = f (t), wj (x) ,
gim
(t)
aij +
m
X
i=1
para j = 1, , m
t [0, T ]
Agm (t) + Bgm (t) = F (t),
(8.118)
268
onde gm (0) e a condicao inicial, gm (t) = (g1m (t), g2m (t), , gmm (t))T e um vetor incognita. Assim temos um sistema de m equacoes diferenciais ordinarias.
Para cada m o sistema (8.118) tem uma u
nica solucao gm (t) e portanto obtemos a
m
X
gim (t)wi (x) do problema (8.117) em Vm . Note que a solucao um (t)
solucao um (t) =
i=1
e local, desde que, o tempo t [0, Tm [, Tm > 0. O proximo passo e demonstrar que
as solucoes sao limitadas independente de m e t, que permitirao estender a solucao em
todo intervalo [0, T ] e obter a convergencia da sequencia um para u, solucao do problema
original no sentido do teorema. Para isso sao necessarios as seguintes estimativas:
Estimativa 1: Considere v = um (t) Vm em (8.117). Entao obtemos;
um (t), um(t) + a um (t), um (t) = f (t), um (t) .
Mas
e
(8.119)
d
|um (t)|2 = 2 um (t), um (t)
dt
a um (t), um (t) = kum (t)k2 + |um (t)|2 ;
|f (t)|2 + |um(t)|2 ;
4
na u
ltima desigualdade usamos a seguinte desigualdade elementar:
ab
a2
+ b2 ,
4
(8.120)
269
Mas por hipotese um (0) = u0m converge forte para u0 H01 (0, 1), u0m e limitada
em H01 (0, 1), para m suficientemente grande. Temos tambem que f L2 (0, T ; L2(0, 1))
e portanto o segundo termo do lado direito e limitado. Dessa forma podemos escrever
a desigualdade na forma:
Z t
2
|um (t)| +
kum (t)k2 c5 ,
(8.121)
0
Mas
um (t), um (t) = |um (t)|2 ,
(8.122)
1 d
1 d
1d
a um (t), um (t) =
kum (t)k2 +
|um (t)|2 =
a um (t), um (t) .
2 dt
2 dt
2 dt
e usando a desigualdade de Schwarz, juntamente com a desigualdade elementar (8.120)
com = 1/2, obtemos
1
f (t), um(t)
|f (t)|2 + |um(t)|2
2
Substituindo temos;
|um (t)|2 +
d
a um (t), um (t) |f (t)|2
dt
270
2
|um (t)| + a um (t), um (t) a um (0), um (0) +
|f (t)|2
0
Note que
a um (0), um (0) = kum (0)k2 + |um(0)|2 c6 kum (0)k2 ,
Por hipotese um (0) = u0m e limitada em H01 (0, 1) e f L2 (0, T ; L2 (0, 1)). Entao o
lado direito e limitada por uma constante, independente de m e t, permitindo concluir
que:
(iii) um e limitada em L2 (0, T ; L2 (0, 1))
(iv) um e limitada em L (0, T ; L2 (0, 1) H01 (0, 1)) = L (0, T ; H01(0, 1))
O espaco H01 (0, 1) tem imersao compacta em L2 (0, 1) e das estimativas (ii) e (iii),
segue do Teorema de Aubin-Lions, que a sequencia um C 0 ([0, T ; L2 (0, 1)). Como
esse espaco e um espaco metrico completo, entao da sequencia limitada um , podemos
extrair uma subsequencia u , que converge forte para u quase sempre em [0, T ] (0, 1),
ou seja,
lim max |u (t) u(t)|L2(0,1) = 0
0tT
i=1
Vimos que u L2 (0, T ; H01(0, 1)) C 0 (0, T ; L2 (0, 1)) e que u0 = u(0).
Converg
encia do Sistema Aproximado
Para concluir o teorema, resta mostrar, que a sequencia um converge para u em
L (0, T ; H01(0, 1)).
2
De fato, como um e limitada em L2 (0, T ; H01(0, 1)), entao podemos extrair uma
subsequencia de um tambem denotada por um , a qual converge para uma funcao u
L2 (0, T ; H01(0, 1)). Isto significa que
Z T
Z T
((um (t), v))(t)dt
((u(t), v))(t)dt, v H01 (0, 1) e L2 (0, T ).
0
271
Para o outro termo envolvendo a derivada no tempo temos da estimativa (iii), que um
e limitada em L2 (0, T ; L2(0, 1)), o que significa
Z T
Z T
d
d
(um (t), v)(t) dt
(u(t), v)(t)dt,
(8.124)
0 dt
0 dt
para todo v H01 (0, 1) e L2 (0, T ).
para todo v H01 (0, 1) e para todo L2 (0, T ). Do Lema Du Bois Raymond, ver
Medeiros ([13]) obtemos que
d
d
(um (t), v) + a(um (t), v) (u(t), v)) + a(u(t), v),
dt
dt
v H01 (0, 1)
em L2 (0, T ). Como o subespaco Vm e denso em H01 (0, 1), conclu-se que o sistema
aproximado (8.117) converge quando m para o sistema (6.1), ou seja
d
d
(um (t), v) + a(um (t), v) (f, v) (u(t), v) + a(u(t), v) (f, v),
dt
dt
v H01 (0, 1)
em L2 (0, T ).
Unicidade de Soluc
ao
Para concluir a demonstracao do teorema resta provar a unicidade de solucao, que
nesse caso e bem simples, dado que o problema (6.1) e linear. Suponha que existam duas
solucoes distintas u1(x, t) e u2 (x, t) e considere w(x, t) = u1 (x, t)u2 (x, t). Substituindo
no problema (6.1), obtemos
w(x, 0) = 0,
x (0, 1).
(8.126)
272
8.3
Nessa secao, vamos mostrar alguns resultados importantes para equacao parabolica
homogenea, que pode auxiliar em simulacoes numericas e o decaimento assintotico.
O princpio do maximo, garante que a solucao u nao pode ser maior e nem menor que
os dados iniciais e de fronteira. O decaimento exponencial garante que a energiado
sistema decai exponencialmente quando o tempo cresce indefinidamente.
Consideraremos IRn , um conjunto aberto e limitado com fronteira representada
por e o cilindro Q = (0, T ) e denotemos o conjunto C (Q), espaco das funcoes
infinitamente continua e derivavel nas variaveis x e t.
Teorema 8.8. (Princpio do maximo) Seja u a solucao do seguinte problema homogeneo;
(x, t) Q
ut (x, t) u(x, t) = 0,
u(x, t) = 0,
x e t [0, T ]
(8.127)
u(x, 0) = u0 (x)
x
onde u C 2 (Q). Entao a solucao satisfaz a seguinte condicao,
n
o
n
o
min inf u, 0 u(x, t) max sup u, 0 .
Demonstracao:
Se um dos extremos da funcao u pertence a fronteira entao o resultado e imediato.
Suponhamos que o ponto (x0 , t0 ) o seja um extremo da funcao nao pertence a
fronteira e provaremos o resultado por absurdo.
De fato, considere a funcao v = u + |x|2 . Entao v = v(x, t) satisfaz a seguinte
igualdade:
vt v = 2N < 0,
273
e definida negativa e por definicao cada termo da diagonal principal e negativo. Assim conclui-se que o laplaciano de v no ponto de maximo (x0 , t0 ) e negativo, ou seja
v(x0 , t0 ) 0. Logo
vt (x0 , t0 ) v(x0 , t0 ) 0,
o que contradiz a hipotese. Portanto o maximo deve pertencer a fronteira e
n
o
2
v(x, t) sup u0 + |x| , c
Fazendo 0 obtemos
u(x, t)
o
sup u0 , 0 .
De forma analoga, para mostrar o lado esquerdo da desigualdade, basta tomar o ponto
(x0 , t0 ) como o mnimo.
No proximo teorema vamos mostrar que a solucao do problema (8.127) decai exponencialmente;
Teorema 8.9. (Decaimento exponencial) Considere o problema ,
(x, t) Q
ut (x, t) u(x, t) + u(x, t) = 0,
u(x, t) = 0,
x e t [0, T ]
u(x, 0) = u0 (x)
x
(8.128)
274
Mas
ut u = (ut , u) =
Logo
1d 2
|u|
2 dt
Z
Z
d
2
E(t) = (u) + u2
dt
|u|2 =
( + )
E(t) 0
C()
Note que o lado direito e negativo, pois os termos E(t), e C() sao positivos.
Assim a funcao energia E(t) e decrescente. Resolvendo a equacao diferencial ordinaria
na variavel t, obtemos que
E(t) E(0) expt(+)/C())
Note que lim E(t) = E(0), isto e, a equacao do calor tem decaimento assintotico.
t
2 /L2
)t
Decaimento Assint
otico: Caso Discreto
Pelo Teorema(8.9), a energia associada a solucao do problema (8.128) satisfaz
Z
1
|u(s, t)|2 ds E(0) expkt
(8.130)
E(t) :=
2
onde k e uma constante positiva dependente de . Como em geral, a solucao exata do
problema nao e conhecida, entao nao temos como calcular a integral acima, e devemos
usar algum metodo numerico para calcular a integral, pois somente a solucao numerica
e conhecida. Para isso vamos calcular a integral e portanto a energia usando o metodo
dos trapezios por sua simplicidade. Para isso considere o tempo discreto tn = nt,
para n = 0, 1, , N e xi+1 = xi + h, i = 1, , m. Por simplicidade vamos considerar
o caso unidimensional no espaco e x [0, 1]. Logo a energia no tempo discreto e dada
por
Z
1
E(tn ) =
|u(s, tn )|2 ds E(0) expktn
(8.131)
2
275
n = 0, 1, , N
O proximo teorema garante que a equacao do calor (8.128) tem um efeito regularizante sobre o dado inicial u(x, 0) e a demonstracao pode ser encontrada em [2].
u(t) C (), para cada t > 0, mesmo que a temperatura inicial u(x, 0) seja descontnua.
Uma interessante consequencia do teorema anterior e que o problema com dado
final, ou seja, com a temperatura conhecida no final do processo, dado por,
(x, t) Q
ut (x, t) u(x, t) + u(x, t) = 0,
u(x, t) = 0,
x e t [0, T ]
(8.132)
u(x, T ) = uT (x),
x ,
nao tem solucao. Por outro lado se substiturmos o sinal do termo ut na primeira
equacao de (8.132)1 , ou seja, ut (x, t) u(x, t) + u(x, t) = 0,
(x, t) Q
entao teremos o mesmos resultados anteriores, bastando para isso fazer a troca de
variavel t por (T t).
CAPITULO 9
An
alise Num
erica:Equac
ao da Onda
9.1
Estimativa de Erro
Nessa secao serao feitas as estimativas de erro para as normas L2 () e H01 (), para
o problema semidiscreto e problema discreto. Consequentemente, em razao da estimativa otima e da regularidade da solucao, consideraremos k = 1 o grau de polinomio
interpolador e representaremos Vmk = Vm .
9.1.1
Problema Semidiscreto
Vimos em (7.3) que a formulacao fraca para a equacao da onda e dada por
onde
v H01 (0, 1)
v H01 (0, 1) .
ux (t)vx dx +
277
(9.1)
u(t)v dx,
(9.2)
278
(9.3)
(u uh , vh ) + a(u uh , vh ) = 0 , v Vm
v Vm ,
(9.6)
onde u
e(t) e definido por (8.6) e sao validas as estimativas (8.7).
Norma H01 ()
|uh (0) u
e (0)|0 c2 h,
(9.7)
onde u
e(0) e u
e(0) sao os interpoladores de u(0) e u(0) em Vm . Lembrando que poderamos ter tomado os dados iniciais uh (0) e uh (0) como os proprios interpoladores,
ou seja uh (0) = u
e(0) e uh (0) = u
e (0), desde que sao dados do problema.
279
Teorema 9.1. Sejam os dados iniciais satisfazendo (9.7) e {u, u, u} L (0, T ; H01
H 2 . Entao o erro entre a solucao aproximada uh (x, t) e a solucao exata u(x, t) na
norma H01 (0, 1) e de ordem O(h), ou seja, satisfaz a seguinte estimativa,
ku uh kL (0,T ;H01 (0,1)) + ku uh kL (0,T ;L2 (0,1)) ch,
(9.8)
t [0, T ]
(9.9)
Observa
c
ao A constante c nao depende de h, mas depende da solucao u(x, t) e
tambem depende do intervalo t [0, T ]. Assim a sequencia dos valores de c associados
com a sucessao de intervalos do tempo [0, T ] pode tender ao infinito quando t
e dessa forma nada podemos afirmar sobre o comportamento assintotico do erro neste
caso.
Demonstracao:
Seja e(t) = u(t) uh (t) = (u(t) u
e(t)) + (e
u(t) uh (t)) = (t) + (t), onde u
e(t) e o
interpolante de u(t) em Vm . Somando e subtraindo u
e(t) em (9.5), obtemos
( (t), vh ) + ( (t), vh ) + a((t), vh ) = 0 , vh Vmk ,
(9.10)
onde, por (9.6), a((t), vh ) = 0. Como (t) e (t) pertencem a Vm para todo t [0, T ],
podemos escolher vh = (t) na forma fraca (9.10), obtendo
( (t), (t)) + ( (t), (t)) + a((t), (t)) = 0,
(9.11)
o
1 dn 2
| (t)|0 + k(t)k2a = ( (t), (t)),
2 dt
(9.12)
que e equivalente a
2
2
2
2
| (t)|0 + k(t)ka | (0)|0 + k(0)ka + 2
| || | ds
0
(9.13)
Z T
Z T
| (0)|20 + k(0)k2a +
| |2 ds +
| |2 ds
280
Note que k(t)k2a = k(t)k21 + k(t)k20 e usando a hipotese (9.7) obtemos que
| (t)| +
k(t)k2a
(Ch) +
| (s)|2 ds,
t [0, T ]
(9.14)
t [0, T ]
b
| (t)| + k(t)ka Ch.
Note que
b
min{, } (k(t)k1 + |(t)|0) k(t)ka = kk1 + ||0 Ch
b
C
h
min{, }
Norma L2()
Para obter a Estimativa na erro na norma L2 (), e necessario que os valores iniciais
sejam mais precisos, devem ser tomados a satisfazer pelo menos a estimativa,
kuh (0) u
e(0)k1 c1 h2 ;
|uh (0) u
e (0)|0 c2 h2 ,
(9.16)
Teorema 9.2. Sejam os dados iniciais satisfazendo (9.16) e {u, u, u} L (0, T ; H01
H 2 . Entao o erro entre a solucao aproximada uh (x, t) e a solucao exata u(x, t) na norma
L2 () e de ordem O(h2 ), ou seja, satisfaz a seguinte estimativa,
ku uh kL (0,T ;L2 ()) + ku uh kL (0,T ;L2 ()) ch2 ,
(9.17)
281
Note que, pela definicao da norma L (0, T ), para obter a estimativa (9.17) e suficiente obter a seguinte estimativa,
ku(t) uh (t)k0 + |u (t) uh (t)|0 ch2 ,
t [0, T ].
(9.18)
(t)|20
k(t)k2a
(0)|20
k(0)k2a
t
2
| | ds +
t
0
| |2 ds.
(9.19)
Para obter a estimativa em L2 (), nao estamos interessado numa limitacao para o
termo k(t)ka que e equivalente a |(t)|0. Esse termo positivo pode ser removido do
lado esquerdo da desigualdade (9.19). Entao da desigualdade de Gronwall, obtem-se
(9.20)
| (t)|20 C2 | (0)|20 + k(0)k21 + | |2L2 (Q) .
Da mesma forma como obtemos (8.18) usando o Teorema Fundamental do Calculo,
para w(0) L2 (), w L2 (), existe uma constante positiva c tal que;
|w(t)|20
|w0 |20
|w (s)|20 ds ;
t [0, T ].
(9.21)
(t)|20
Z t
2
C2 | (0)|0 +
| (s)|20 ds ;
t [0, T ].
(9.22)
2
2
2
|e (t)|0 C3 | |L2 (Q) + | (0)| + k(0)k1 + | (0)|0
(9.23)
Z t
2
C4 |e0 |0 +
|e (s)|20 ds ;
0
t [0, T ]
(9.24)
282
2
|e(t)|0 + |e (t)|0 C5 | |2L2 (Q) + | (0)|2 + k(0)k21 + | (0)|20 + |(0)|20
+|(0)|20
onde foi adicionado o termo positivo
(|e(s)|20
+ |e
Definindo
(s)|20 )
ds
(9.25)
(t) C +
(s) ds.
0
(9.26)
1. Fazendo m = 0 e k = 1 em (8.8)temos
| |20 c2 h4 ku k22
2. De (9.16),
k(0)k21 = kuh (0) u
e(0)k21 c1 h4
Assim, como a norma Euclidiana em qualquer espaco de dimensao finita e equivalente a norma definida pela soma dos valores absolutos das componentes dos vetores,
segue que
2
|e(t)|0 + |e (t)|0 2|e(t)|20 + 2|e (t)|20 C7 h4 ,
t [0, T ]
283
t [0, T ]
(9.27)
9.1.2
Problema Discreto
M
etodo de Newmark
Considere o sistema (7.8) e a seguinte aproximacao para (7.8)1
n+1
n
n1
u
2u + u
A
+ Bun = F n .
(t)2
Multiplicando a equacao por (t)2 , obtemos
A un+1 2un + un1 + (t)2 Bun = (t)2 F n ,
(9.28)
Dados Iniciais
Para inicializar o algoritmo (9.29), para obtencao das solucoes aproximadas u2 , u3 , , uN ,
correspondentes aos tempos 2t; 3t; ; Nt = T precisamos conhecer os valores
u1 e u0 . Para obter a estimativa de erro, sao necessarios estimar os valores iniciais.
Dessa forma segue o Lema:
284
(9.30)
(9.31)
m
X
i=1
u0 (xi )i (x) Vm
Por outro lado, no tempo t1 = t, a solucao exata u(x, t1 ) nao e conhecida e assim
nao e possvel determinar diretamente a sua interpolante u
e(x, t1 ) = u
e1 (x). Entretanto,
podemos determinar uma aproximacao u(x) para a solucao exata u(x, t1 ) = u1 (x),
fazendo uma expansao de segunda ordem pela serie de Taylor da solucao exata u, na
vizinhanca do tempo t0 = 0, ou seja
u1 = u0 + tu0 +
(t)2
u .
2! 0
(9.32)
2u
(0) u(0) + f (0).
x2
(9.33)
285
Supondo que a solucao u seja suficientemente regular, tal que u L (0, T, H01())
entao temos que
Z t
(t s)2
1
1
c(t)3
(9.34)
ku u k1 ku kL (0,T,H01 ())
2!
0
onde c independe de t.
entao para x = xi , u
e (xi ) = u (xi ). Logo, podemos tomar, como solucao aproximada
no tempo t1 , a funcao u1h (x) = u
e1 (x).
Entao, usando a desigualdade triangular,
u1 u
e1 k1 + ke
u1 u1h k1
u1 u1h k1 c(t)3 + k
ku1 u1h k1 ku1 u1 k1 + k
(9.36)
c(t)3 + k1 k1 c1 (t)3 + h
De forma equivalente, substituindo a norma k.k1 pela norma k.k0 temos a seguinte
estimativa:
1 1
(e e0 ). Logo
t
1
1
0
2
2
1/2
ke k0 + ke k0 c3 h + (t)
ke k0
t
ke1 k1 + ke0 k1 + ke1/2 k0 c h + (t)2 .
Portanto
2
3
ke k0 c2 h + (t)
1
(9.38)
286
(9.39)
onde
ku uh kLb (0,T ;L2 () + k(u uh )kLe (0,T ;L2 ()) C(h2 + (t)2 )
(a) Para
(b)
Demonstracao:
(9.40)
287
(9.41)
Considere a decomposicao do erro na forma e = u uh = u u
e + u
e uh = + ,
onde u
e e o interpolante de u em Vm , ou equivalentemente u
e e a projecao da solucao
exata u em Vm , com respeito ao produto interno da energia ( , )a , ou seja,
a(u u
e, v) = a(, v) = 0,
t [0, T ];
v Vm ,
v H01 ().
(9.43)
v H01 ()
v H01 ()
(9.44)
2 n
onde g n = ( 2 un un
e a aproximacao do termo (utt ) no tempo por diferencas
tt ) e u
finitas, dado em (8.31).
288
vh Vm
(9.45)
( 2 n , vh )0 + ( 2 n , vh )0 + a( n , vh ) + a(n , vh ) = (g n , vh )0 ,
vh Vm
(9.47)
Considere em particular,
1 n+ 1
1 n+1
vh =
2 + n1/2 =
n1 .
2
2t
Substituindo no primeiro termo de (9.47) e observando que
1 n+1
1 n+1
n
n1
n
n
n1
2 n
=
2 +
=
(
) ( )
(t)2
(t)2
1 n+ 1
2 n1/2 ,
=
t
temos
1
1
1
1
( 2 n , vh )0 =
( n+ 2 n1/2 ), ( n+ 2 + n1/2 )
t
2
0
(9.48)
1
n+ 21 2
n1/2 2
k
=
k0 k
k0
2t
Para o terceiro termo de (9.47), usando a notacao (9.2) temos
n+1 n+1
1 n n+1
,
n1 =
,
n1
a( n , vh ) = ( n , vh )a =
2t
a
2t
a
1 2
+
n , n+1 n1 +
n1, n+1 n1
2t
2t
a
a
n
Somando e subtraindo o termo convenientemente, obtemos que
n+1
1 n n+1
,
n1 +
2 n + n1, n+1 n1
( n , vh )a =
2t
2t
a
a
1
( n+1, n )a ( n , n1)a +
n+1 n , n+1 n
=
2t
2t
a
+
n+1 n , n n1
n n1, n+1 n
a
a
2t
2t
1
n
n1 n
n1
n+1 n
n n1
,
=
( , )a ( , )a
2t
2t
a
n+1
k
n k2a k n n1k2a
+
2t
(9.49)
289
(9.50)
Observe que a(n , vh ) = a un u
en , vh = 0, pois (u u
e) e ortogonal ao subespaco
Vm com relacao ao produto interno (., .)a , independente do tempo.
(k
0 k2a )
= t
N
1
X
n=1
g n 2 n , n+ 2 + n1/2
(9.51)
N
1
X
g ,
n+ 21
n1/2
n=1
N
1
X
2 n
n+ 21
n1/2
o
(9.52)
n=1
N
1
X
n=1
g ,
n+ 21
n1/2
= t
t
N
1
X
g ,
n=1
N
1
X
n=1
n+ 21
+ t
N
1
X
g ,
n=1
n1/2
1
kg n k0 k n+ 2 k0 + k n1/2 k0
290
N
1
X
n=1
N
1
X
2
=
kg n k0 k n+ 2 k0
n=1
kg n k20
N 1
N 1
1
t X n 2 t X
kg k0 +
k n+ 2 k20
2 n=1
2 n=1
N 1
1
t X
t
+
k n+ 2 k20 +
k 1/2 k20
2 n=1
2
N 1
1
t
t X
k n1/2 k20 +
kgk2Lb2 (0,T ;L2 ) +
k N 1/2 k20 ,
2
2 n=1
2
N
1
X
n=1
kg n k0 k n1/2k0
N 1
1
t X
k n1/2 k20
kgk2Lb2(0,T ;L2 ) +
2
2 n=1
N
1
X
1
2
t
g ,
k n1/2 k20
+
kgkLb2 (0,T ;L2 ) + t
0
(9.53)
n=1
n=1
t
+
k N 1/2 k20
2
Para o segundo termo do somatorio em (9.52), usando a desigualdade elementar e
(8.39), obtem-se que
N
1
X
n=1
n+ 21
2 n
( ,
n1/2
n+ 21
) t
N
1
X
2 n
( ,
n=1
N
1
X
N 1
1
t
t X
k n+ 2 k2 +
+
2 n=1
2
n1/2
N 1
t X 2 n 2
)0
k k
2 n=1
N 1
t X
k k +
k n1/2 k2
2
n=1
n=1
2 n 2
N 1
N
1
X
t X 2 n 2
t
k k + t
k n1/2 k2 +
k N 1/2 k2
n=1
2
n=1
(9.54)
N
1
X
1
t
2
ktt kLb2 (0,T ;L2 ) + t
k n1/2 k2 +
k N 1/2 k2
2
n=1
C t
N
1
X
n=1
k n1/2 k2 + 2
(9.55)
291
(9.56)
N
1
o
n
X
2
C + t
k n1/2 k2
n=1
Todos os procedimentos feitos tem por objetivo aplicar o Lema (8.2), para obter a
limitacao (8.35), que e o analogo discreto do Lema de Gronwall. Para isso sao necessarios que as constantes do lado esquerdo da desigualdade sejam todas positivas.
Como e um n
umero arbitrario, real e positivo entao para que a constante (1 t)
seja positiva e necessario que < 1/t. Por outro lado, para que a constante ( 1/4)
seja nao negativa e necessario que 1/4. Dessa forma para obter a convergencia da
famlia dos metodos, denominados metodos de Newmark, a constante tem que ser
maior ou igual a 1/4. Para concluir a demonstracao, vamos considerar dois casos:
(i) > 1/4
(ii) = 1/4
Caso (i): > 1/4
n
o
b = min 1 t, 1/4, 1/4 > 0. Tomando o
C
b
mnimo em (9.57) e dividindo por C,
Definimos < 1/t e
k N 1/2 k20
+ k +
N 1 k2a
+ k
N 1 k2a
C
b
C
N
1
o
n
X
n1/2 2
2
+ t
k
k
n=1
Como
k N 1/2 k20 + k N k2a + k N 1 k2a k N 1/2 k20 + k N + N 1k2a + k N N 1 k2a
Entao
k N 1/2 k20
k N k2a
k N 1 k2a
C1 + t
N
1
X
n=1
k n1/2 k20
(9.58)
292
An
alise de
O objetivo e estimar cada termo de definido em (9.56), ou seja, mostrar que
todos os termos sao independentes de t.
A funcao g n , definida em (9.44) e dada por g n = 2 un un
cao do
tt . Usando a defini
peso temos que
2 n
n+1
n
n1
2 n
n
n+1
n
n1
2 un un
=
(u
+
(1
2)u
+
u
=
2u
+
u
tt
tt
tt
tt
tt
tt
tt
tt
Mas, integrando por partes quatro vezes obtemos que:
Z
Z tn1
o
1 n tn+1 (tn+1 s)3
(tn1 s)3
u
(s)ds
+
u
(s)ds
= 2 un untt
tttt
tttt
(t)2
3!
3!
tn
tn
tn
tn
= (t)2 2 utt
tn
tn
tn
2
k0
k
+kutttt kL (tn1 ,tn ;L (0,1))
3!
tn1
Z tn+1
n
k(tn+1 s)k0 ds
+ kutttt kL (tn ,tn+1 ;L2 (0,1))
+kutttt kL (tn1 ,tn ;L2 (0,1))
tn
tn
tn1
k(tn+1 s)k0 ds
293
(9.59)
= t
N
1
X
n=1
(9.60)
= t
N
1
X
n=1
(9.61)
(9.62)
(9.63)
Retornando a (9.58),
n
k N 1/2 k20 + k N k21 +k N 1k21 C h2 kutt k2L2 (0,T ;L2 ()) + (h + (t)2 )2
4
+t
+ t
N
1
X
n=1
k n1/2 k20
(9.64)
(9.65)
294
(9.66)
1N T
+ (t)2 ).
kkLb (0,T ;H 1 ()) + kkLe (0,T ;L2 ()) C(h
0
vh =
=
+
2
2t
k N 1/2 k2a
k 1/2 k20
k 1/2 k2a
+ t
N
1
X
n=1
2 n
g ,
n+ 21
N
1
X
g ,
n=1
n+ 21
n1/2
N
1
X
1
2
kgkLb2 (0,T ;L2 ) + t
k n1/2 k20
n=1
t
+
k N 1/2 k20
2
n1/2
(9.68)
295
N
1
X
N
1
X
1 2
+
) k kLb2 (0,T ;L2 ) + t
( ,
t
k n1/2 k20
n=1
n=1
t
N 1/2 2
k
k0
+
2
Substituindo os dois u
ltimos termos em (9.68) e usando a equivalencia de normas k.k1
e k.ka , obtemos a seguinte limitacao:
2 n
n+ 21
n1/2
1
(1 t)k N 1/2 k20 +k N 1/2 k21 k 1/2 k20 + k 1/2 k21 + kgk2Lb2(0,T ;L2 )
N
1
X
1 2
+ k kLb2 (0,T ;L2 ) + 2t
k n1/2k20
n=1
c1 k 1/2 k20
k 1/2 k21
kgk2Lb2(0,T ;L2 )
+ t
N
1
X
n=1
k n1/2 k20
(9.69)
onde c1 = max{
c, 1/} Todos os termos do lado direito de (9.69) sao limitados e
independentes do tempo t, entao podemos aplicar o Lema(8.2), analogo discreto do
Lema de Gronwall, para obter a seguinte limitacao:
k N 1/2 k20 c1 k 1/2 k20 + k 1/2 k21 + kgk2Lb2(0,T ;L2 ) + k k2Lb2 (0,T ;L2 )
Mas usando (9.60), (9.66) e (9.62) obtemos a estimativa
k N 1/2 k20 c2 h + (t)2 .
Da definicao de norma,
296
1/2
2
2
k0 + k k0 + k k0 c h + (t)
1
(9.71)
Teorema 9.4. Sob a hipotese (9.39) e os dados iniciais u0 H01 (0, 1) H 2 (0, 1)) e
u1 H01 (0, 1) entao a solucao aproximada {wh , uh } do Problema (7.19) obtida pelo
-metodo (7.23), para (, ) 1/2, tem a seguinte estimativa:
kw wh kL (0,T ;L2 (0, 1)) + ku uh kL (0,T ;H01 (0, 1)) C h + (t)m .
(9.72)
(9.73)
297
(wh
n+ 21
, vh ) + a(uhn+ , vh ) = (f n+ , vh )0 ,
e (uh
, h ) (whn+ , h )
(9.75)
(e1
n+ 12
, vh ) + a(e2n+ , vh ) = (g n , vh ) e (e2
, h ) (e1n+ , h ) = (n , h )
(9.76)
onde e1 = w wh e e2 = u uh .
(9.77)
(9.78)
1 n 2
1
kg k + kn k2 + 2 ken+1
en2 k2a + 1 ken+1
en1 k2
2
1
2
1
1
1 n 2
kg k + kn k2
2
1
Como 2 ken+1
en2 k2a 0 e 1 ken+1
en1 k2 0, entao
2
1
ken+1
k2a ken2 k2a + ken+1
k2 ken1 k2
2
1
1
1 n 2
kg k + kn k2
2
1
(9.79)
298
2
keN
1 k
ke02 k2a
ke01 k2
N 1
N 1
1 X n 2
1 X n 2
kg k +
k k
+
2 n=0
1 n=0
(9.80)
De (8.101)
kgk2Lb2(0,T ;L2 ())
= t
N
1
X
n=1
kg n k20
1
ca (t)4 kw k2L2 (0,T ;H 2 ) + 2( )2 (t)2 kw k2L2 (0,T ;H 2 )
2
kk2Lb2 (0,T ;H 1 ())
0
= t
N
1
X
n=1
kn k21
1
cb (t)4 ku k2L2 (0,T ;H 2 ) + 2( )2 (t)2 ku k2L2 (0,T ;H 2 )
2
0 2
0 2
Para os dados iniciais, temos pelo menos, ke2 ka + ke1 k0 c3 h2 .
(9.81)
(9.82)
9.1.3
1))
1))
c5 h + (t)2 .
(9.85)
Exerccios
299
9.2
Exist
encia e unicidade de solu
c
ao
Teorema 9.5. Dados f L2 (0, T ; L2 (0, 1)), u0 (x) H01 (0, 1) e u1 (x) L2 (0, 1), entao
existe uma u
nica solucao u : Q = [0, T ](0, 1) IR para o problema (6.1) satisfazendo
a seguinte condicao:
(i) u L (0, T ; H01(0, 1))
(ii) u L (0, T ; L2(0, 1))
(iii) u L2 (0, T ; H 1(0, 1))
(iv)
d
(u (t), v) + a(u(t), v) = (f, v),
dt
u (x, 0) = u1 (x),
x (0, 1).
* {A igualdade deve ser entendida no sentido das distribuicoes em (0, T ), representada por D (0, T )}.
Demonstracao:
Antes de iniciar a demonstracao, vamos verificar se faz sentido os dados iniciais
u(x, 0) = u0 (x) H01 (0, 1) e u (x, 0) = u1 (x) L2 (0, 1). Com efeito, seja u(x, t)
satisfazendo as condicoes do teorema. Usando o (1.5.2) a as condicoes (i) e (ii), obtemos
que u C 0 ([0, T ]; L2 (0, 1)) e u Cs ([0, T ]; H01(0, 1)) e de (ii) e (iii) obtemos que
u C 0 ([0, T ]; H 1(0, 1)) e u Cs ([0, T ]; H01(0, 1)), e assim faz sentido calcular u(x, 0)
e u (x, 0).
Sistema aproximado: Seja T > 0 e {wi , i = 1, m} uma base base do espaco
de Hilbert H01 (0, 1), que e um espaco separavel. Considere Vm = [w1 , w2 , ..., wm ], um
subespaco vetorial gerado pelos m-primeiros elementos da base wi . Entao qualquer
funcao um (t) Vm tem a seguinte representacao
um (t) =
m
X
(9.86)
i=1
300
(9.87)
1d
|u (t)|2 = (um (t), um (t)),
2 dt m
1d
kum (t)k2a = a(um (t), um (t)),
2 dt
usando a desigualdade de Schwarz e elementar temos
(f (t), um(t))
1
(|f (t)|2 + (|um (t)|2 )
2
kum (t)k2a
|um (0)|2
kum (0)k2a
t
2
|f (s)| ds +
|um(s)|2 ds
Por hipotese
1. um (0) = u1m converge forte para u1 em L2 (0, 1), o que significa lim |u1m u1 | = 0
m
2. um (0) = u0m converge forte para u0 em H01 (0, 1), entao, lim ku0m u0 k = 0.
m
t
0
|f (s)|2 ds
|f (s)|2 ds c.
301
kum (t)k2a
|um (s)|2
|um (s)|2 ds
(9.88)
(9.89)
c1
ds c1
(9.90)
Passagem do Limite
De (9.89) e (9.90), sendo os espacos L2 (0, T ; L2(0, 1)) e L2 (0, T ; H01(0, 1)) completos,
existem subsequencias de (um )mN , tambem denotadas por (um ) tais que:
1. um converge fraco para u em L2 (0, T ; H01(0, 1)), denota-se, um u.
2. um converge fraco para u em L2 (0, T ; L2 (0, 1)), denota-se, um u .
Observa
c
ao: Deve-se tomar cuidado com a segunda afirmacao, na verdade precisamos
provar que realmente um u . Com efeito suponha que um em L2 (0, T ; L2(0, 1)).
Da primeira convergencia temos que um u em L2 (0, T ; H01(0, 1)) L2 (0, T ; L2(0, 1)).
dum
Entao um u em D (0, T ; L2 (0, 1)). Por definicao de distribuicao, temos que
=
dt
du
= u em D (0, T ; L2 (0, 1)). Por outro lado um em L2 (0, T ; L2 (0, 1))
um
dt
D (0, T ; L2 (0, 1)). Assim da unicidade do limite conclui-se que = u .
302
(um (t), v)
dt
(9.91)
d
d
(um (t), v) (u (t), v), quando m em D (0, T ), v L2 (0, 1).
dt
dt
(9.92)
Logo
a(um (t), v) dt
Ou seja
Z
T
0
Portanto
a(um (t), v) a(u(t), v), quando m em D (0, T ), v H01 (0, 1).
(9.93)
no sentido de D (0, T )
.
9.3
303
Regularidade e Conservac
ao de Energia
u (x, 0) = u1 (x),
x .
Demonstracao:(Ideia)
Para a demonstracao, basta fazer as estimativas para a equacao original como no
Teorema(9.5) e depois para sua derivada em relacao ao tempo, pois temos a hipotese de
que f
L2 (0, T ; L2 ()). A seguir o resultado e obtido por teoremas de compacidade.
t
Teorema 9.7. Seja () um aberto e limitado do IRn . Dados f L2 (0, T ; H01()),
u0 (x) H01 () H 2 () e u1 (x) H01 (), entao existe uma u
nica solucao u : Q =
[0, T ] IR para o problema (6.1) satisfazendo a seguinte condicao:
(i) u L (0, T ; H01() H 2 ())
(ii) u L (0, T ; H01())
(iii) u L2 (0, T ; L2 ())
(iv) u u + u = f ,
(v) u(x, 0) = u0 (x),
u (x, 0) = u1 (x),
x .
304
Demonstracao:(Ideia)
Para a demonstracao, a base escolhida para o subespaco Vm sao os autovalores do
operador Laplaciano, estimativas e resultados de compacidade.
A seguir vamos mostrar uma importante propriedade da equacao da onda homogenea, ou seja, quando f = 0.
Conservac
ao de Energia
Definimos a energia da equacao da onda, como a soma da energia cinetica e potencial
por:
Z
Z
Z
1
2
2
|u | + |u| + |u|2
(9.95)
E(t) =
2
t > 0.
Integrando de 0 a t, obtemos
Z
Z
Z
Z
Z
1 Z
1
2
2
2
2
2
|u(t) | + |u(t)| + |u(t)|
|u1| + |u0 | + |u0 |2 = 0;
2
2
t > 0.
APENDICE
A
Programas computacionais:
linguagem C
PEU.cpp
typdef.h
grid.h
solver.h
PEB.cpp
elast.cpp
Calortrapezoidal.cpp
MetodoNewmark.cpp
305
306
A.1
Problema estacion
ario unidimensional PEU.cpp
/* Problema Estacion
ario Unidimensional(PEU)
Metodo de Elementos finitos
- (Alpha)u + (Beta)u = f(x)
tipo=1: u() prescrita
tipo=2: du() prescrita
Linear solver: Tri-diagonal matrix
*/
#include <stdio.h>
#include <math.h>
#include <string.h>
#define
#define
#define
#define
FILE
int
int
float
float
float
float
float
float
float
Nosm
Nelm
Xi1
Xi2
102
101
-sqrt(3)/3
sqrt(3)/3
*f1;
Nel,Nos;
tipo1,tipo2;
X[Nosm], Xe[3];
H[Nelm];
K[Nosm][4];
F[Nosm],D[Nosm];
Alpha,Beta;
A1,A2,dl,v[2];
Uex[Nosm];
void InputData()
{
printf("Constante Alpha = ");
scanf("%f", &Alpha);
printf("Constante Beta = ");
scanf("%f", &Beta);
fprintf(f1,"Alpha = %f\n", Alpha);
fprintf(f1,"Beta = %f\n", Beta);
printf("\n\nNumeros de elementos = ");
scanf("%d", &Nel);
fprintf(f1,"Numero de elementos = %d\n", Nel);
307
308
return
return
e;
(e+1);
}
float Xi(int e, float x) /* Transf. isoparametrica */
{
return (Xe[1] + H[e]/2*(x+1));
}
void MatrizRigidez()
{ int e;
float K11,K22,K12,K21;
for (e=1; e<=Nel; e++)
{
CoordLocal(e);
K11 = Alpha/H[e] + Beta/3*H[e];
K22 = Alpha/H[e] + Beta/3*H[e];
K12 = -Alpha/H[e] + Beta/6*H[e];
K21 = -Alpha/H[e] + Beta/6*H[e];
/* Matriz Rigidez */
K[e][2] += K11;
K[e][3] = K12;
K[e+1][1] = K21;
K[e+1][2] = K22;
}
}
float forca(float x)
{
return x;
/* funcao de forca prescrita */
}
float g1(int e, float x)
{
return (.5*forca(Xi(e,x))*(1 - x));
}
float g2(int e, float x)
{
return (.5*forca(Xi(e,x))*(1 + x));
}
309
310
}
void LinearSolver(float M[Nosm][4], float F[Nosm],float X[Nosm])
{ int i;
float y;
for (i=1; i<Nos; i++)
{
y = M[i+1][1]/M[i][2];
M[i+1][2] += -y*M[i][3];
F[i+1] += -y*F[i];
}
/* Retro-Substituicao */
X[Nos] = F[Nos]/M[Nos][2];
for (i=Nos-1; i>=1; i--)
X[i] = (F[i]-M[i][3]*X[i+1])/M[i][2];
}
void SolExata()
{ int i;
float Gama = sqrt(Beta/Alpha);
float c1 = exp(Gama);
float c2 = exp(-Gama);
float c3 =(A2-(1./Beta));
float c4 =(A1*c2);
float c5 =(A1*c1);
float c6 =((1./Beta)-A1);
float c8 =(Gama*(c1+c2));
float U1[Nosm],U2,U3;
for (i=1; i<=Nos; i++)
U1[i]=1./Beta*X[i];
switch (tipo1)
{ case 1:
{
switch (tipo2)
{ case 1:
/*cond. fronteira:u(x[1])=A1 e u(x[Nos])=A2*/
/*tipo1-case1,tipo2-case1*/
{ for (i=1; i<=Nos; i++)
{ U2= (c3-A1*c2)*pow(c1,X[i]);
311
U3= (A1*c1-c3)*pow(c2,X[i]);
Uex[i]= U1[i]+1./(c1-c2)*(U2+U3);
}
break;
}
case 2:
/*cond. fronteira:u(x[1])=A1 e Du(x[Nos]=A2*/
/*tipo1-case1, tipo2-case2*/
{ for (i=1; i<=Nos; i++)
{ U2=(c3+Gama*c4)*pow(c1,X[i]);
U3=(Gama*c5-c3)*pow(c2,X[i]);
Uex[i]=U1[i]+1./c8*(U2+U3);
}
break;
}} }
break;
case 2:
{
switch (tipo2)
{ case 1:
/*cond. fronteira:Du(x[1])=A1 e u(x[Nos]=A2*/
/*tipo1-case2,tipo2-case1*/
{ for (i=1; i<=Nos; i++)
{ U2= (-c2*c6+Gama*c3)*pow(c1,X[i]);
U3= ( c1*c6+Gama*c3)*pow(c2,X[i]);
Uex[i]= U1[i]+1./c8*(U2+U3);
}
break;
}
case 2:
/*cond. fronteira:Du(x[1])=A1 e Du(x[Nos]=A2*/
/*tipo1-case2,tipo2-case2*/
{ for (i=1; i<=Nos; i++)
{ U2=(-c6/Gama)*pow(c1,X[i]);
U3=1./Gama/(c1-c2)*(c6*c1+c3)*(pow(c1,X[i])+pow(c2,X[i]));
Uex[i]= U1[i]+(U2+U3);
}
break;
} }} }
}
312
Exata");
313
314
A.2
/*
Definition of vector and matrix type variables
*/
typedef
typedef
typedef
typedef
typedef
typedef
typedef
typedef
struct{float
struct{int
struct{float
struct{float
struct{float
struct{float
struct{float
struct{float
v[2];}vec_2;
v[2];}vec_2i;
v[4];}vec_4;
v[8];}vec_8;
m[2][2];}mat_2;
m[2][4];}mat_24;
m[4][4];}mat_4;
m[8][8];}mat_8;
float *v_alloc(int n)
/* float n-vetor */
{
float *v;
v= (float *) calloc(n,sizeof(float));
if (v==NULL)
{
fprintf(stderr, "nao pode alocar memoria");
exit(1);
}
return v;
}
float **m_alloc(int m,int n)
/* float mxn-matriz */
{
int i;
float **a;
a=(float **) calloc(m,sizeof(float *));
if (a==NULL)
{
fprintf(stderr,"Nao pode alocar memoria");
exit(1);
}
for (i=1;i<=m;i++)
{
a[i-1]=(float *) calloc(n, sizeof(float));
if (a[i-1]==NULL)
315
316
317
A.3
/*
Regiao: unit square.
Square element
Types of knot:
tipo=0: outside the domain
tipo=1: boundary knot
tipo=2:
tipo=3:
tipo=4: interior knot
Functions:
vec_2i NoPos(int);
vec_2i ElmPos(int e);
int
PosNo(vec_2i);
int
NoLG(int a, int e);
vec_4 Phi(float,float);
mat_24 DPhi(float,float);
void
PhiMatriz(void);
*/
#define
int
int
float
int
float
float
float
Xi0
0.5773502691896
/* 1/sqrt(3) */
Nelx,Nel,Nno,Neq;
band;
*x,*y;
/* x/y-coord of knot */
*typ,*eqn;
/* type and eqno of knot */
Jacob;
/* Jacobiano do (x,y)/(xi,eta) */
Qabij[4][4][2][2];
Qab[4][4];
vec_2i NoPos(int n)
{ vec_2i x;
x.v[0] = (n-1)%(Nelx+1);
x.v[1] = (n-1)/(Nelx+1);
return x;
}
int PosNo(vec_2i x)
318
{
return (x.v[1]*(Nelx+1) + x.v[0] + 1);
}
vec_2i ElmPos(int e)
{ vec_2i x;
x.v[0] = (e-1)%Nelx;
x.v[1] = (e-1)/Nelx;
return x;
}
int NoLG(int a, int e)
{ vec_2i x;
x=ElmPos(e);
if (a==1) { x.v[0]++;}
if (a==2) { x.v[0]++; x.v[1]++; }
if (a==3) { x.v[1]++; }
return PosNo(x);
}
vec_4 Phi(float xi, float eta)
{ int a;
float x[4][2]={{-1,-1},{1,-1},{1,1},{-1,1}};
vec_4 v;
for (a=0; a<=3; a++)
{
v.v[a] = (1.+x[a][0]*xi)*(1.+x[a][1]*eta)/4;
}
return v;
}
mat_24 DPhi(float xi, float eta)
{ int a;
float x[4][2]={{-1,-1},{1,-1},{1,1},{-1,1}};
mat_24 g;
for (a=0; a<=3; a++)
{
g.m[0][a] = (x[a][0]*(1.+x[a][1]*eta)/4);
g.m[1][a] = (x[a][1]*(1.+x[a][0]*xi )/4);
}
319
B = DPhi(xi,eta);
for (a=0; a<=3; a++)
for (b=0; b<=3; b++)
for (i=0; i<=1; i++)
for (j=0; j<=1; j++)
Qabij[a][b][i][j] += B.m[i][a] * B.m[j][b];
g = Phi(xi,eta);
for (a=0; a<=3; a++)
for (b=0; b<=3; b++)
Qab[a][b] += g.v[a] * g.v[b];
}
}
float L2(float *u, float *v)
{ int
e,a,b,na,nb;
float z={0};
for (e=1; e<=Nel; e++)
{
for (a=0; a<=3; a++)
{
na = NoLG(a,e);
for (b=0; b<=3; b++)
{
nb = NoLG(b,e);
320
}
void Grid(int m)
{ int
n,i;
float d;
Nelx = m;
x = v_alloc(Nelx+1);
d = 1./Nelx;
for (i=0; i<=Nelx; i++)
Jacob = d*d/4;
x[i] = d*i;
Nel
Nno
typ
eqn
=
=
=
=
Nelx*Nelx;
(Nelx+1)*(Nelx+1);
vi_alloc(Nno+1);
vi_alloc(Nno+1);
for
for
for
for
for
typ[n]
typ[n]
typ[n]
typ[n]
=
=
=
=
1;
1;
1;
1;
321
322
A.4
/*
Linear solver for AX=B
Algorithm - Crout A-symmetric
LU decomposition: UDU -> A
Solution X -> B -> V
*/
#define tol 1e-8
void LU_Decomp(float **A)
{ int
i,j,k;
float t;
for (j=1; j<Neq; j++)
{
for (i=((j-band+2)>0)? j-band+2 : 1; i<=j-1; i++)
for (k=((j-band+1)>0)? j-band+1 : 0; k<=i-1; k++)
A[i][j-i] -= A[k][i-k]*A[k][j-k];
for (i=((j-band+1)>0)? j-band+1 : 0; i<=j-1; i++)
{
t = A[i][j-i];
if (fabs(A[i][0])<tol)
{ printf("\nerr 1: A[%d,%d] < %e",i+1,i+1,tol); exit(1);}
A[i][j-i] = t/A[i][0];
A[j][0] -= t*A[i][j-i];
if (fabs(A[j][0])<tol)
{ printf("\nerr 2: A[%d,%d] < %e",j+1,j+1,tol); exit(1);}
}
}
}
/* Back substitution
Solution -> V */
void Solver(float **A, float *B, float *V)
{ int
i,j,n;
for (j=1; j<Neq; j++)
for (i=((j-band+1)>0)? j-band+1 : 0; i<=j-1; i++)
B[j] -= A[i][j-i]*B[i];
323
324
A.5
Problema estacion
ario bidimensional PEB.cpp
/*
Problema Estacion
ario Bidimensional(PEB)
Metodo de Elementos Finitos
Condu
ca
~o de calor, meio anisotropico
-(K_ij (U_,j)),i = f(x)
bi-dimensional: elementos retangulos
tipo=1: U
deslocamento prescrito
tipo=0: deslocamento nao prescrito
Arquivo de Saida:
PEB.out
dados e solucoes
PEB.dat
3D-plot arquivo (para fazer o grafico)
Esse programa permite que na entrada de dados a escolha
dos tr^
es tipos de fronteira Dirichlet, Neumann e misto
para o problema, cuja solucao exata
e:
u = sen(pi*x)sen(pi*y), com x,y no intervalo[0,1].
*/
#include
#include
#include
#include
FILE
int
int
int
float
float
float
float
int
float
float
float
<stdio.h>
<stdlib.h>
<math.h>
<string.h>
*f1;
Nely;
Ex;
band;
*y;
**K;
*F;
*u;
**bdy,Nbn[5];
**Bv;
*uv;
*Du[2];
#include "typdef.h"
#include "grid.h"
#include "solver.h"
325
/* Entrada de dados */
/* Dados de entrada */
/*Identificando os nos da fronteira*/
/* Condicao de fronteira */
/* N
umero de No global -> Variavel */
/* Hessiano D(xi,eta)/D(x,y) */
/* Jacobiano do Hess^-1, retangulo */
/* Matriz condutividade do elemento */
/* Funcao do carregamento externo */
/* Rigidez-for
ca local */
/* Rigidez-for
ca global */
/* Para os nos da fronteira de Neumann*/
/* No global -> Posicao */
/* Integ (Dphi),(phi) do elemento */
/* Kab, Fa, Sistema Kab Xb = Fa */
/* Solucao Xb */
void main()
{
int
n;
vec_2i p;
f1 = fopen("PEB.out","w");
/*Arquivo de
DataInput();
Nel = Nelx*Nely;
Nno = (Nelx+1)*(Nely+1);
band= Nelx+3;
eqn = vi_alloc(Nno+1);
typ = vi_alloc(Nno+1);
u = v_alloc(Nno+1);
uv = v_alloc(Nno+1);
n = (Nelx>=Nely)? Nelx+2 : Nely+2;
bdy = mi_alloc(5,n);
Bv = m_alloc(5,n);
saida*/
326
Fronteira();
CondFront(Ex);
EqNo();
K = m_alloc(Neq,band);
F = v_alloc(Nno+1);
Du[0] = v_alloc(Nno+1);
Du[1] = v_alloc(Nno+1);
PhiMatriz();
GlobalSystem();
LU_Decomp(K);
Solver(K,F,uv);
GridData(f1);
/* u[n]
e a solu
ca
~o */
for (n=1; n<=Nno; n++)
u[n] = (typ[n]==1)? u[n] : F[eqn[n]-1];
/* solu
ca
~o exata: sen(Pi*x)*cos(Pi*y)
/* F[n]
e o erro , U[n]-exact[n] */
for (n=1; n<=Nno; n++)
{
p = NoPos(n);
F[n] = u[n] - sin(Pi*x[p.v[0]])*cos(Pi*y[p.v[1]]);
}
Sol_Nodal();
fclose(f1);
f1=fopen("PEB.dat","w"); /*Arquivo para fazer o grafico*/
PlotData(f1,u);
fclose(f1);
}
void DataInput(void)
{ int i;
float d;
printf("\n\nNumeros de x-divisao = ");
scanf("%d", &Nelx);
x = v_alloc(Nelx+1);
d = 1./Nelx;
for (i=0; i<=Nelx; i++) x[i] = d*i;
327
328
329
}
typ[1] = 1;
u[1] = 0;
}
if (Ex==3)
{
for (n=1; n<=Nno; n++) typ[n]=0;
for (i=1; i<=Nbn[1]; i++)
{
n = bdy[1][i]; p = NoPos(n);
// typ[n] = 1;
u[n] = sin(Pi*x[p.v[0]]); /* Fronteira prescrita*/
Bv[1][i] = -Pi*cos(Pi*x[p.v[0]]);
/* Fronteira nao prescrita*/
}
for (i=1; i<=Nbn[2]; i++)
{
n = bdy[2][i]; p = NoPos(n);
typ[n] = 1;
u[n] = 0;
/* Fronteira prescrita*/
//Bv[2][i] = -Pi*cos(Pi*y[p.v[1]])*2; /* Fronteira nao prescrita*/
}
for (i=1; i<=Nbn[3]; i++)
{
n = bdy[3][i]; p = NoPos(n);
//typ[n] = 1;
u[n] = -sin(Pi*x[p.v[0]]); /* Front. prescrita*/
Bv[3][i] = -Pi*cos(Pi*x[p.v[0]]);
/* Fronteira nao prescrita*/
}
for (i=1; i<=Nbn[4]; i++)
{
n = bdy[4][i]; p = NoPos(n);
typ[n] = 1;
u[n] = 0;
//Bv[4][i] = -Pi*cos(Pi*y[p.v[1]])*2;
}
}
}
mat_2 Qm(int e)
/* Fronteira prescrita*/
/* Front. nao prescrita*/
330
{
}
float Load(float x, float y)
/*Forca prescrita*/
{
return (2*Pi*Pi*(2*sin(Pi*x)*cos(Pi*y)+cos(Pi*x)*sin(Pi*y)));
}
void EqNo()
{ int n,e;
for (e=1,n=1; n<=Nno; n++)
{
if (typ[n]!=1)
{
eqn[n]=e; Neq=e; e++;
}
else eqn[n]=0;
} }
mat_2 Hess(int e)
/* Matriz Hessiana*/
{ float dx,dy;
vec_2i x1,x2,x3;
mat_2 m={{{0,0},{0,0}}};
x1 = NoPos(NoLG(0,e));
x2 = NoPos(NoLG(1,e));
x3 = NoPos(NoLG(2,e));
dx = x[x2.v[0]]-x[x1.v[0]];
dy = y[x3.v[1]]-y[x2.v[1]];
m.m[0][0]= 2./dx;
m.m[1][1]= 2./dy;
return m;
}
331
332
333
}
void System(void)
{ int i,j;
fprintf(f1,"\n\nMatriz rigidez K:");
for (i=0; i<Neq; i++)
{
fprintf(f1,"\n");
for (j=0; j<band; j++) fprintf(f1,"%+6.5f
}
fprintf(f1,"\n\nVetor forca F:\n");
for (i=0; i<Neq; i++)
fprintf(f1,"%+6.5f ", F[i]);
fprintf(f1,"\n");
}
", K[i][j]);
void Solution(void)
{ int i;
fprintf(f1,"\nVetor solucao X:");
for (i=0; i<Neq; i++)
{
if ((i%5)==0) fprintf(f1,"\n%4d: ", i+1);
fprintf(f1,"%+6.5f ", F[i]);
}
fprintf(f1,"\n");
}
/* Calcula a derivada de u em relacao as variaveis x e y*/
void Grad_U(float *u)
334
{
int
i,k,n,m,e;
mat_24 A;
mat_2 B;
for (i=1; i<=Nno; i++)
{
Du[0][i] = 0; Du[1][i] = 0; }
for (e=1; e<=Nel; e++)
{
A = DPhi(-1,-1);
B = Hess(e);
m = NoLG(0,e);
/* (Norma L2 e H1) */
335
X.v[0] += J*Qab[a][b]*u[na]*u[nb];
for (i=0; i<=1; i++)
X.v[1] += J*Qabij[a][b][i][i]*4/dl[i]/dl[i]*u[na]*u[nb];
}
}
X.v[0]
X.v[1]
return
}
= sqrt(X.v[0]);
= sqrt(X.v[1]);
X;
}
void Sol_Nodal(void)
{ int n;
vec_2 er;
vec_2i p;
Grad_U(u);
fprintf(f1,
"\n No
Valor
Coord.(x, y)
Err
Du/Dx
Du/Dy");
for (n=1; n<=Nno; n++)
{
p = NoPos(n);
fprintf(f1,"\n%4d %+6.5f (%+.3f, %+.3f)
",
n,
u[n],
x[p.v[0]], y[p.v[1]]);
fprintf(f1,"%+6.5f %+6.5f %+6.5f", F[n], Du[0][n], Du[1][n]);
if (n%(Nelx+1)==0) fprintf(f1,"\n");
}
er = Norm(F);
fprintf(f1,"\n L^2 error = %e
}
336
A.6
<stdio.h>
<stdlib.h>
<math.h>
<string.h>
"typdef.h"
#define
#define
#define
#define
#define
Xi0
Pi
c1
c2
c3
0.5773502691896
3.14159265359
1.5
1.0
(c1+2*c2)
/* Funcao prot
otipo */
void
DataInput(void);
/* Entrada de dados */
void
InputData(void);
/* Dados de entrada */
void
Fronteira(void);
/*Identificando os nos da fronteira*/
void
CondFront(int);
/* Condicao de fronteira */
void
TractionBoundary(void); /* Para os nos da fronteira de Neumann*/
vec_2i NoPos(int);
/* no global -> Posicao */
vec_2i ElmPos(int e);
/* Posicao no do Elemento */
int
PosNo(vec_2i);
/* Posicao -> no global */
int
NoLG(int a, int e);
/* no local(elemento) -> no global */
void
EqNo(void);
/* N
umero de no global -> Vari
avel */
FILE
int
int
int
int
float
float
float
float
int
float
int
mat_8
vec_8
float
float
Phi(float,float);
/*
DPhi(float,float);
/*
Hess(int);
/*
Jacob(int);
/*
Force(float,float);
/*
PhiMatriz(void);
/*
LocalSystem(int);
/*
GlobalSystem(void);
/*
Restriction(void);
/*
Sol_Nodal(void);
Ex_f(float **);
Solver(float **, float *);
PlotData(FILE *);
***m3d_alloc(int,int,int);
*f1;
Nel,Nno,Neq;
Nelx,Nely;
Ex;
/*
band;
/*
*x,*y;
/*
**u;
/*
**K;
/*
*F;
/*
**bdy,Nbn[5];
/*
***Bv;
/*
**eqn,**typ;
/*
Kmn;
/*
Fm;
/*
Qabij[4][4][2][2];
Qab[4][4];
337
Funcao teste */
Xi-Gradiente da funcao teste */
Hessiano D(xi,eta)/D(x,y) */
Jacobiano do Hess^-1, retangulo */
Funcao do carregamento externo */
Integ (Dphi),(phi) do elemento */
Rigidez-forca local */
Rigidez-forca global */
Unicidade do Problema Neumann*/
Exemplo de fronteira*/
banda da Matriz Global*/
x/y-coord do no */
vetor deslocamento */
Matriz Rigidez */
Carregamento do vetor -> vetor solucao */
nos da fronteira e n
umero total de nos da fronteira */
Valor de fronteira de Neumann */
Numero de equacoes e tipo do no*/
Matriz Rigidez local, (a,i)->m=2a+i */
Vetor local, (a=0..3, i=0..1) */
/*
Constantes de Elasticidade:
C[2][2][2][2]=
{ C1111,C1112, C1121,C1122, C1211,C1212, C1221,C1222,
C2111,C2112, C2121,C2122, C2211,C2212, C2221,C2222 };
*/
float C[2][2][2][2]=
{ {{{c3,0}, {0,c1}}, {{0,c2}, {c2,0}}},
338
void main()
{ int n,i;
f1 = fopen("elast.out","w");
DataInput();
Nel = Nelx*Nely;
Nno = (Nelx+1)*(Nely+1);
band= 2*Nelx+6;
eqn = mi_alloc(Nno+1,2);
typ = mi_alloc(Nno+1,2);
u = m_alloc(Nno+1,2);
n = (Nelx>=Nely)? Nelx+2 : Nely+2;
bdy = mi_alloc(5,n);
Bv = m3d_alloc(5,n,2);
Fronteira();
CondFront(Ex);
EqNo();
K = m_alloc(Neq,band);
F = v_alloc(Neq);
PhiMatriz();
InputData();
GlobalSystem();
Solver(K,F);
/* considerando u[n][i] sendo a solucao U[n][i] */
for (n=1; n<=Nno; n++)
for (i=0; i<=1; i++)
u[n][i] = (typ[n][i]==1)? u[n][i] : F[eqn[n][i]-1];
if (Ex==2) /* translacao para u[1][0]=0 */
{
for (n=2; n<=Nno; n++) /*Translacao-Unicidade:Procedimento 3 */
u[n][0] -= u[1][0];
u[1][0] = 0;
}
/* Seja K[n][i] sendo o erro, U[n][i]-Ex[n][i] */
Ex_f(K);
= ");
339
340
}
void CondFront(int Ex)
{ int i,n;
vec_2i p;
for (n=1; n<=Nno; n++)
for (i=0; i<2; i++)
{ typ[n][i]=0; u[n][i]=0; }
for (n=1; n<=4; n++)
for (i=1; i<=Nbn[n]; i++)
{ Bv[n][i][0]=0; Bv[n][i][1]=0; }
if (Ex==1)
{
for (i=1; i<=Nbn[1]; i++)
{
n = bdy[1][i]; p = NoPos(n);
typ[n][0] = 1; u[n][0] = 0;
typ[n][1] = 1; u[n][1] = 0;
}
for (i=1; i<=Nbn[2]; i++)
{
n = bdy[2][i]; p = NoPos(n);
typ[n][0] = 1; u[n][0] = 0;
typ[n][1] = 1; u[n][1] = 0;
}
for (i=1; i<=Nbn[3]; i++)
{
n = bdy[3][i]; p = NoPos(n);
typ[n][0] = 1; u[n][0] = 0;
typ[n][1] = 1; u[n][1] = 0;
}
for (i=1; i<=Nbn[4]; i++)
{
341
p = NoPos(n);
u[n][0] = 0;
u[n][1] = 0;
}
}
if (Ex==2)
{
for (i=1; i<=Nbn[1]; i++)
{
n = bdy[1][i]; p = NoPos(n);
Bv[1][i][0] = -sin(Pi*x[p.v[0]])/Pi;
Bv[1][i][1] = -sin(Pi*x[p.v[0]])/Pi*3.5;
}
for (i=1; i<=Nbn[2]; i++)
{
n = bdy[2][i]; p = NoPos(n);
Bv[2][i][0] = -sin(Pi*y[p.v[1]])/Pi*3.5;
Bv[2][i][1] = -sin(Pi*y[p.v[1]])/Pi;
}
for (i=1; i<=Nbn[3]; i++)
{
n = bdy[3][i]; p = NoPos(n);
Bv[3][i][0] = -sin(Pi*x[p.v[0]])/Pi;
Bv[3][i][1] = -sin(Pi*x[p.v[0]])/Pi*3.5;
}
for (i=1; i<=Nbn[4]; i++)
{
n = bdy[4][i]; p = NoPos(n);
Bv[4][i][0] = -sin(Pi*y[p.v[1]])/Pi*3.5;
Bv[4][i][1] = -sin(Pi*y[p.v[1]])/Pi;
}
/* Unicidade de solucao*/
// typ[1][0] = 1; u[1][0] = 0;
/*Procedimento 2*/
//typ[1][1] = 1; u[1][1] = 0;
//typ[Nelx][1] = 1; u[Nelx][1] = 0;
typ[1][1] = 1; u[1][1] = 0;
/*Procedimento 3:Unicidade*/
typ[Nelx][1] = 1; u[Nelx][1] = 0;
}
if (Ex==3)
342
{
for (i=1; i<=Nbn[1]; i++)
{
n = bdy[1][i]; p = NoPos(n);
typ[n][0] = 1; u[n][0] = 0;
typ[n][1] = 1; u[n][1] = 0;
//Bv[1][i][0] = -sin(Pi*x[p.v[0]])/Pi;
//Bv[1][i][1] = -sin(Pi*x[p.v[0]])/Pi*3.5;
}
for (i=1; i<=Nbn[2]; i++)
{
n = bdy[2][i]; p = NoPos(n);
//typ[n][0] = 1; u[n][0] = -cos(Pi*y[p.v[1]])/Pi/Pi;
//typ[n][1] = 1; u[n][1] = 0;
Bv[2][i][0] = -sin(Pi*y[p.v[1]])/Pi*3.5;
Bv[2][i][1] = -sin(Pi*y[p.v[1]])/Pi;
}
for (i=1; i<=Nbn[3]; i++)
{
n = bdy[3][i]; p = NoPos(n);
typ[n][0] = 1; u[n][0] = 0;
typ[n][1] = 1; u[n][1] = 0;
//Bv[3][i][0] = -sin(Pi*x[p.v[0]])/Pi;
//Bv[3][i][1] = -sin(Pi*x[p.v[0]])/Pi*3.5;
}
for (i=1; i<=Nbn[4]; i++)
{
n = bdy[4][i]; p = NoPos(n);
// typ[n][0] = 1; u[n][0] = cos(Pi*y[p.v[1]])/Pi/Pi;
// typ[n][1] = 1; u[n][1] = 0;
Bv[4][i][0] = -sin(Pi*y[p.v[1]])/Pi*3.5;
Bv[4][i][1] = -sin(Pi*y[p.v[1]])/Pi;
}
}
}
void Ex_f(float **f)
{ int
n;
float X,Y;
vec_2i p;
343
344
}
void EqNo()
{ int n,e,i;
for (e=1,n=1; n<=Nno; n++)
for (i=0; i<=1; i++)
/* i=0 componente horiz. i=1 comp. vertical */
{
if (typ[n][i]!=1)
{
eqn[n][i]=e; Neq=e; e++;
}
else eqn[n][i]=0;
}
}
vec_4 Phi(float xi, float eta)
{ int a;
float x[4][2]={{-1,-1},{1,-1},{1,1},{-1,1}};
vec_4 v;
for (a=0; a<=3; a++)
{
v.v[a] = (1.+x[a][0]*xi)*(1.+x[a][1]*eta)/4;
}
return v;
}
mat_24 DPhi(float xi, float eta)
{ int a;
float x[4][2]={{-1,-1},{1,-1},{1,1},{-1,1}};
mat_24 g;
for (a=0; a<=3; a++)
{
g.m[0][a] = (x[a][0]*(1.+x[a][1]*eta)/4);
g.m[1][a] = (x[a][1]*(1.+x[a][0]*xi )/4);
}
return g;
}
345
346
void GlobalSystem()
{ int e,i,j,a,b,r,s;
for (e=1; e<=Nel; e++)
{
LocalSystem(e);
for (a=0; a<=3; a++)
for (r=0; r<=1; r++)
{
i = eqn[NoLG(a,e)][r];
F[i-1] += Fm.v[2*a+r];
vec_8
vec_8
float
{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}}};
qa={{0,0,0,0,0,0,0,0}};
z={{0,0,0,0,0,0,0,0}},zq={{0,0,0,0,0,0,0,0}};
ei[2][2]={{1,0},{0,1}};
/* base canonica */
m = Hess(e);
dH[0] = m.m[0][0];
dH[1] = m.m[1][1];
J = Jacob(e);
for (a=0; a<=3; a++)
for (r=0; r<=1; r++)
for (b=0; b<=3; b++)
for (s=0; s<=1; s++)
{
for (i=0; i<=1; i++)
for (j=0; j<=1; j++)
for (k=0; k<=1; k++)
for (l=0; l<=1; l++)
X.m[2*a+r][2*b+s] += Qabij[a][b][i][j] * C[i][k][j][l]
* J*dH[i]*dH[j] * ei[r][k] * ei[s][l];
}
Kmn = X;
for (a=0; a<=3; a++)
for (i=0; i<=1; i++)
for (b=0; b<=3; b++)
{
p = NoPos(NoLG(b,e));
fi= Force(x[p.v[0]],y[p.v[1]]);
z.v[2*a+i] += J*Qab[a][b]* fi.v[i];
}
Fm = z;
/* Termos da Fronteira de Dirichlet */
for (a=0; a<=3; a++)
{ k = NoLG(a,e);
for (r=0; r<=1; r++)
if (typ[k][r]==1) qa.v[2*a+r] = u[k][r];
347
348
}
/* Contribuicao da Fronteira de Neumann na Forca */
void TractionBoundary(void)
{
int
j,s,n,n1,n2,i1,i2;
float dx,dy,dl;
vec_2i p1,p2;
for (n=1; n<=4; n++)
for (s=0; s<=1; s++)
for (j=1; j<Nbn[n]; j++)
{
n1 = bdy[n][j];
n2 = bdy[n][j+1];
p1 = NoPos(n1);
p2 = NoPos(n2);
dx = x[p1.v[0]]-x[p2.v[0]];
dy = y[p1.v[1]]-y[p2.v[1]];
dl = sqrt(dx*dx+dy*dy);
i1 = eqn[n1][s]; i2 = eqn[n2][s];
if (i1!=0)
F[i1-1] += (Bv[n][j][s]/3+Bv[n][j+1][s]/6)*dl;
if (i2!=0)
F[i2-1] += (Bv[n][j+1][s]/3+Bv[n][j][s]/6)*dl;
}
}
/*
Sistema Linear AX=B, solucao X -> B
Algoritmo de Crout A e simetrica
*/
void Solver(float **A, float *B)
{ int
i,j,k;
float t;
float tol=1.e-8;
349
350
/* (Normas L2 e H1 ) */
351
352
353
C2 = -I0*x[p.v[0]]+I2;
u[n][0] = u[n][0] + C1;
u[n][1] = u[n][1] + C2;
K[n][0] = K[n][0]+C1;
K[n][1] = K[n][1]+C2;
}
} while (fabs(I0)+fabs(I1)+fabs(I2) > 1e-4);
}
void Sol_Nodal()
{ int n;
float a1,a2;
vec_2 er;
vec_2i p;
fprintf(f1,
"\n No
Coord.(x, y)
u_1
u_2
err_1
err_2");
for (n=1; n<=Nno; n++)
{
p = NoPos(n);
fprintf(f1,"\n%4d (%+.3f, %+.3f)
%+.5f %+.5f",
n, x[p.v[0]], y[p.v[1]], u[n][0], u[n][1]);
fprintf(f1,"
%+.4e %+.4e", K[n][0], K[n][1]);
if (n%(Nelx+1)==0) fprintf(f1,"\n");
}
er = Norm(K);
fprintf(f1,"\nL^2 err = %e
H^1 err = %e", er.v[0], er.v[1]);
a1 = er.v[0]; a2 = er.v[1];
er = Norm(u);
fprintf(f1,"\nL^2 sol = %e
H^1 sol = %e", er.v[0], er.v[1]);
fprintf(f1,"\nError relativo em L^2 = %.3f \%", a1/er.v[0]*100);
fprintf(f1,"\nError relativo em H^1 = %.3f \%", a2/er.v[1]*100);
}
void PlotData(FILE *f1)
{ int n,i,j;
for (j=0; j<=Nely; j++)
{
for (i=0; i<=Nelx; i++)
{
354
}
for (i=0; i<=Nelx; i++)
{
for (j=0; j<=Nely; j++)
{
n = j*(Nelx+1)+i+1;
fprintf(f1,"\n %+f %+f", x[i]+u[n][0], y[j]+u[n][1]);
}
fprintf(f1,"\n");
}
}
A.7
355
Equac
ao do calor unidimensional Calor.cpp
/*
Problema Parab
olico do Calor Unidimensional
Metodo de Elementos finitos
Ut(x,t) - (Alpha)Uxx(x,t) + (Beta)U(x,t) = f(x,t)
tipo=1: u() prescrita
tipo=2: du() prescrita
Linear solver: Tri-diagonal matrix
Para Alpha=Beta=1.0 ent~
ao
Problema 1:
Solu
ca
~o Exata: u(x,t)=(1.0/\pi^2)*sin(Pi*x)*exp^(-(alpha\pi^2+\beta)*t)
para a fORC
A F=0
Problema2:
Solu
ca
~o Exata: u(x,t)= (1.0/\pi^2)*sin(Pi*x)*exp^(-t)
para a for
ca F=(sin(Pi*x)*exp(-t))
Programa tamb
em gera um arquivo de erros na norma L^2 e H^1.
M
etodo generalizado trapezoidal, usando a diferen
ca progressiva para g(t)
e m
edia ponderada nos termos dependentes de t e nao envolvem derivadas.
*/
#include
#include
#include
#include
<stdio.h>
<stdlib.h>
<math.h>
<string.h>
#define
#define
#define
#define
#define
#define
Nosm
Nelm
Xi1
Xi2
Pi
T
1002
1001
-sqrt(3)/3
sqrt(3)/3
3.14159265358979
1.0
356
int tipo1,tipo2;
float g0[Nosm];
/*Solu
ca
~o inicial do problema dado */
float v0[Nosm];
/*Derivada inicial g(0) do problema dado */
float g[Nosm];
/*Sol.aprox do sistema (A+Teta*k*B)g[n+1] = b */
float v[Nosm];
/*Derivada g(tn) */
float gtil[Nosm];
float b[Nosm];
/*Vetor b do sistema (A+Teta*k*B)g[n+1] = b */
float c[Nosm];
/*Vetor c do sistema (A+Teta*k*B)v = c */
float G[Nosm];
/*Solu
ca
~o exata do problema dado */
float X[Nosm], Xe[3];
float H[Nelm];
float A[Nosm][4];
/*Matriz A do sistema (A+Teta*k*B)g[n+1] = b */
float B[Nosm][4];
/*Matriz B do sistema (A+Teta*k*B)g[n+1] = b */
float F[Nosm],F0[Nosm],F1[Nosm];
/*Vetor F (For
ca) */
float Alpha,Beta,Teta,lambda;
float A1,A2,dl,d[2],k, Max;
float EAbs[Nosm];
/*Erro absoluto */
float E[Nosm];
/*Erro da diferen
ca sol. aprox. e exata */
float MaxH1;
/*Maximo do Erro para norma H1 */
float MaxLInf;
/*Maximo do Erro para norma L Infinito */
void InputData()
{
printf("Constante Alpha = ");
scanf("%f", &Alpha);
printf("Constante Beta = ");
scanf("%f", &Beta);
printf("Constante Teta (Teta entre 0 e 1) = ");
scanf("%f", &Teta);
printf("\nConstante k = ");
/* k = DeltaT = Passo no tempo */
scanf("%f", &k);
fprintf(f1,"Alpha = %f\n", Alpha);
fprintf(f1,"Beta = %f\n", Beta);
//lambda =(Alpha*Pi*Pi+Beta);
//valor de lambda p/ Problema 2
lambda =1;
// calor de lambda para o problema 2
fprintf(f1,"Teta = %f\n", Teta);
fprintf(f1,"\nConstante k = %f\n", k);
printf("\n\nNumeros de elementos = ");
scanf("%d", &Nel);
fprintf(f1,"\nNumero de elementos = %d\n", Nel);
fprintf(f1,"\nSolu
ca
~o Exata =(1.0/\pi^2)*sin(Pi*x)*exp^(-(\pi^2+1)*t)\n");
357
358
359
360
}
void LinearSolver(float Am[Nosm][4], float b[Nosm],float g[Nosm])
/*Resolu
ca
~o do Sistema Linear (A+kB)g = b pelo MEG*/
{ int i;
float y;
for (i=1; i<Nos; i++)
{
y = Am[i+1][1]/Am[i][2]; /*C
alculo do multiplicador*/
Am[i+1][2] += -y*Am[i][3];/*Transf. da matriz (A+kB) em Triang.Superior*/
b[i+1] += -y*b[i];
/*Atualiza
ca
~o do vetor b*/
}
/* Retro-Substituicao */
g[Nos] = b[Nos]/Am[Nos][2];
for (i=Nos-1; i>=1; i--)
g[i] = (b[i]-Am[i][3]*g[i+1])/Am[i][2];
}
void Norma(float *f)
{ int
i;
float L2=0, H1=0, x1, x2;
for (i=1; i<Nos; i++)
{
x1 = f[i+1] + f[i];
x2 = f[i+1] - f[i];
APROXIMADA
361
362
");
", j*k);
", j*k);
363
j=j+1;
VetorForca();
CondFront(A1,A2);
for (i=1; i<=Nos; i++)
{
gtil[i]=g0[i]+(1-Teta)*k*v0[i];
}
/*Montagem do vetor c para calculo da derivada v = g(tn)*/
c[1]=F[1]-(B[1][2]*gtil[1]+B[1][3]*gtil[2]);
for (i=2; i<=Nos-1; i++)
{
c[i] = F[i]-(B[i][1]*gtil[i-1]+B[i][2]*gtil[i]+B[i][3]*gtil[i+1]);
}
c[Nos]=F[Nos]-(B[Nos][1]*gtil[Nos-1]+B[Nos][2]*gtil[Nos]);
for(i=1; i<=Nos; i++)
{
Am[i][1]=A[i][1]+Teta*k*B[i][1];
Am[i][2]=A[i][2]+Teta*k*B[i][2];
Am[i][3]=A[i][3]+Teta*k*B[i][3];
}
LinearSolver(Am, c, v);
for (i=1; i<=Nos; i++)
{
g[i]=gtil[i]+Teta*k*v[i];
/*quando for
ca nula f=0*/
//G[i] = (1.0/(Pi*Pi))*sin(Pi*X[i])*exp(-(Pi*Pi+1)*(j)*k);
/*quando a for
ca F=(sin(Pi*x)*exp(-t))*/
G[i] = (1.0/(Pi*Pi))*sin(Pi*X[i])*exp(-(j)*k);
g[1]=0.0;
g[Nos]=0.0;
E[i] = g[i]-G[i];
EAbs[i]= sqrt((g[i]-G[i])*(g[i]-G[i]));
//Erro absoluto
fprintf(f1,"%f
%f
%f
%f
%f
%f\n" , X[i], (j-1)*k, g[i], G[i],
EAbs[i], F0[i]);
fprintf(f2, "%3.4f
", g[i]);
}
for (i=1; i<=Nos; i++)
{
fprintf(f2, "%3.4f
", G[i]);
364
}
Norma(G);
a1 = v[1]; a0 = v[0];
Norma(E);
/*Calcula os erros na norma L^2 em todo tempo*/
fprintf(f3,"%f
%f\n", (j-1)*k, v[0]);
if (MaxLInf<= v[0]) MaxLInf = v[0];
if (MaxH1<= v[1]) MaxH1 = v[1];
//Erro na norma L^2 em cada tempo t
fprintf(f1,"\n erabs(L2) = %f", v[0]);
//Erro na norma H^1 em cada tempo t
fprintf(f1,"\n erabs(H1) = %f \n", v[1]);
//fprintf(f1, "\n");
for (i=1; i<=Nos; i++)
{
g0[i]=g[i];
v0[i]=v[i];
F0[i]=F[i];
}
j=j-1;
}
fprintf(f1,"\n Erro na norma LInfinito = %f", MaxLInf);
fprintf(f1,"\n Erro na norma H1 = %f", MaxH1);
fclose(f1);
fclose(f2);
fclose(f3);
}
A.8
365
Equac
ao da onda unidimensional Onda.cpp
/*
Problema Hiperb
olico da Equa
ca
~o da Onda Unidimensional
Metodo de Elementos Finitos
U_tt(x,t) - (Alpha)U_xx(x,t) + (Beta)U(x,t) = f(x,t)
tipo=1: u() prescrita
tipo=2: du() prescrita
Problema1: Alpha=1 e Beta=0 ent~
ao
f=0 e solu
ca
~o exata u(x,t)=sen(Pi*x)cos(lambda*Pi*t)
u(x,0)= sen(Pi*x) e u(x,0)=0
onde lambda=sqrt(alpha+beta/Pi^2)
Problema2: Alpha=Beta=1 ent~
ao (tomando lambda=1)
f(x,t)=u(x,t)=sen(Pi*x)cos(lambda*Pi*t)(for
ca=solu
ca
~o exata)
u(x,0)= sen(Pi*x) e u(x,0)=0
M
etodo de Newmark: U^(*n)=teta*(U^{n-1}+U^{n+1})+(1-2*teta)*U^n
Se teta=0 ent~
ao M
edodo da Diferen
ca Central
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define Nosm
1002
#define Nelm
1001
#define Xi1
-sqrt(3)/3
#define Xi2
sqrt(3)/3
#define Pi
3.14159265359
#define T
1.0
//#define lambda
1.049438509
FILE *f1,*f2;
int i,j;
int maxj;
int Nel,Nos;
int tipo1,tipo2;
float g0[Nosm];
float g[Nosm];
float ganterior[Nosm];
float g1[Nosm];
/*N
umero de elementos e n
umero de n
os */
/*Posi
ca
~o inicial da corda */
/*Solu
ca
~o aproximada do problema*/
/*g(elevado a menos 1)*/
/* Velocidade inicial da corda g(0)= g1*/
366
float b[Nosm];
/*Vetor b do sistema Ag[n+1] = b*/
float G[Nosm];
/*Solu
ca
~o exata do problema dado*/
float X[Nosm], Xe[3];
float H[Nelm];
float A[Nosm][4];
/*Matriz A do sistema Ag[n+1] = b */
float B[Nosm][4];
/*Matriz B do sistema Ag[n+1] = b */
float F[Nosm],FNeg[Nosm],F0[Nosm],F1[Nosm];/*Vetor F (For
ca) */
float Alpha,Beta,Teta,lambda;
float A1,A2,dl,v[2],k,Max;
float EAbs[Nosm];
/*Erro absoluto */
float E[Nosm];
/*Diferen
ca da solu
ca
~o aproximada e exata */
float MaxH1;
/*Erro maximo no tempo da norma L2 */
float MaxLInf;
/*Erro m
aximo no tempo da norma H1*/
void InputData()
{
printf("Constante Alpha = ");
scanf("%f", &Alpha);
printf("\nConstante Beta = ");
scanf("%f", &Beta);
printf("\nConstante Teta (Teta entre 0 e 1) = ");
scanf("%f", &Teta);
/*k=delta t=Passo no tempo*/
printf("\nConstante k (passo no tempo) = ");
scanf("%f", &k);
printf("\n\nNumeros de elementos = ");
scanf("%d", &Nel);
fprintf(f1,"Alpha = %f\n", Alpha);
fprintf(f1,"Beta = %f\n", Beta);
lambda = sqrt(Alpha+Beta/Pi/Pi);
//valor de lambda p/ Problema 1
// lambda =1
// calor de lambda para o problema 2
fprintf(f1,"Teta = %f\n", Teta);
fprintf(f1,"\nConstante k= %f\n", k);
fprintf(f1,"\nNumero de elementos = %d\n", Nel);
fprintf(f1,"\nSolu
ca
~o Exata = sin(Pi*x)*cos(lambda*Pi*t)\n");
}
void InputCondFront()
{
printf("\nCond. Contorno:(tipo: 1-Dirichlet 2-Neumann)\n");
printf("Cond. do no %d (tipo, valor):", 1);
scanf("%d %f", &tipo1, &A1);
printf("Cond. do no %d (tipo, valor):", Nos);
367
368
}
void MatrizRigidez()
{ int e;
float B11,B22,B12,B21;
for (e=1; e<=Nel; e++)
{
CoordLocal(e);
B11 = Alpha/H[e] + Beta/3*H[e];
B22 = Alpha/H[e] + Beta/3*H[e];
B12 = -Alpha/H[e] + Beta/6*H[e];
B21 = -Alpha/H[e] + Beta/6*H[e];
/* Matriz Rigidez */
B[e][2] += B11;
B[e][3] = B12;
B[e+1][1] = B21;
B[e+1][2] = B22;
}
}
float forca(float x)
{
return 0;
/*funcao de forca prescrita Prob1*/
/*return sin(Pi*x)*cos(Pi*j*k);*/ /*funcao de forca prescrita Prob2*/
}
float h1(int e, float x)
{
return (.5*forca(Xi(e,x))*(1-x));
}
369
370
}
void LinearSolver(float M[Nosm][4], float b[Nosm],float g[Nosm])
{ /*Resolu
ca
~o do Sistema Linear Ag[n+1] = b pelo MEG*/
float y;
for (i=1; i<Nos; i++)
{
y = M[i+1][1]/M[i][2];
/*C
alculo do multiplicador*/
M[i+1][2] += -y*M[i][3];
/* transforma A em triangular superior*/
b[i+1] += -y*b[i];
/*Atualiza
ca
~o do vetor b*/
}
/* Retro-Substituicao */
g[Nos] = b[Nos]/M[Nos][2];
for (i=Nos-1; i>=1; i--)
g[i] = (b[i]-M[i][3]*g[i+1])/M[i][2];
}
void Norma(float *f)
{ float L2=0, H1=0, x1, x2;
for (i=1; i<Nos; i++)
{
x1 = f[i+1] + f[i];
x2 = f[i+1] - f[i];
L2 += x1*x1;
H1 += x2*x2;
}
v[0] = sqrt(L2/4*dl);
/* Norma em L2*/
v[1] = sqrt(L2/4*dl)+sqrt(H1*dl); /*Norma em H1*/
}
void OutputData()
{
fprintf(f1,"\nMatriz A:\n");
for (i=1; i<=Nos; i++)
{
for (j=1; j<=3; j++)
371
372
Exata
Erro
For
ca \n");
j=-1;
VetorForca();
CondFront(A1,A2);
for (i=1; i<=Nos; i++)
{
FNeg[i]=F[i];
}
j=0;
VetorForca();
CondFront(A1,A2);
for (i=1; i<=Nos; i++)
{
F0[i]=F[i];
}
j=1;
VetorForca();
CondFront(A1,A2);
for (i=1; i<=Nos; i++)
{
F1[i]=F[i];
}
/* Calculo da Matriz Rigidez*/
for(i=1; i<=Nos; i++)
{
M[i][1]=A[i][1]+Teta*(k*k)*B[i][1];
M[i][2]=A[i][2]+Teta*(k*k)*B[i][2];
M[i][3]=A[i][3]+Teta*(k*k)*B[i][3];
}
for(i=1; i<=Nos; i++)
{
L[i][1]=2*A[i][1]-(1-2*Teta)*(k*k)*B[i][1];
L[i][2]=2*A[i][2]-(1-2*Teta)*(k*k)*B[i][2];
L[i][3]=2*A[i][3]-(1-2*Teta)*(k*k)*B[i][3];
}
/* Tomando a media ponderada da For
ca inicial com pesos teta*/
Fteta[1]=Teta*(F1[1]+FNeg[1])+(1-2*Teta)*F0[1];
for(i=2; i<=Nos-1; i++)
373
{
Fteta[i]=Teta*(F1[i]+FNeg[i])+(1-2*Teta)*F0[i];
}
Fteta[Nos]=Teta*(F1[Nos]+FNeg[Nos])+(1-2*Teta)*F0[Nos];
/* Montagem do vetor b para solu
ca
~o aproximada em j = 0 */
b[1]=0.5*L[1][2]*g0[1]+
0.5*L[1][3]*g0[2]+k*M[1][2]*g1[1]+
k*M[1][3]*g1[2]+.5*k*k*(Fteta[1]);
for (i=2; i<=Nos-1; i++)
{
b[i]=0.5*L[i][1]*g0[i-1]+0.5*L[i][2]*g0[i]+
0.5*L[i][3]*g0[i+1]+k*M[i][1]*g1[i-1]+k*M[i][2]*g1[i]
+k*A[i][3]*g1[i+1]+.5*k*k*(Fteta[i]);
}
b[Nos]=0.5*L[Nos][1]*g0[Nos-1]+ 0.5*L[Nos][2]*g0[Nos]+ M[Nos][1]*g1[Nos-1]
+M[Nos][2]*g1[Nos]+.5*k*k*(Fteta[Nos]);
LinearSolver(M, b, g);
MaxH1 = 0;
MaxLInf = 0;
for (i=1; i<=Nos; i++)
{
g[1]=0.0;
g[Nos]=0.0;
/* Solu
ca
~o exata inicial para t=0*/
G[i] =sin(Pi*X[i])*cos(lambda*Pi*j*k);
E[i] = g[i]-G[i];
EAbs[i]= sqrt((g[i]-G[i])*(g[i]-G[i]));
//Erro absoluto
fprintf(f1,"%f %f %f %f %f %f\n", X[i], j*k, g[i], G[i], EAbs[i],Fteta[i]);
fprintf(f2, "%3.4f
", g[i]);
ganterior[i]=g[i];
}
for (i=1; i<=Nos; i++)
{
fprintf(f2, "%3.4f
}
", G[i]);
374
Norma(G);
a1 = v[1]; a0 = v[0];
Norma(E);
if (MaxLInf<= v[0]) MaxLInf = v[0];
if (MaxH1<= v[1]) MaxH1 = v[1];
// Erro na norma L2 em cada tempo t
fprintf(f1,"\n erro(L2) = %f", v[0]);
//Erro na norma H1 em cada tempo t
fprintf(f1,"\n erro(H1) = %f \n", v[1]);
fprintf(f1, "\n");
//Calcula a solu
ca
~o exata e aproximada no ponto medio x=0.5
//fprintf(f2,"\n %f %f %f %f %f", j*k, v[0],(g[(Nos-1)/2]-G[(Nos-1)/2]),
//
g[(Nos-1)/2], G[(Nos-1)/2]);
for(j=1; j<=maxj; j++)
{
j=j+1;
VetorForca();
CondFront(A1,A2);
fprintf(f2, "\n%1.4f
", (j-1)*k);
375
Fteta[Nos]=Teta*(F[Nos]+F0[Nos])+(1-2*Teta)*F1[Nos];
/*Vetor b para solu
ca
~o aproximada em j = 1,2,*/
b[1]=L[1][2]*ganterior[1]+L[1][3]*ganterior[2]M[1][2]*g0[1]-M[1][3]*g0[2]+ k*k*(Fteta[1]);
for (i=2; i<=Nos-1; i++)
{
b[i]=L[i][1]*ganterior[i-1]+L[i][2]*ganterior[i]+
L[i][3]*ganterior[i+1]-M[i][1]*g0[i-1]
-M[i][2]*g0[i]-M[i][3]*g0[i+1]
+k*k*(Fteta[i]);
}
b[Nos]=L[Nos][1]*ganterior[Nos-1]+
L[Nos][2]*ganterior[Nos]-M[Nos][1]*g0[Nos-1]M[Nos][2]*g0[Nos]+k*k*(Fteta[Nos]);
LinearSolver(M, b, g);
for (i=1; i<=Nos; i++)
{
g[1]=0.0;
g[Nos]=0.0;
/*Sol.exata para Ploblema 1 e 2*/
G[i] = (sin(Pi*X[i])*cos(lambda*Pi*j*k));
E[i] = g[i]-G[i];
EAbs[i]= sqrt((g[i]-G[i])*(g[i]-G[i]));
//Erro absoluto
fprintf(f1,"%f
%f
%f
%f
%f
%f\n" , X[i], (j-1)*k,
g[i], G[i], EAbs[i], Fteta[i]);
g0[i]=ganterior[i];
ganterior[i]=g[i];
F0[i]=F1[i];
F1[i]=F[i];
}
for (i=1; i<=Nos; i++)
{
fprintf(f2, "%3.4f
", G[i]);
}
Norma(G);
a1 = v[1]; a0 = v[0];
Norma(E);
if (MaxLInf<= v[0]) MaxLInf = v[0];
376
Bibliografia
[1] Atkinson, K., Han, Weimin.: Theoretical Numerical Analysis. A functional Analisys Framework. Springer (2005)
[2] Brezis, H.: Analyse Fonctionelle, Masson Paris (1983).
[3] Burden, R. L., Faires, D. J.: Numerical Analysis, PWS Publishing Company
(1993).
[4] Chou, S.-I., Wang, C.-C.: Error estimates of finite element approximations for
problems in linear elasticity, Part I. Problems in elastostatics, Arch. Rational
Mech. Anal., 72, 41-60 (1979).
[5] Ciarlet, P.: The Finite Element Method for Elliptic Problems, Studies in Mathematics and its Applications, North-Holland, (1978)
[6] Douglas, J. , Dupont, T.: Galerkin methods for parabolic equations, SIAM J.
Numer. Anal. 7, 575-626 (1970)
[7] Fichera, G.: Existence Theorems in Elasticity, in Handbuch der Physik, Band
VIa/2, Edited by C. Truesdell, Springer-Verlag (1972).
[8] G.H. Golub ; C.F Van Loan: Matrix Computations, 3 rd ed., Johns Hopkins U.
Press, Bltimore, (1996).
[9] Hughes, T. J. R.: The finite element method - Linear static and dynamic finite
element analysis. Prentice Hall (2000)
[10] Johnson, C.: Numerical solution of partial differential equations by the finite
element method. Springer (2009)
[11] Larsson, S., Thomee, V.: Partial Differential Equations with Numerical Methods.
Springer (2000).
[12] Liu, I-Shih: Continuum Mechanics. Springer (2002).
377
378
Bibliografia
Indice
Algoritmos
Crout, 140, 142
equacao da onda,
equacao do calor,
Analise numerica
equacao da onda,
equacao do calor,
homogeneo, 4
isotropico, 3, 10
227
211
D (), 22
DataInput, 339
DataInput, 108, 326
Decaimento
assintotico, 272
exponencial , 273
Decaimento assintotico
caso discreto, 274
Decomposicao
U t DU, 140
LU, 140
do erro, 250
Delta de Kronecker, 3
Densidade, 25
Desigualdade
Gronwall, 24
Poincare-Friedricks, 25
Diferencas Finitas, 25
Dilatacao, 7
Discretizacao do domnio, 107
DPhi, 122, 318
277
239
Indice
380
de movimento, 8
de Poisson, 102
Erro
de interpolacao, 92
em H 1 , 95
em H m , 98
em L2 , 95
Erro numerico, 64, 99, 148, 202
Espaco
distribuicoes, D (), 22
funcoes testes, 21
Sobolev, H m (), 23
Estimativa Otima,
98
Estimativa otima
norma L2 (), 245
Estimativa de Erro, 277
Estimativa de erro, 239
norma H01(), 287
Norma L2 (), 296
Estimativa na norma H01 (), 244
Estimativa na norma L2 (), 241
Existencia de solucao, 104, 266, 299
Forma bilinear, 19
coerciva, 19
contnua, 19
simetrica, 19
Formulacao Variacional
Equacao da Onda, 225
Equacao do Calor, 208
Fronteira, 111, 326, 327, 339
Fronteira de Neumann, 135, 188
Funcao base
c
ubica, 78
de ordem superior, 75
Hermite, 84
linear, 34
quadratica, 76
Funcao de interpolacao, 34, 118
dos dados, 113
gradiente de, 122
local, 41
Funcao interpolante, 98
g1, 62, 308
g2, 62, 309
Gauss-Legendre, 49
Geracao de malha, 107
GlobalSystem, 331, 338, 346
GlobalSystem, 139
Gradiente
de deformacao, 5
de deslocamento, 6
Grid, 320
GridData, 321
H m (), 23
H01 (), 23
Hess, 330, 345
Identidade polar, 291
InputCondFront, 60, 307
InputData, 60, 306
Interpolacao de funcao, 113
Interpolante, 92
Jaco, 331
Jacob, 122, 345
Jacobiano, 121
L1loc (), 22
L2 (), 22
Lei
de Fourier, 2, 101
de Hooke, 10, 167
Lema
Cea, 90
Douglas, Dupont, 241
LinearSolver, 63, 310
Load, 330
LocalSystem, 331
LocalSystem, 127, 181
Metodo
Indice
Crank-Nicolson, 214, 255
Newmark, 283
Trapezoidal, 214
Metodo
diferenca central, 227
Metodo de Euler
progressivo, 213
regressivo, 212, 250
Metodo Numerico
-metodo, 214
-metodo: equacao da onda, 230
Metodo trapezoidal, 258
Metodos Numericos e Algoritmos
equacao da onda, 224
equacao do calor, 207
Matriz
condutividade, 101, 104
rigidez, 33, 35
Matriz rigidez
global, 42, 46, 115, 136, 175
local, 41, 115, 176
propriedades, 114, 174
MatrizRigidez, 61, 308
Metodo
de Cholesky, 140
de eliminacao de Gauss, 38, 140
de colocacao, 15
de Crout, 140, 142
de Galerkin, 16, 31, 105, 170
de projecao, 14
Nbn, 325, 327, 337, 339
Nel, 60, 90, 107, 317, 337
Nelx, 108, 194, 317, 337
Nely, 108, 194, 325, 337
Neq, 111, 173, 317, 337
Nno, 107, 171, 317, 337
NoLG, 61, 110, 177, 308, 318
NoPos, 108, 317
Norm, 334, 350
Norma, 63, 149, 312
381
Norma H01 (), 278
Norma L2 (), 280
Nos, 60, 107
Ordem de Convergencia , 219
Ortogonalidade de erro, 90
OutputData, 63, 312
OutputResultado, 63, 312
Parametrizacao, 135
Phi, 122, 318
PhiMatriz, 127, 128, 319
PlotData, 321
PosNo, 108, 317
Princpio do maximo, 272
Problema
aproximado, 32, 106
discreto, 247, 283
semidiscreto, 239, 277
de calor, 13, 101
elastostatico linear, 13, 168
Programas computacionais, 305
Qm, 330
Quadratura Gaussiana, 49, 124
Rotacao infinitesimal, 199
Series de Fourier, 17
Smbolo de permutacao, 13
Sistema aproximado, 270, 299
SolExata, 63, 310
Solucao aproximada, 171
Solver, 147, 192
Spline c
ubica, 78
Taxa de Convergencia, 99
Tempo contnuo, 240
Tensor
de deformacao infinitesimal, 6, 167
de elasticidade, 10, 168
de rotacao infinitesimal, 6
de tensao, 8, 167
382
Teorema
Aubin-Lions, 24
Caratheodory, 300
da divergencia, 103
de regularidade de solucao, 275
do traco, 25
Lax-Milgram, 20, 30, 31, 104
TractionBoundary, 135, 188, 348
Transformacao isoparametrica, 49, 121
typ, 317, 337
Unicidade de solucao, 104, 271
problema de Neumann, 153, 199
Valor de fronteira, 111, 129
Vetor forca, 37
global, 44, 48, 115, 136, 175
local, 41, 115, 176
VetorForca, 62, 309
Xi, 61, 308
Indice