Vous êtes sur la page 1sur 12

Universidade Federal do Cear

Centro de Cincias
Departamento de Fsica
Mtodos Numricos para Fsica

Diferenas Finitas.

Aluno: Emanuel Pinheiro Fontelles


Curso: Mtodos Numricos para Fsica
Professor: Humberto Carmona

Matricula: 343913

Diferencas Finitas.

Aluno: Emanuel Pinheiro Fontelles


Professor: Humberto Carmona

Matrcula: 343913

Fortaleza, Julho de 2013


SUMARIO

Sum
ario
1 Introduc
ao

2 Corda Vibrante.
2.1 O Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
7

3 Conclus
ao

4 Ap
endices
4.1 Programa em C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9
9

5 Refer
encias Bibliogr
aficas

11

1 Introduc
ao

Introduc
ao

As cordas vibrantes apresentam suas duas extremidades fixas. A vibracao da corda


ocorre quando os seus pontos afastam-se da posicao de equilbrio estavel. O objetivo
deste trabalho e o de modelar a equacao da corda vibrante considerando a velocidade de
propagacao da onda como sendo um parametro incerto e encontrar a solucao aproximada
para tal equacao para alguns parametros em estudo.
Vamos considerar uma vibracao transversal de uma corda flexvel, em que as extremidades estao fixas nos pontos x = 0 e x = L. Suponhamos que nao haja forcas externas
que possam atuar na corda e que esta vibra unicamente em funcao da elasticidade.
2u
T 2u
=
(1)
t2
x2
Essa equacao aparece na descricao de fenomenos envolvendo a propagacao de ondas
num meio contnuo, por exemplo, no estudode ondas ac
usticas, ondas de agua, ondas
eletromagneticas e ondas ssmicas, onde a = T , e a velocidade de propagacao da onda,
T (Newton) e a tensao aplicada sobre a corda e (kg/m), que nesse caso varia de acordo
com a posicao
20 x
(x) = 0 +
,
com 0 x 1
(2)
L
O Metodos de Diferencas Finitas, consiste em substituir as derivadas parciais presentes
na equacao diferencial por aproximacoes de diferencas finitas. Usando diferencas centradas
de segunda ordem na variavel espacial para aproximar a derivada de segunda ordem
obtemos:
2u
u(xi + h, t) 2u(xi , t) + u(xi , t h)
=
+ O(h2 )
(3)
2
x
h2
e usando agora diferencas progressivas no tempo para aproximar a derivada de primeira
ordem produzimos a aproximacao:
2u
u(xi , t + ) 2u(xi , t) + u(xi , t )
=
+ O( 2 )
2
t
2

(4)

Em duas dimensoes impomos um grid retangular no espaco e no tempo dado por


xi = ihx ,
tj = jt ,

i = 0, 1, ..., Nx
j = 0, 1, ..., Nt

(5)
(6)

Podemos agora descrever a Equacao 01, em termos de Diferencas Finitas


j
j
j
uj+1
2uji + uj1
i
i
2 ui+1 2ui + ui1
a
=0
t2
h2x

(7)

onde a notacao foi introduzida para simplificarmos a equacao


uji = u(xi , tj )

(8)

Resolvendo para uj+1


i
uj+1
i

2T
2T
= 2
uji+1 + uji1 + 2uji 1 2
uij1
h (x)
h (x)

(9)

1 Introduc
ao

A molecula computacional e uma traducao grafica da Equacao 09, pois ela estabelece a
relacao de dependencia existente entre o valor no ponto (i, j + 1) e seus vizinhos. Note que
no caso do metodo explcito o ponto (i, j + 1) depende apenas dos pontos (i 1, j), (i, j),
(i + 1, j) e (i, j - 1) todos do nvel anterior da a palavra explcito. O ponto uij1 pode ser
facilmente determinado determinando novamente uma aproximacao em diferencas finitas,
logo
u(xi , t0 + ) u(xi , t0 )
u(x, t)
=
t
2
(
)
u(x, 0)
u(xi , t0 ) = u(xi , t0 + ) 2
t
t=t0

(10)
(11)

Para a resolucao desse problema tomares que a derivada de u em relacao ao tempo e


nula (t0 = 0), logo a Equacao 09 pode ser reescrita, apenas para o primeiro passo

u1i

2T
2T
j
j
j
u
+
u
+
2u
1

uj+1
=
i1
i
i
h2 (x) i+1
h2 (x)
(
)
(
)
2T
2T
0
0
0
=
u + ui1 + ui 1 2
2h2 (x) i+1
h (x)

uj+1
=
i

(12)

Pode-se ver que a Equacao (09) e uma equacao de recorrencia de ordem 2 em j, ou


seja, o termo j + 1 , depende dos termos j e j 1 . Logo para comecar ha um pequeno
problema, pois, para encontrar u2i , e preciso fazer j = 1 e conhecer os valores de u1i , que
sao as estimativas de u(x, t) na primeira linha do tempo. Mas os valores de u1i , dependem
dos valores de u0i na linha zero do tempo e dos valores de u1
i , problema resolvido quando
calculamos para o primeiro instante t = t0 a Equacao (12).
Tomaremos nesse problema como sendo
2T
h2 (x)
20 x
e (x) = 0 +
L
=

(13)

Assim, podemos facilmente resolver o problema para uma corda vibrante com densidade variavel sem muitas flutacoes nos resultados usando uma tecnica de estabilidade
numerica. Diz-se que um metodo computacional e estavel, se este nao propaga erros durante sua execucao. Para a utilizacao de alguns metodos computacionais e necessario fazer
uma analise para que nao haja nenhum erro grave. No caso do metodo das diferencas
finitas, o problema pode ser instavel se nao escolhermos convenientemente os valores de
2
. Por isso, usaremos uma solucao da forma:
h2
e100(x0,5)

(14)

Fazendo com que a onda em seu primeiro instante inicie na metade do intervalo e dividase em duas em sentidos opostos, analisaremos a solucao usando a densidade da corda
variavel, em primeira analise, percebe-se que a amplitude da onda varia de acordo com a
posicao, ou seja, um aumento linear na massa da corda, o que diminui aumenta a tensao,
diminuindo portanto a amplitude da onda.

2 Corda Vibrante.

Corda Vibrante.

Tomando uma corda vibrante, podemos considerar vibracoes transversais, como a


que encontramos em instrumentos musicais de cordas (violinos, piano, harpa, etc.). Um
deslocamento transversal de um ponto da corda teria geralmente duas componentes (y e
z), no entanto, vamos nos limitar a deslocamentos num dado plano, que podemos tomar
como o plano xOy.

Figura 1: Corda Vibrante. [1]


Para um pequeno elemento da corda podemos escrever, usando a Segunda Lei de
Newton, onde duas forcas estao atuando nesse elemento, a tensao e x e x + t
Fy = T (x)sen() + T (x + x)sen()

(15)

Considerando a amplitude da onda pequena podemos fazer as algumas aproximacoes


sen() = tg() =

u
x

e sen() = tg() =

u
x

(16)

e reescrevermos a Equacao (15), e expressando a derivada de x + x em Series de Taylor


em x, temos


u
u
Fy = T (x) + T (x + x)
(17)
x x
x x+x
A tensao na corda e a mesma em qualquer ponto logo,

Fy = T

u
u
2 u
2u
+
T
+
x
+
...

T
x
x x
x x
x2 x
x2

(18)

Pela Segunda Lei de Newton


F = ma = x

2u
2u
=
T
x
t2
x2

(19)

O cancelando ambos elementos de comprimentos da corda podemos escrever


2u
T 2u
=
t2
x2
A Equacao (20), e a famosa Equacao de Onda.

(20)

2 Corda Vibrante.

Diferencas Finitas
Como mencionado anteriormente discretizamos a Equacao (20), resolvendo-a por diferencas
finitas
uj+1
i

= (x)

uji+1

uji1

2uji

1 (x) uij1

Esse problema admite solucao u


nica se as funcoes possuem derivadas segundas contnuas
no intervalo (0,L) e se u(L) = u(0) = 0, essas sao as condicoes de contorno impostas no
problemas, tornando, a corda fixa em suas pontas.
O problema foi resolvido tomando o comprimento da corda com L = 1(m), a tensao
T = 10(N ) e a massa m = 0, 001(kg). Inicialmente, deformamos a corda tomando
um

T
chute inicial no meio da corda, tomando t = 0.0001(s) e h = at , onde a = ( (x) )(s)

u(x, 0) =

100(x0,5)2

e
0

se x = 0;
se 0 < x < 1;
se x = 0.

Obtivemos um grafico em diferentes instantes de tempo que descreve o movimento da


onda ao longo do eixo x, observamos ligeiramente o decaimento da onda que se dirige para
a direita, causa essa dependente da densidade da corda.

Figura 2: Resultados para a posicao em diferentes instantes de tempo, a amplitude depende da densidade, tornando-se cada vez menor a medida que o eixo x aumenta.
Inicialmente a onda parte de x = 0, 5L (curva vermelha), e a partir dai dividi-se em
duas, cada uma para um lado, e em um segundo instante (curva verde) temos que a
curva da direita diminui a medida que x aumenta, pois a densidade depende da posicao.
Podemos perceber claramente o decaimento da amplitude da onda na curva lilas, onde a
curva da esquerda sofre inversao de fase, pois a corda esta fixa, e a curva da direita que
ainda nao inverteu a fase, mostra-se com amplitude muito pequena, ou seja, a velocidade
de propagacao da onda e muito menor que inicialmente.

2.1

O Algoritmo

2.1

O Algoritmo

O algoritmo parte da implementacao das Equacoes (09) e (12), onde primeiramente


calculamos a Equacao (12), e a partir dai podemos calcular a Equacao (09). Para a
condicao de contorno imposta podemos calcular em um instante depois de x1 e um anterior a xf , assim determinando as solucoes para diferentes instantes de tempo, plotando
todas as solucoes em arquivos separados ate o determinado instante de tempo.
Primeiramente, inicializamos todas as variaveis, e calculamos o primeiro valor de u(x,t)
f o r ( i n t i = 1 ; i < Nx ; i ++){
x [ i ] = x0 + i h ;
u1 [ i ] = exp ( 100.0 ( x [ i ] 0 . 5 ) ( x [ i ] 0 . 5 ) ) ;
// p u l s o i n i c i a l u ( x , t o )
}
e p s i l o n . r e s i z e (Nx+1);
f o r ( i n t i =0; i<=Nx ; i ++){
e p s i l o n [ i ] = d e l t a d e l t a Tensao / ( hh (mu0+2mu0x [ i ] / x f ) ) ;
}
f o r ( i n t i =1; i < Nx ; i ++){
u0 [ i ] = 0 . 5 e p s i l o n [ i ] ( u1 [ i +1] + u1 [ i 1] ) + u1 [ i ](1 e p s i l o n [ i ] ) ;
// usa o p u l s o i n i c i a l para c a l c u l a r u ( x , t o+h )
}
Apos a inicializacao interamos todo o range, menos as pontas, pois temos todas as
recorrencias necessarias
void i t e r a r (){
f o r ( i n t i =1; i <Nx ; i ++){
u [ i ] = e p s i l o n [ i ] ( u0 [ i +1]+u0 [ i 1]) + 2 . 0 u0 [ i ] ( 1 . 0 e p s i l o n [ i ] ) u1 [ i ] ;
//u ( x , t+d ) baseado em u ( x , t ) e u ( x , td )
}
f o r ( i n t i = 1 ; i < Nx ; i ++){
u1 [ i ] = u0 [ i ] ;
u0 [ i ] = u [ i ] ;
}
t = t+d e l t a ;
}
Assim resolvemos o problema para a densidade variavel, onde a variavel epsilon, armazena a densidade em toda a corda e depois a na funcoes iterar, as flutuacoes do erro
sao muito baixa, pois a escolha da Equacao (14), foi escolhidade de tal forma a tornar o
metodo estavel.

3 Conclus
ao

Conclus
ao

Nos descrevemos em detalhes o algoritmo para estudar uma Corda Vibrante usando
o Diferencas Finitas, apresentou-se graficos mostrando os resultados obtidos numericamente, analisando o comportamento com a evolucao do eixo x.
Uma descricao em detalhes da implementacao do algoritmo foi discutida na Secao 2.1,
como tambem uma previa da discretizacao em Diferencas Finitas aplicada para resolucao
desse problema em uma linguagem de programacao. O algoritmo completo e apresentado
no Apendice, todo o programa esta escrito em Linguagem C++.
O resultado obtido esta de acordo com o previsto teoricamente pela equacao abaixo,
onde a e a velocidade de propagacao da corda, T a tensao e a densidade linear da corda

T
(x)
20 x
= 0 +
L
a =

assim se a densidade linear aumenta a velocidade de propagacao da onda diminui, o que


foi observado na Figura 02, se a densidade fosse costante observariamos duas ondas iguais.
A discretizacao em Diferencas Finitas pode ser aplicada em qualquer equacao diferencial parcial de segunda ordem, bastando apenas escrever as equacoes iniciais e para
instantes posteriores. Poderiamos tambem aplicar Teoria dos Conjuntos Fuzzy e analisar
os diferentes resultados para a2 .

4 Ap
endices

4
4.1

Ap
endices
Programa em C++

#i n c l u d e <c s t d l i b >
#i n c l u d e <i o s t r e a m >
#i n c l u d e <f s t r e a m >
#i n c l u d e <sstream>
#i n c l u d e <iomanip>
#i n c l u d e <math . h>
#i n c l u d e <s t r i n g >
#i n c l u d e <v e c t o r >
#i n c l u d e <u n i s t d . h>
u s i n g namespace s t d ;
dou ble x0 = 0 . 0 , x f = 1 . 0 ;
dou ble t 0 = 0 . 0 , t f = 0 . 0 1 , t ;
dou ble Tensao = 1 0 . 0 ;
dou ble mu0 = 0 . 0 0 1 ;
dou ble c = s q r t ( Tensao /mu0 ) ;
dou ble d e l t a = 0 . 0 0 0 1 , h = c d e l t a ;
i n t Nx =( i n t ) ( ( x f x0 ) / h ) ;
i n t c o n t a d o r = 0 , p a s s o S a l v a r =20;
v e c t o r <double> x , u , u0 , u1 , e p s i l o n ;
void i t e r a r (){
f o r ( i n t i =1; i <Nx ; i ++){
u [ i ] = e p s i l o n [ i ] ( u0 [ i +1]+u0 [ i 1]) + 2 . 0 u0 [ i ] ( 1 . 0 e p s i l o n [ i ] )
u1 [ i ] ; //u ( x , t+d ) baseado em u ( x , t ) e u ( x , td )
}
f o r ( i n t i = 1 ; i < Nx ; i ++){
u1 [ i ] = u0 [ i ] ;
u0 [ i ] = u [ i ] ;
}
t = t+d e l t a ;
}
void i n i t (){
x . r e s i z e (Nx+1);
u . r e s i z e (Nx+1);
u0 . r e s i z e (Nx+1);
u1 . r e s i z e (Nx+1);
x [ 0 ] = x0 ;

4.1

Programa em C++

10

x [ Nx ] = x f ;
u[0] = 0.0;
u [ Nx ] = 0 . 0 ;
u1 [ 0 ] = 0 . 0 ;
u1 [ Nx ] = 0 . 0 ;
u0 [ 0 ] = 0 . 0 ;
u0 [ Nx ] = 0 . 0 ;

f o r ( i n t i = 1 ; i < Nx ; i ++){
x [ i ] = x0 + i h ;
u1 [ i ] = exp ( 100.0 ( x [ i ] 0 . 5 ) ( x [ i ] 0 . 5 ) ) ;
// p u l s o i n i c i a l u ( x , t o )
}
e p s i l o n . r e s i z e (Nx+1);
f o r ( i n t i =0; i<=Nx ; i ++){
e p s i l o n [ i ] = d e l t a d e l t a Tensao / ( hh (mu0+2mu0x [ i ] / x f ) ) ;
}
f o r ( i n t i =1; i < Nx ; i ++){
u0 [ i ] = 0 . 5 e p s i l o n [ i ] ( u1 [ i +1] + u1 [ i 1] ) + u1 [ i ](1 e p s i l o n [ i ] ) ;
// usa o p u l s o i n i c i a l para c a l c u l a r u ( x , t o+h )
}
iterar ();
}
void i d l e ( void ) {
c o n t a d o r = c o n t a d o r +1;
iterar ();
i f ( c o n t a d o r%p a s s o S a l v a r ==0){
s a l v a r ( contador ) ;
}
}
i n t main ( v o i d ){
init ();
salvar (0);
w h i l e ( t<=t f ){
idle ();
}
return 0;
}

5 Refer
encias Bibliogr
aficas

11

Refer
encias Bibliogr
aficas
1. DEVRIES, Paul L., A First Course in Computational Physics. 1a Edicao - 1994.
John Wiley & Sons, INC. Canada.

2. LANDAU, Rubin H. PAEZ,


Manuel J. BORDEIANU, Cristian C., Computational
Physics Problem Solving with Computers. 2a Edicao - 2007. Editora WILEY-VHC
Co.
3. BUTCHER, J. C., Numerical Methods for Ordinary Dierential Equations. 2a
Edicao - 2008. Editora WILEY-VHC Co.
4. ANDI, Klein e GODUNOV, Alexander, Introductory Computational Physics. 1a
Edicao - 2006. Cambridge University Press.
5. CAMPOS FILHO, F. Ferreira, Algoritmos numericos. 2a Edicao - 2007. LTC Editora.
6. GAELZER, Rudi, Introducao `a Fsica Computacional. 6a Edicao - 2011. Instituto
de Fsica e Matematica, Fundacao Universidade Federal de Pelotas.
7. LAMBERT, J.D., Computational Methods in Ordinary Dierential Equations , John
Wiley and Sons.
8. BOYCE W. E. e DIPRIMA R. C. Equac
oes Diferenciais Elementares e Problemas
a
de Valores de Contorno. 6 edicao, 1998. LTC Editora, Rio de Janeiro.

Vous aimerez peut-être aussi