Você está na página 1de 77

Introduo Fsica Computacional

Klaus Cozzolino

Professor Associado da Faculdade de Fsica


Instituto de Cincias Exatas e Naturais
da Universidade Federal do Par - PA

Belm 27 de outubro de 2014


ii

Editor:
Capa
Impresso

Cozzolino, Klaus
Introduo Fsica Computacional / Klaus Cozzolino
1.ed. Par: Editora....., 2014
Bibliografia
1. Fsica Mtodos Computacionais I. Ttulo

ndices para catlogo sistemtico

Fsica: Fsica Computacional

ISBN:

Editora
Telefone
Fax
Endereo eletrnico:
Sumrio

Prefcio v

1 Introduo 1
1.1 Ementa e Objetivo da disciplina . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Conceitos iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Fluxogramas e Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Comandos, estruturas e scripts no ambiente Octave/Matlab . . . . . . . . . . . . 4
1.5 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2 Integrao e Diferenciao Numricas 11


2.1 Integrais definidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.1 Regra do Trapzio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.2 Regra de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Quadratura Guassiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.1 Quadratura Gauss-Legendre . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Integrais Imprprias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1 Quadratura Gauss-Laguerre . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Diferenciao Numrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.1 Aproximaes de primeira e segunda ordem para f 0 (x) . . . . . . . . . . . 20
2.4.2 Aproximaes de primeira e segunda ordem para f 00 (x) . . . . . . . . . . . 21
2.4.3 Aproximaes de f 0 (x) e f 00 (x) cbicas e qurticas . . . . . . . . . . . . . 21
2.5 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3 Razes de Funes de uma Varivel 25


3.1 Mtodo da Iterao Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.1 Convergncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2 Mtodo de Newton-Raphson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.1 Convergncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3 Mtodo da Secante (Rgula Falsi) . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4 Mtodo da Bisseo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

iii
iv SUMRIO

4 Ajuste de Curvas 31
4.1 Mnimos Quadrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.1.2 Mnimos Quadrados Ponderados . . . . . . . . . . . . . . . . . . . . . . . 34
4.2 Ajuste por uma funo qualquer (Newton e Gauss-Newton) . . . . . . . . . . . . 36
4.3 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

5 Sistema de Equaes Lineares 45


5.1 Definies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.2 Mtodo de Gauss (Eliminao Gaussiana) . . . . . . . . . . . . . . . . . . . . . . 46
5.3 Mtodo de Gauss-Jordan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.4 Decomposio LU (ou Fatorao LU) . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.5 Mtodo Iterativo de Jacobi-Richardson . . . . . . . . . . . . . . . . . . . . . . . . 49
5.6 Mtodo de Gauss-Sidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.7 Convergncia dos mtodos Iterativos . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.8 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

6 Soluo de Equaes Diferenciais Ordinrias 55


6.1 Decaimento Radioativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.2 Equao de Poisson 1-D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.2.1 Algoritmo de Thomas - Sistemas tridiagonais . . . . . . . . . . . . . . . . 58
6.3 Oscilaes Simples, Amortecidas e Foradas . . . . . . . . . . . . . . . . . . . . . 61
6.3.1 Oscilador Harmnico Simples . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3.2 Oscilaes Foradas com Amortecimento . . . . . . . . . . . . . . . . . . . 63
6.4 Algoritmo Verlet (Velocity-Verlet) . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.5 Sistemas de Equaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.6 Mtodo de Runge-Kutta 4 Ordem . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Referncias Bibliogrficas 71
Prefcio

Os leitores encontraro nesta primeira edio do livro uma introduo linguagem de progra-
mao bsica a ser desenvolvida e exercitada em ambientes como Octave, FreeMat e tambm
Matlab. Os dois primeiros ambientes podem ser baixados gratuitamente e instalados tanto no
sistema operacional Windows como sistema Linux.
Sendo esta disciplina interdisciplinar pressupe-se que os estudantes possuam conhecimentos
anteriores das fsicas bsicas, da algeba linear e das disciplinas de clculo diferencial e integral.
O conhecimento prvio de programao, embora desejvel, no constitui condio imperativa ao
bom desempenho dos estudantes em face da enorme rede de informaes e dos materiais nela
disponibilizados.
Ao longo dos captulos algumas tcnicas numricas clssicas so apresentadas com o objetivo de
reforar o aprendizado das estruturas bsicas de programao bem como de suas aplicaes em
problemas fsicos. As tcnicas numricas somadas a programao so novidade para a maioria
dos estudantes o que naturalmente exigir um pouco mais de dedicao para a sua melhor
assimilao.
Gostaria de agradecer ao Professor Dr. Joo Furtado de Souza por sua iniciativa de propor a
publicao desta primeira edio do livro que embora incompleta (parte I), constitui mais uma
ferramenta a deslanchar o ensino de Fsica, tanto terico como experimental.
vi PREFCIO
Captulo 1

Introduo

1.1 Ementa e Objetivo da disciplina

Introduo a linguagem cientfica de programao a ser usada no curso OCTAVE/FreeMat/Ma-


tLab. Introduo aos mtodos bsicos de clculo numrico: zeros de funo, ajuste de dados,
integrao, diferenciao e soluo de sistemas algbricos. Soluo de equaes diferenciais ordi-
nrias por mtodos explcitos e implcito que modelem sistemas fsicos (opcional).
Objetiva-se neste curso fornecer meios para que o(a) estudante receba, por uma abordagem
moderna, as informaes bsicas, mas necessrias para o uso das facilidades computacionais
existentes na maioria das Escolas, Faculdades e Universidades bem como em sua prpria resi-
dncia. Neste contexto pretende-se que o(a) aluno(a) tenha, ao final do curso, desenvolvido a
lgica de programao e assimilado as tcnicas numricas que porventura possam auxiliar em
sua vida acadmica e profissional.

1.2 Conceitos iniciais

Linguagem de programao: comunicao pessoa computador.


Como exemplo de linguagens de programao temos:

ASSEMBLY - Esta linguagem de programao foi criada no meio da dcada de 50 para


substituir a linguagem de mquina (linguagem binria que a Unidade Central de Proces-
samento ou CPU entende).

ALGOL - ALGOrithmic Language. Criada em 1958 constituda por uma mistura de lin-
guagens de programao. Considerada a primeira linguagem de programao estruturada.

COBOL - COmmon Business Oriented Language. Criada em 1960 com objetivo de ma-
nipular grandes arquivos. Utilizado por bancos e empresas para manuteno de contas
correntes, folhas de pagamento, controle de estoque e outras aplicaes.

BASIC - Beginners All-purpose Symbolic Instruction Code. Foi criada em 1964 no Dart-
mouth College e muito utilizada nos primeiros computadores pessoais (PCs).

VBASIC - Visual Basic. Evoluo da Linguagem Basic, muito usada na construo de


aplicativos para sistemas Windows como MSOffice e outros aplicativos grficos.
2 CAPTULO 1. INTRODUO

PASCAL - Criada em 1970 por Niklaus Wirth, tinha por objetivo a substituio do BASIC
por ser uma linguagem estruturada e robusta. As liguagens de programao Turbo Pascal
e Delphi so evolues do PASCAL.

C - Foi lanada em 1972 para o desenvolvimento de sistemas operacionais UNIX sua evo-
luo resultou na linguagem C++ muito utilizada para programao cientfica.

FORTRAN - FORmula TRANslation. A primeira verso padronizada foi lanada em 1966


tendo o nome de FORTRAN66. Aprimoramentos do compilador culminaram nas verses
FORTRAN 77, 90 e 95, 2003 e 2008.

JAVATM - muito utilizada atualmente em ambientes de internet, nos celulares, tablets, em


vizualizaes 3D e aplicativos grficos. Desenvolvida pela companhia Sun Microsystems
uma linguagem de programao multiplataforma.

Qualquer que seja a linguagem de programao usada precisamos seguir algumas importantes
etapas para que tenhamos sucesso. So elas

1. planeje os projetos antecipadamente - identifique as principais variveis a serem usadas nos


clculos, o mtodo ou mtodos numricos a serem empregados e como os resultados devem
ser apresentados;

2. desenvolva-os por estgios - incio, corpo e sadas;

3. modularize-os - se possvel estruture seu programa em mdulos estanques;

4. mantenha-o simples - cdigos complexos dificultam a depurao, ou seja, a identificao e


remoo dos erros tipogrficos, lgicos e metodolgicos;

5. sempre teste cada estgio - a sada de um estgio (dados, nmeros, decises) normalmente
usada no prximo mdulo. Se um estgio estiver com erros os resultados do prximo
tambm estaro errados;

6. documente todo o programa - insira comentrios para facilitar a compreenso das etapas
sempre que julgar necessrio;

7. obtenha e interprete seus resultados

denominadas de REGRAS de OURO da PROGRAMAO ou golden rules na lngua inglesa


(RINO, 2008).

1.3 Fluxogramas e Algoritmos

Todo programa - ou cdigo fonte - escrito com um editor de texto normalmente muito simples
como o Notepad (do Windows), o Vi (do Linux), o Edit (no DOS) mas possvel editar tambm
em ambientes de programao prprios linguagem em uso como o MSDeveloperStudio para
Fortran ou C++ ou Visual Studio C++.
Os programas mais simples assemelham-se uma redao possuindo incio, meio e fim (ou con-
cluso). O incio de um programa normalmente denominado de etapa de inicializao e/ou
entrada de dados: contm informaes importantes que sero utilizadas tais como constantes,
dimenses de matrizes e de vetores bem como valores iniciais. O corpo do programa contm as
instrues principais a serem passadas Unidade de Processamento Central (CPU) da mquina
1.3. FLUXOGRAMAS E ALGORITMOS 3

para que a mesma realize as tarefas. nesta etapa que os clculos so realizados atravs de
linhas de comando/instrues especficas cada linguagem de programao, i. e.
a = 2 + b, atribua ao a o resultado da soma de 2 com b e
c = a exp(b t), atribua ao c o resultado das operaes.
Na concluso do cdigo fonte encontramos instrues como sada de resultados para arquivos,
sadas grficas ou simplesmente uma mensagem de finalizao da execuo. Uma simples sada
como Aplique na Ao X ou NO Aplique na Ao Y pode ser o resultado de inmeras
linhas de instrues de um cdigo executvel.
O Algoritmo: um conjunto resumido de instrues (ou comandos) a serem realizadas pelo
computador.
O Fluxograma: apresenta as instrues de um algoritmo na forma grfica atravs de figuras
geomtricas com as instrues principais em seu interior.
Exemplos de algoritmos, fluxogramas introduo a programao podem ser encontrados em GUS-
MAN; VASCONCELLLOS (1985); MEDINA; CRISTINA (2005).

Exemplo 1: desejamos construir uma tabela com 1000 linhas que contenha em suas colunas o
tempo, a velocidade e a posio de um objeto que se desloca com acelerao constante.
Para isso usamos as equaes da Fsica pertinentes cinemtica inserindo, via teclado,
alguns dados iniciais como posio e velocidade em t = to . Abaixo temos um exemplo de
fluxograma e um do algoritmo desenvolvido para tal fim.
.

1. Inicialize as variveis: N = 0, dt = 0.1, a,


vo, xo, to

2. Calcule:
novo tempo t = to + N*dt;
nova velocidade v = vo + a*t;
nova posio x = xo +vo*t +0.5*a*t^2
3. Escreva em TAB.DAT: t , v e x

4. Incremente o valor de N: N = N + 1

5. Se N < 1000 v para o passo 2 caso con-


trrio 6

6. Fim

Figura 1.1: Exemplo de Fluxograma ( esquerda) e Algoritmo ( direita) para gerao de uma ta-
bela de dados (arquivo TAB.DAT) com 1000 linhas contendo em cada linha tempo (t), velocidade
(v) e posio (x).
4 CAPTULO 1. INTRODUO

Observe e reflita: no fluxograma encontramos uma figura de deciso (losango) com a instruo
N maior ou igual a 1000? . Porm, no item 5 do algoritmo tem-se, Se N for menor do
que 1000 v .... Estas instrues so claramente diferentes mas realizam o mesmo propsito: a
repetio das instrues necessrias a construo de uma tabela contendo o tempo, a velocidade
e a posio de um mvel em movimento retilneo uniformemente acelerado - MRUA.

1.4 Comandos, estruturas e scripts no ambiente Octave/Matlab

Como em qualquer ambiente de programao importante sabermos passar para o computador


um conjunto de comandos para que o mesmo compreenda e execute. A Tabela 1.1 abaixo
contm alguns comandos e estruturas encontrados na maioria dos programas cientficos. Os
dois primeiros so estruturas de lao usados para executar repetidamente uma instruo ou um
conjunto de instrues ou operaes com diferentes dados a cada lao. O terceiro caso usado
em situaes que exijam deciso, por exemplo, se o relgio estiver parado d corda e acerte a
hora, caso contrrio no faa nada.
Informaes adicionais das funes pr-definidas no ambiente Matlab so encontradas em JA-
LN J. G. D.N; RODRGUEZ; VIDAL (2005) bem como nos arquivos de ajuda (help) que vm
junto com o aplicativo THE MATHWORKS (2002).

Exemplo 2: para criar um vetor linha com quatro elementos escrevemos na linha de comando
- prompt - do ambiente Matlab (>>):
>> v = [ 0 . 0 0 . 5 0 . 9 1 . 2 ] ;

e teclamos enter. Os elementos do vetor devem estar separados por espao ou vrgulas.
Um vetor com elementos igualmente espaados de 0.1, que inicie com 0 e termine com 0.5,
pode ser criado usando a linha de comando:
>> v i = 0 : 0 . 1 : 0 . 5 ;

o que resultar aps a execuo na atribuio de seis elementos varivel vi: vi = [0.0 0.1
0.2 0.3 0.4 0.5]. Se desejamos definir uma matriz 4x4 usamos
>> M = [ 0 . 5 3 . 0 2 . 5 3 . 6 ; 1 . 0 6 . 0 3 . 0 2 . 8 ; 2 . 0 5 . 0 3 . 0 4 . 0 ; . . .
1.0 8.0 4.0 2 . 0 ] ;

onde a quebra da linha da matriz indicada pela insero do ; (ponto e vrgula).


Multiplicar a matriz M por um vetor coluna vt ou seja o vetor transposto de v fazemos:
>> v1 = M v ;

J uma matriz inversa pode ser obtida com o comando inv :


>> IM = i n v (M) ;

Para obtermos o quadrado dos valores de um vetor usamos a multiplicao elemento-a-


elemento .*:
>> v2 = v . v ;

cujo resultado a atribuio dos valores [02 0.52 0.92 1.22 ] = [0 0.25 0.81 1.44] a
varivel v2. Porm se fizermos
>> r e s = v v ;
1.4. COMANDOS, ESTRUTURAS E SCRIPTS NO AMBIENTE OCTAVE/MATLAB 5

Tabela 1.1: Estruturas e comandos iniciais em MATLAB/OCTAVE.

Comando/ Estrutura Exemplo Comentrio


for i = 1 : N;
estrutura de lao - para i
comando 1 ;
for ... end variando de 1 at N repita
comando 2; ...
comando 1 e comando 2
end;
while condio; estrutura de lao - enquanto
while ... condio ... comando1 ; condio for verdadeira
end; comando2 ; ... repita as instrues comando
end; 1 e comando 2
if condio;
estrutura de deciso - se
comando 1;
condio for verdadeira
if ... else ... end; else;
execute comando 1 caso
comando 2;
contrrio exec comando2
end;
+e- y=z+w-I soma e subtrao
*e/ x = vo + a * t; y = z / x ; multiplicao e diviso
^ y = yo + a * t^2 potenciao ou radiciao
cos , acos , sin , asin,
operaes trigonomtricas e
tan , atan , sec , asec , a = cos(x) , arc = asin(M)
suas inversas (radianos)
...
lista as variveis e bem como
whos whos
suas dimenses
suprime todas as variveis do
clear clear ; clear x y z espao de trabalho ativo e
suprime apenas x, y e z
no. de elementos do vetor x e
length( ) length(x) ; length(M) max. dimenso da matriz M

inicializa uma matriz 3x2 com


zeros( ) , ones( ) M=zeros(3, 2) ; N=ones(3, 2) todos elementos nulos ou uns

( ... ) y = 2*pi / (3 * y) indica preferncia na operao


help comando ou lista uma ajuda sobre o
help plot
funo comando plot
carrega na memria os dados
contidos no arquivo nome.ext
load load nome.ext -ascii
e cria uma matriz no ambiente
Matlab
salva no diretrio corrente
os dados armazenados em
save save nome.ext varivel -ascii
varivel no arquivo
nome.ext
transposio do vetor/matriz
(valores reais) ou
vt = v ; Mt = M ;
transposio do complexo
conjugado
6 CAPTULO 1. INTRODUO

o resultado ser o produto interno (escalar) ~v ~v = 02 + 0.52 + 0.92 + 1.22 = 2.5. A sutil
diferena - o ponto antes do sinal de multiplicao - instrui a CPU que: multiplique o
primeiro elemento de v (antes de .* ) com o primeiro elemento de v (depois de .*) assim
sucessivamente at os ltimos elementos dos vetores, armazenando cada resultado no vetor
v2. Se usarmos
>> v2 = v . ^ 2 ;

tambm obtemos um vetor resultante v2 idntico ao anterior onde cada elemento de v2


o quadrado do respectivo elemento em v. Se desejamos criar uma matriz 3x3 com todos os
elementos nulos podemos usar o comando zeros na forma
>> MZ = z e r o s ( 3 , 3 ) ;

e atribumos valores a cada elemento da matriz usando por exemplo


>> MZ( 1 , 1 ) = 5 . 0 ; % o e l e m e n t o de MZ l i n h a 1 c o l u n a 1 p a s s a a s e r 5 . 0
>> MZ( 2 , 3 ) = 1 . 0 ; % o e l e m e n t o de MZ l i n h a 2 c o l u n a 3 p a s s a a s e r 1 . 0

Exemplo 3: O cdigo fonte depende da linguagem de programao.

Cdigo fonte do Exemplo 1 em FORTRAN Cdigo fonte do Exemplo 1 em MA-


TLAB/OCTAVE
program tabela
! cria TAB.DAT c/ t v e x % tabela.m
integer :: N, Nlin=1000 % cria TAB.DAT c/ t v e x
real :: dt=0.1 Nlin = 1000;
real :: t, v, x, to, vo, xo dt = 0.1;
print*,entre c/ a,to,vo,xo a =input(Entre c/ a :);
read*,a,to,vo,xo to=input(Entre c/ to:);
open(unit=10, file=TAB.DAT,& vo=input(Entre c/ vo:);
status=UNKNOWN) xo=input(Entre c/ xo:);
N = 0 fid = fopen(TAB.DAT,w);
do while (N < Nlin) N = 0;
t = to + N * dt while N < Nlin;
v = vo + a * t t = to + N * dt;
x = xo + vo *t + 0.5* a * dt v = vo + a * t;
write(10,*) t, v, x x = xo + vo *t + 0.5* a * dt;
N = N + 1 fprintf(fid,%e %e %e \n,t,v,x);
end do N = N +1;
close(10) end;
write(6,*) FIM DA EXECUO fclose(fid);
stop disp(FIM DA EXECUO)
end
Figura 1.2: Cdigos fonte em FORTRAN ( esquerda) e Matlab/OCTAVE ( direita).

No cdigo para Matlab acima as duas primeiras linhas so comentrios e portanto no


so executadas: comeam com % . Na terceira e quarta linhas so inicializadas as
variveis nmero de linhas da tabela (Nlin) e incremento do tempo (dt). Da quinta a
oitava linha vemos as instrues de entrada de dados via teclado (comando input). O
arquivo TAB.DAT aberto para escrita na nona linha. Na dcima linha inicializa-se
o contador N necessrio estrutura de lao while compreendido entre as linhas 11
18. Dentro do lao as instrues sero executadas enquanto a condio N < Nlin
1.4. COMANDOS, ESTRUTURAS E SCRIPTS NO AMBIENTE OCTAVE/MATLAB 7

for verdadeira. Os valores de t, v e x so alterados a cada execuo do lao while e o


comando fprintf instrui a mquina a escrever os valores das variveis em uma linha no
formato cientfico (%e) 1.2345678e00 que equivale a 1.2345678 1000 . O \n instrui o
computador a pular de linha aps escrever os valores numricos de t, v e x no arquivo, isto
para cada valor do contador N . Na sequncia o valor de N incrementado de uma unidade
para um nova repetio das instrues dentro do lao. Quando N for igual a 1000 o lao
interrompido e o computador ir executar a linha posterior ao end ou seja ir fechar o
arquivo TAB.DAT para ento escrever na janela de comando do ambiente Matlab o fim
da execuo do script tabela.m .
Deve-se ressaltar que em ambos os cdigos existe um erro no clculo de x(t): o ltimo termo
da equao deveria ter 0.5*a*t*t. Este tipo de erro no incomum, ou o programador
desconhece a equao da cinemtica ou ocorreu erro de digitao. Em ambos os casos os
resultados da posio da partcula no arquivo TAB.DAT estaro errados!
Exemplo 4: A srie de Taylor da funao f (x) = sen(x) dada por

x3 x5 x7 X (1)k+1 x2k1
f (x) = sen x = x + + =
3! 5! 7! (2k 1)!
k=1

Para responder quantos termos so necesrios para que o resultado da srie em x = /3


tenha preciso de 4 casas decimais foi desenvolvido o seguinte algoritmo

1- limpar memria
2- definir soma como zero
3- definir preciso desejada
4- inicializar o contador k 0
5- definir ponto x
6- enquanto |termo| > = precisao faa
k k +1
termo (-1)^(k +1) * x^(2*k -1) / (2*k -1) !
soma soma + termo
fim do lao 6
7- escreva o valor do contador k
8- escreva o resultado do seno de x

Trasncreva o algoritmo para linguagem Octave/MatLab - use o editor. Salve e execute


o script.
Observaes: no ambiente Matlab/Octave o fatorial de um nmero (num) obtido usando
a instruo factorial(num). Um erro frequente ao codificar o algoritmo acima para uma
linguagem de programao pode ocorrer: o valor da varivel termo no foi definido antes
do teste na instruo de nmero 6. O valor absoluto de um nmero obtido com a funo
abs(num).
Exemplo 5: Um nmero denominado de preciso da mquina (eps) tem valor aproximado de
2, 22 1016 . Ao somar ou subtrair este valor de um escalar o resultado permanece inal-
terado. Com o intito de calcular o eps o seguinte algoritmo foi desenvolvido

1- limpar memria
2- definir um como 1
3- definir eps como um
4- enquanto eps + um > um faa
eps eps/2
fim do lao 4
8 CAPTULO 1. INTRODUO

5- escreva o valor encontrado de eps

Trancreva o algoritmo para a linguagem Octave/MatLab, salve e execute o script.

Exemplo 6: Segundo ?, p. 362 a funo de Bessel de primeiro tipo e ordem zero pode ser
expressa segundo

X (1)k  x 2k
J0 (x) = .
(k!)2 2
k=0

Em virtude de limitaes computacionais esta srie dever ser truncada em N termos antes
de ser utilizada em um cdigo (programa). Estamos interessados em determinar quantos
termos devemos usar para atingir o limite de preciso do computador (o eps).
Para simplificar a estimativa do nmero de termos da srie cosideremos x = 2. O fator
principal que determinar a magnitude do termo da srie ser o denominador (k!)2 logo,
ao igualar este termo ao eps teremos
s
1 1016
2, 22 1016 = N ! = N ! 68 106 .
(N !)2 2, 22

Usando divises sucessivas teremos: 68 106 /2/3/4/5/6/7/8/9/10/11 = 1, 7 N 11,


ou seja, so necessrios aproximadamente onze termos da srie para alcanar a preciso da
mquina.
Para testar a estimativa acima o seguinte algoritmo foi desenvolvido

1- limpar memria
2- definir soma como zero
3- definir preciso desejada (= eps)
4- inicializar o contador k 0
5- definir ponto x 2
6- definir termo (deve ser maior que o valor em preciso)
7- enquanto |termo| > = precisao faa
termo (-1)^k * (x/2)^(2*k ) / (k !)^2
soma soma + termo
k k +1
fim do lao 7
8- escreva o valor do contador k

Tomando por base o algoritmo programe um script para Octave, salve e execute-o. O
resultado de k ao final da execuo est de acordo com o que foi calculado para N ?

Observao: a instruo plot nos permite gerar grficos de dados tabelados. Se desejamos
o grfico de x(t) necessrio que exista na memria do computador os dados dos pares
ordenados (t, x). Os grficos normalmente so acompanhados por textos explicativos nos
eixos horizontal xlabel e vertical ylabel. Vejamos um exemplo simples de como gerar um
grfico completo com a instruo plot e as instrues auxiliares:

>> t = 0 : 0.1 : 2*pi ; % cria lista de valores de tempo


>> x = 2 * t.^2 - 3 * t + 5 ; % cria lista de valores de x p/ cada t
>> plot(t, x) ; % gera o grfico de x(t)
>> xlabel(t (s)) ; ylabel(x (m)); % introduz textos nos eixos
>> title(x(t)); % introduz o ttulo do grfico
>> grid % linhas auxiliares (grade)
1.5. EXERCCIOS 9

1.5 Exerccios
1.1- Edite um arquivo de nome tabela.m copiando o script (cdigo fonte) para Matlab/Octave
apresentado na Figura1.2. No ambiente Matlab execute o cdigo e verifique a presena do
arquivo TAB.DAT no diretrio de trabalho, aps a execuo do script. Abra o arquivo
TAB.DAT com o editor e verifique se nmero de linhas est correto.

1.2- Ao final do cdigo (script) tabela.m adicione a linha load TAB.DAT e abaixo outra
linha plot(TAB(:,1), TAB(:,3),b); grid; salve, execute o cdigo e descreva o que
aconteceu. Mude b no comando grfico plot para ro, salve, execute o script e
descreva o que ocorreu. Digite help plot no prompt (>>) do ambiente MATLAB, leia o
texto e tire suas concluses.

1.3- (a) Crie um algoritmo com intuito de gerar um arquivo de dados (mhs_a.dat) que contenha
100 linhas de modo que cada linha possua o tempo (t), a deformao da mola (xs) do
MHS e a deformao da mola (xa) do movimento harmnico amortecido. (b) Transcreva
o algoritmo para um fluxograma. (Dica: reveja o contedo de oscilaes para obter as
equaes horrias de x(t) para cada sistema fsico).

1.4- Reveja o exemplo 5 neste captulo. Codifique o algoritmo acima em um script para Ma-
tlab/Octave e verifique o valor encontrado do eps.

1.5- Crie um script para o ambiente Matlab/Octave que gere um vetor de elementos igualmente
espaados de 1 a 1001, com incremento de 10. Em seguida use a estrutura de lao
for i = inicio : incremento : fim;
comandos;
end;
para somar os elementos do vetor. ( Obs.: no Matlab obtemos o valor numrico do elemento
i=2 de um vetor usando v(i). Isto equivalente a escrever valor=v(2), o que atribui
a varivel valor o nmero armazenado na posio 2 do vetor v. Dica: reveja o script na
Figura 1.2 na pgina 6 e preste ateno no contador N. Esta estrutura tambm chamada
de acumulador e pode ser ligeiramente modificada para acumular as sucessivas somas dos
elementos do vetor.)

1.6- O vetor que posiciona o centro de massa (CM) de um sistema discreto de massas calculado
por

~rCM = xCM i + yCM j + zCM k com xCM = mi xi/P mi


P

e assim sucessivamente. Considere um sistema de seis massas, m = [1.0, 3.0, 5.0, 2.0, 4.0, 3.0]
no plano xy. Suas posies no eixo x e y so

x = [0.0, 0.5, 1.0, 2.0, 3.0, 5.0] e y = [1.0, 0.0, 2.0, 4.0, 6.5, 8.0],

respectivamente. Faa um script para Matlab/OCTAVE que a partir dos dados de m, x


e y calcule a posio do centro de massa ~rCM . (Use estrutura de lao, um somador para
xCM e outro somador para yCM ). Adicione a instruo plot(x, y, ro, xcm, ycm, bs)
e execute novamente o script. Descreva o resultado grfico.

1.7- Considere n [1, 1000]. Escreva um cdigo usando instrues na linguagem Matlab/Octave
que obtenha o resultado da soma dos nmeros pares bem como dos nmeros mpares entre
1 e 1000. Para tanto use uma estrutura de deciso
Se condio for verdadeira faa
somapar somapar + n
caso contrrio faa
10 CAPTULO 1. INTRODUO

somaimp somaimp + n
fim do Se
que teste se o nmero par (condio) usando o resto da diviso entre dois nmeros mod(x,
y) ou rem(x, y). Veja na ajuda a documentao sobre a instruo mod: use help mod.

1.8- Uma carga teste (prton) encontra-se no vcuo sob


ao de um campo eltrico uniforme de 105 V/m e
sentido como indicado na Figura 1.3. Em t = 0s
sua posio de 1 m a direita da origem e pos-
sui velocidade de 53,6 m/s da direita para esquerda.
Assumindo a massa de 1, 67 1027 Kg e carga de
1, 6 1019 C
(a) escreva a equao horria de sua posio e
(b) faa um script (Matlab/Octave) para encon-
trar os dois instantes em que o prton cruza a ori-
gem do sistema de coordenadas: defina as quanti-
dades pertinentes; com elas obtenha a acelerao da
carga teste; (o script deve resolver a equao do se- Figura 1.3: Prton em campo el-
gundo grau em t); trico uniforme. Esquema do exerc-
(c) crie um vetor com valores de tempo no in- cio 1.8.
tervalo [0, 0,15]s e incremento de 104 s; em seguida
usando a equao horria x(t) do item (a) calcule as
posies do prton nestes tempos e faa um grfico
usando a instruo plot(t, x);
(d) a partir do grfico estime a mxima distncia
negativa alcanada pelo prton e
(e) em que instante ele estar na posio x = 2m.
Observao: neste exerccio desconsideramos as pertubaes geradas pelo campo da carga
teste sobre o campo eltrico uniforme bem como o campo irradiado por ela em virtude de
sua pequena acelerao, como preconiza o eletromagnetismo clssico.

1.9- Considere os dados do exerccio anterior e a expresso da massa relativstica M dada por
m
M=r  v 2
1
c
onde v a velocidade instantnea do prton e c a velocidade da luz.
(a) Escreva um cdigo para gerar um grfico que ilustre a dependncia da massa do
prton com o tempo (o grfico um dos produtos finais) ;
(b) execute o cdigo considerando o intervalo de tempo do exerccio anterior e
(c) altere a linha do cdigo que gera o tempo: redefina o tempo final para 1000 s e
incremento de 1 s; execute-o e analisando o grfico responda
(d) necessrio considerar o efeito relativstico da massa no problema ?
(e) Quais so os valores de x e v em t = 1000 s ? (Use x(1000) e v(1000) seguidos de
<enter > no prompt da janela de comando).
Captulo 2

Integrao e Diferenciao Numricas

Clculo de integrais em Fsica so frequentes: as Leis de Maxwell na forma integral, o valor do


trabalho de uma fora que depende da posio ou o impulso provocado por determinada fora que
depende do tempo so alguns exemplos. As vezes a funo a ser integrada leva a manipulaes
algbricas complexas e o importante em determinadas situaes o resultado numrico para
interpretao.

Este captulo tm por finalidade ilustrar alguns aspectos bsicos dos processos de integrao e
diferenciao numrica aplicadas a funes reais de uma varivel.

2.1 Integrais definidas

2.1.1 Regra do Trapzio

Consideremos uma funo f (x) conhecida, contnua e definida para qualquer valor de x [a, b].
Desejamos calcular o resultado da integral definida

b
I= f (x) dx,
a

sendo f (x) finita no intervalo considerado. Uma possibilidade seria usar a definio da Integral
de Riemann (SPIEGEL, 1975, p.102)

b X
I= f (x) dx = lim f (ci )xi , (2.1)
a x0
i

onde ci um valor compreendido no intervalo [xi , xi + xi ]. Fazendo x pequeno, desconside-


ramos o limite e assim obtemos a Regra dos Retngulos.
12 CAPTULO 2. INTEGRAO E DIFERENCIAO NUMRICAS

Outro mtodo mais preciso a Regra dos Trap-


zios: discretizamos o intervalo [a, b] em N 1 seg-
mentos de largura x onde N o nmero de avali-
aes da funo. Dado um conjunto de valores de
xi a saber x = [a, (a + x), (a + 2x) + . . . . . . +
(a+(N 1)x), b] = [x1 , x2 , . . . , xN ] a rea gen-
rica Areai de um trapzio dada por (ver Figura
(2.1))
1
Areai = [f (xi ) + f (xi+1 )] x
2
e, somando para todos os intervalos de 1 a N 1
vm Figura 2.1: Elemento genrico de rea do
mtodo dos trapzios.
 
1 1
I= f (x1 ) + f (x2 ) + . . . + f (xN 1 ) + f (xN ) x.
2 2

Como f (x1 ) = f (a) e f (xN ) = f (b) podemos escrever

N
(" # ) " N ! #
X 1 X 1
Iab = f (xi ) [f (a) + f (b)] x = fi (f1 + fN ) x. (2.2)
2 2
i=1 i=1

Exemplo 1: um script simples para implementar o mtodo acima encontra-se a seguir.

% Reg_Trap.m
% use para dados com dx = cte.
clear;
N1 = input(Entre com o no. de intervalos (N-1): );
N = N1+1 ;
a = input(Entre com o limite inferior a: );
b = input(Entre com o limite superior b: );
dx = (b-a)/N1;
soma=0;
for i = 1:N ; % inicio do lao para soma
x(i) = a+(i-1)*dx;
f(i) = funo( x(i) ) % programar a funo a ser integrada nesta linha
soma = soma + f(i);
end; % fim do lao
disp(O resultado da integral eh:)
I = dx*( soma - 0.5*( f(1) + f(N) ) ) % Eq. (2.2)

2.1.2 Regra de Simpson

Uma forma alternativa e normalmente mais precisa do que a Regra dos Trapzios a Regra
de Simpson, onde se faz uso de trs avaliaes da funo para definir a rea elementar. Neste
2.1. INTEGRAIS DEFINIDAS 13

caso podemos escrever de forma compacta a expresso desta regra a saber


(N 1)/2
x X
Iab = [f (x2i1 ) + 4f (x2i ) + f (x2i+1 )]
3
i=1
(N 1)/2
x X
Iab = [f2i1 + 4f2i + f2i+1 ] . (2.3)
3
i=1

Devemos ter em mente que neste mtodo o nmero de intervalos (N 1 ) entre a e b deve ser par.
Ao deduzir sua frmula Simpson aproxima a funo por uma parbola em cada conjunto de 3
pontos como ilustrado na Fig. 2.2 sendo xi = a+ix, xi1 = a+(i1)x e xi+1 = a+(i+1)x
para i = 1, 1, 2,...,N-1.

yi
yi+1

yi-1

y=f(x)

x i-1 xi x i+1 x

Figura 2.2: Regra de Simpson 3 pontos: aproximao da rea elementar abaixo da parbola.

A rea elementar obtida integrando uma funo parablica y(x) = co x2 + c1 x + c2 que se ajusta
aos trs pontos de avaliao da funo. O valor aproximado da integral ser
xi+1
co x2 + c1 x + c2 dx

Ai =
xi1
hc c1 2 ixi+1
o 3
= x + x + c2 x
3 2 xi1
hc  c1 2 i
o 3 3
xi+1 x2i1 + c2 (xi+1 xi1 )

= xi+1 xi1 +
3 2
(xi+1 xi1 ) 
2co x2i+1 + xi+1 xi1 + x2i1 + 3c1 (xi+1 + xi1 ) + 6c2
 
Ai =
6
escrevendo em termos da funo y(x) temos
y(xi+1 ) y(xi1 )

(xi+1 xi1 ) z 2 }| { z
2
}| {
Ai = co xi+1 + c1 xi+1 + c2 + co xi1 + c1 xi1 + c2 +
6
#
+co x2i+1 + 2xi+1 xi1 + x2i1 + 2c1 (xi+1 + xi1 ) + 4c2


( " #)
xi+1 + xi1 2
   
(xi+1 xi1 ) xi+1 + xi1
= y(xi1 ) + y(xi+1 ) + 4 c0 + c1 + c2
6 2 2
  
(xi+1 xi1 ) xi+1 + xi1
Ai = y(xi1 ) + y(xi+1 ) + 4y .
6 2
14 CAPTULO 2. INTEGRAO E DIFERENCIAO NUMRICAS

Usando as igualdades xi+1 xi1 = 2x e (xi+1 + xi1 )/2 = xi escrevemos a rea elementar
abaixo da parbola na forma
x
Ai = [y(xi1 ) + 4y (xi ) + y(xi+1 )] ,
3
o que leva Regra de Simpson (Eq. 2.3) ao somarmos para todo o intervalo de integrao os
diferentes valores de Ai .

2.2 Quadratura Guassiana

No ltimo exemplo ficou claro a necessidade de se resolver uma integral definida no intervalo [a,
b]. A Quadratura Gaussiana um mtodo de integrao que basicamente substitui a integral
por uma soma do produto de uma funo peso w(xi ) pela funo f (x) a ser integrada, i.e.
b Xn
f (x)dx w(xi )f (xi ) (2.4)
a i=1

onde os valores de xi , pontos de avaliao da funo, so definidos em termos do nmero de


pontos n da soma. Como regra bsica se a funo f (x) um polinmio de grau 2n 1 sero
necessrios n pares (xi , wi ) para que o resultado da integral seja exato. Para a aplicao deste
mtodo necessrio o conhecimento da funo f (x).

Exemplo 2: o script a seguir foi adaptado de uma subrotina em Fortran (PRESS et al., 1989).
Os resultados sero precisos caso f(x) seja um polinmio de grau menor ou igual 19.

% Integ_gauss.m
% realiza a integral de f(x) por quadratura gaussiana
% preciso para polinmios de grau <= 19
clear;
% define pontos da quadratura xi
xi = [.1488743389,.4333953941,.6794095682,.8650633666,.9739065285];
%
% define os pesos wi
wi = [.2955242247,.2692667193,.2190863625,.1494513491,.0666713443];
%
% entrada dos limites a e b
a = input(Entre c/ limite inferior: );
b = input(Entre c/ limite superior: );
%
% define a funo a ser integrada
ff = inline(cos(8*x).*exp(-x),x)
%
%
xm = 0.5*(b+a);
xr = 0.5*(b-a);
soma = 0;
for j = 1:5;
dx = xr*xi(j);
soma = soma + wi(j)*( ff(xm+dx) + ff(xm-dx) );
end;
disp(O resultado da integral eh: )
soma = soma*xr
2.2. QUADRATURA GUASSIANA 15

Exemplo 3: o cdigo acima pode ser reescrito usando o formalismo matricial a saber:

% Integ_gauss1.m
% realiza a integral de f(x) por quadratura gaussiana
clear;
% define pontos da quadratura xi
xi = [.1488743389,.4333953941,.6794095682,.8650633666,.9739065285];
%
% define os pesos wi
wi = [.2955242247,.2692667193,.2190863625,.1494513491,.0666713443];
%
% entrada dos limites a e b
a = input(Entre c/ limite inferior: );
b = input(Entre c/ limite superior: );
%
% define a funcao a ser integrada
ff = inline(cos(8*x).*exp(-x),x)
%
%
xm = 0.5*(b+a);
xr = 0.5*(b-a);
dx = xr*xi;
soma = wi*( ff(xm+dx) + ff(xm-dx) );
disp(O resultado da integral eh: )
soma = soma*xr % desnormaliza o resultado

Exemplo 4: existe no Matlab/OCTAVE algumas funes escritas para este fim. Ao final do
script abaixo existem duas linhas de comando com as funes predefinidas no ambiente
Matlab: quad e quadl. A forma mais bsica de us-las para o clculo das integrais o
mesmo: quad(nome_funo, lim_inf, lim_sup, tolerncia).

% Integ_gauss2.m
% realiza a integral de f(x) por quadratura gaussiana
clear;
%
% entrada dos limites a e b
a = input(Entre c/ limite inferior: );
b = input(Entre c/ limite superior: );
%
% define a funcao a ser integrada
ff = inline(cos(8*x).*exp(-x),x)
%
% realiza a integral - quadratura adaptativa de Simpson
disp(O resultado da integral eh: )
soma = quad(ff,a,b)
%
% realiza a integral - quadratura adaptativa Gauss-Lobato
disp(O resultado da integral eh: )
soma = quadl(ff,a,b)
16 CAPTULO 2. INTEGRAO E DIFERENCIAO NUMRICAS

2.2.1 Quadratura Gauss-Legendre

Quando os limites de integrao de uma funo so finitos comum a aplicao de uma substi-
tuio de variveis
x = xR z + xM , onde
ba
xR = ,
2
b+a
xM = .
2
com o intuito de normalizar os mesmos para o intervalo [-1, 1]. Assim a integral definida no
intervalo x [a, b] reescrita na forma de um somatrio a saber
b 1   
ba b+a ba
I = f (x) dx = f z+ dz
a 1 2 2 2

ba 1
 
ba b+a
= f z+ dz
2 1 2 2
n  
baX ba b+a
I Wi f zi + (2.5)
2 2 2
i=1
n
X
I xR Wi f (xR zi + xM ) .
i=1

onde zi so as razes do Polinmio de Legendre Pn (z) com pesos calculados por


2
Wi = .
zi2 [Pn0 (zi )]2

1

Os polinmios de Legendre so obtidos recursivamente pela equao (ARFKEN; WEBER, 2001,


p.749)
zPn (z) Pn1 (z)
Pn+1 (z) = 2zPn (z) Pn1 (z) .
(n + 1)
Para obt-los iniciamos com n = 0, sabendo que P0 (z) = 1 e, recursivamente, derivamos os
polinmios de graus mais elevados. Como exemplo os quatro primeiros polinmios de Legendre
so
1 3 3z ,

P1 (z) = z, P 3 (z) = 8 5z
P2 (z) = 21 3z 2 1 , P4 (z) = 18 35z 4 30z 2 + 3 .
 

Abaixo um script em Matlab/OCTAVE (TREFETHEN, 2008) para o clculo dos pontos e pesos
necessrios a aplicao do mtodo

% esta funo deve estar salva no diretrio de trabalho


% com o nome GaussLegendre.m
function [x, w] = GaussLegendre(n)
% x - pontos da quadratura (sada)
% w - pesos da quadratura (sada)
% n - numero de pontos da quadratura (entrada)
i = 1:n-1;
a = i./sqrt(4*i.^2-1);
CM = diag(a,1) + diag(a,-1);
[V L] = eig(CM);
[x ind] = sort(diag(L));
V = V(:,ind);
w = 2 * V(:,1).^2;
2.3. INTEGRAIS IMPRPRIAS 17

Com esta funo salva no diretrio de trabalho podemos obter os pontos e respectivos pesos da
quadratura Gauss-Legendre usando a instruo na janela de comando

>> [x , w] = GaussLegendre(3)
x =
-0.77459666924148 0 0.77459666924148
w =
0.55555555555556 0.88888888888889 0.55555555555556

o que atribui a x as razes do polinmio de Legendre de terceiro grau (pontos da quadratura) e


w os respectivos pesos. Neste caso possvel integrar com preciso um polinmio, f (x), de grau
menor ou igual 2n 1 = 5.

2.3 Integrais Imprprias

Algumas integrais possuem o limite inferior, o superior ou ambos igual a . Neste caso as
integrais so denominadas de imprprias existindo algumas tcnicas capazes de simplific-las
numericamente por substituio de variveis. Vejamos o exemplo a seguir.
dx
Exemplo 5: calcular numericamente a integral I = 0 1+x 2. Uma tabela de integrais in-
definidas fornece o resultado como sendo I = tan (x) e, substituindo os limites, ob-
1

temos I = /2. Algebricamente podemos realizar a seguinte substituio de variveis:


x = 1/y = dx = dy/y 2 . Ao faz-lo temos
1 0
dx dx dy
I = 2
= 2
+ 2 ,
0 1+x 0 1+x 1 y (1 + 1/y 2 )
1 0
dx dy
= 2
2
,
0 1+x 1 1+y
1
dx
I = 2 2
.
0 1+x

Neste exemplo vimos que a integral no intervalo [0, ] foi substituda por outra integral,
agora definida no intervalo [0, 1], sendo facilmente resolvida por um dos mtodos descritos
nas sees anteriores. A Tabela 2.1 abaixo ilustra alguns casos de integrais imprprias e
suas respectivas substituies.

2.3.1 Quadratura Gauss-Laguerre

Similar ao mtodo de Gauss-Legendre porm aplicado integrais com um dos limites finito e
outro infinito, i.e.
 
exp(x)
I = f (x) dx = x exp(x)g(x) dx = x exp(x) f (x) dx
0 0 0 x
n  
X exp(xi )
I Wi f (x i ) (2.6)
xi
i=1

onde > 1, xi so as razes do Polinmio de Laguerre Ln (z) com pesos Wi calculados por
(n + + 1) zi
Wi = 2 .
n! (n + 1)Ln+1 (zi )

18 CAPTULO 2. INTEGRAO E DIFERENCIAO NUMRICAS

Tabela 2.1: Exemplos de integrais imprprias e suas respectivas substituies (PRESS et al.,
1989, cap. 4).

b 1/a
a f (x)dx 1 1
1/b t2 f ( t )dt , ab>0 Usada quando b e a > 0
ou quando a e b < 0
b (ba)1 1

a f (x)dx 1
1 0 t 1 f (t 1 + a)dt , b>a No caso do integrando
divergir em (x a)
prximo de x = a para
0<1
b (ba)1 1

a f (x)dx 1
1 0 t 1 f (b t 1 )dt , b>a No caso do integrando
divergir em (x b) prximo
de x = b para 0 < 1
b ba
a f (x)dx 0 2tf (a + t2 )dt , b>a Funes do tipo 1/[x a]1/2
com singularidade em x = a
b ba
a f (x)dx 0 2tf (b t2 )dt , b>a Funes do tipo 1/[x b]1/2
com singularidade em x = b
exp(a)
a f (x)dx 0
1
t f ( log t)dt Integrando que decai
exponencialmente exp(x)

com
n
X (n + )! (z)m
Ln (z) = .
(n m)!( + m)! m!
m=0

Usando a propriedades bsicas da funo, (n + 1) = n! obtemos para = 0


zi
Wi = 2.
(n + 2
1) [L n+1 (zi )]

Os polinmios de Laguerre so recursivamente obtidos pela equao (ARFKEN; WEBER, 2001,


p.831)
(1 + z)Ln (z) Ln1 (z)
Ln+1 (z) = 2Ln (z) Ln1 (z) .
(n + 1)

Os clculos iniciam-se com n = 0 sabendo que L0 (z) = 1 fornecendo os seguintes resultados para
os prximos quatro polinmios

L3 (z) = 61 z 3 + 9z 2 18z + 6 ,

L1 (z) = z + 1,
L2 (z) = 12 z 2 4z + 2 , 1
z 4 16z 3 + 72z 2 96z + 24 .
 
L4 (z) = 24

Abaixo encontra-se um script em Matlab/Octave (WILSON; TURCOTTE, 1998; RECKTENWALD,


2000) para o clculo dos pontos e pesos da quadratura necessrios a aplicao da Quadratura
Gauss-Laguerre.

% esta funo deve estar salva no diretrio de trabalho


% com o nome GaussLaguerre.m
function [x, w] = GaussLaguerre(n, alpha)
% x - pontos da quadratura (sada)
% w - pesos da quadratura (sada)
% n - nmero de pontos da quadratura (entrada)
2.4. DIFERENCIAO NUMRICA 19

% - potncia de x no integrando (entrada)


i = 1:n;
a = (2*i-1) + alpha;
b = sqrt( i(1:n-1) .* ((1:n-1) + alpha) );
CM = diag(a) + diag(b,1) + diag(b,-1);
[V L] = eig(CM);
[x ind] = sort(diag(L));
V = V(:,ind);
w = gamma(alpha+1) .* V(:,1).^2;

Observao: o maior real expresso em um sistema operacional 32 ou 64 bits aproximadamente


1.79 10308 . Usando a instruo >> [x, w] = GaussLaguerre(185, 0), ou seja, 185
pontos e = 0, obtemos o maior ponto de avaliao da funo x185 708. Ao inserir
este valor na exponencial temos exp(708) 3.02 10307 resultado este muito prximo do
limite de expresso de um nmero real. Conclui-se assim que a quadratura Gauss-Laguerre
deve ser usada com cuidado pois o nmero de pontos (e pesos) escolhido pode incorrer no
resultado Inf cujo significado : real acima do valor 1.79 10308 .

2.4 Diferenciao Numrica

Em alguns ramos da Fsica, como no Eletromagnetismo, encontramos relaes vetoriais entre o


campo eltrico e o campo magntico, com fontes e sumidouros. Um exemplo o campo eltrico
produzido por uma densidade de carga no vcuo. Assim entendemos da teoria eletromagntica
que o campo eltrico relaciona-se com a densidade de carga eltrica segundo a equao (lei de
Gauss)


(o E ) =

onde o a permitividade eltrica do meio (vcuo) e o operador Nabla a saber

=
x i + y j + z k coord. cartesianas
= 1
r r + r + z k coord. cilndricas
= 1 1
r r + r sin + r coord. esfricas.

O operador gradiente tambm est presente na teoria da conduo do calor. A Lei de Fourier
estabelece uma relao entre o fluxo de calor e o produto da condutividade trmica do material
(k) pelo gradiente de temperatura em certo ponto do meio, i.e.



H = kT

e que expressa a quantidade de calor por unidade de tempo por unidade de rea sendo propagada
atravs do slido.
20 CAPTULO 2. INTEGRAO E DIFERENCIAO NUMRICAS

2.4.1 Aproximaes de primeira e segunda ordem para f 0 (x)

Consideremos o grfico ao lado de f (x).


Desejamos obter uma aproximao num-
rica da derivada primeira da funo f (x)
no ponto x0 . Considerando o tringulo 1
podemos escrever a seguinte equao

y f (xi ) f (xi x)
f 0 (xi ) = tan =
x xi (xi x)
f (xi ) f (xi x)
f 0 (xi )
x
sendo conhecida como aproximao atra-
sada de primeira ordem da derivada pri-
meira (aproximao backward ). De modo
anlogo, mas usando o tringulo 2 temos

f (xi + x) f (xi )
f 0 (xi )
x Figura 2.3: Representaes grficas da de-
sendo esta equao a derivada numrica rivada primeira: atrasada, adiantada e cen-
de primeira ordem (erro x) conhecida trada.
por aproximao adiantada (forward ) para
f 0 (x) em x = xi .
Outra aproximao da derivada primeira de uma funo a aproximao centrada que pode ser
obtida pela mdia entre as aproximaes backward e forward, ou ainda atravs do tringulo 3 na
Fig. 2.3 resultando em
f (xi + x) f (xi x)
f 0 (xi )
2x
sendo esta uma aproximao de segunda ordem (erro x2 ), ou seja, mais precisa.

Observao: as derivadas numricas tambm podem ser deduzidas atravs da Srie de Taylor
da funo f (x), i.e.
1 00
f (x + x) = f (x) + f 0 (x) [x + x x] + f (x) (x + x x)2 +
2!
que pode ser simplificado para
1
f (x + x) f (x) + f 0 (x)x + f 00 (x)x2 +
2
e, retendo apenas os dois primeiros termos da srie e manipulando temos
f (x + x) f (x)
f 0 (x)
x
que representa a aproximao numrica de primeira ordem forward para f 0 (x). Se os
valores de x forem discretos como em uma lista ou tabela, i.e., xi = a + (i 1)x para
i = 1, 2, 3, . . . por substituio na equao anterior obtemos a forma compacta a saber
f (a + (i 1)x + x) f (a + (i 1)x)
f 0 (xi ) ,
x
f (a + ix) f (a + (i 1)x)
f 0 (xi ) ,
x
fi+1 fi
fi0 ,
x
2.4. DIFERENCIAO NUMRICA 21

onde fi e fi+1 representam os valores da funo f (x) obtidos nos pontos xi+1 e xi+1 , res-
pectivamente.

2.4.2 Aproximaes de primeira e segunda ordem para f 00 (x)

A aproximao numrica da segunda derivada de f (x) pode ser obtida facilmente atravs da
formulao vista na seo anterior porm aplicada a derivada primeira, i.e.
f 0 (xi )f orward f 0 (xi )backward
f 00 (xi )
h xi h i
f (xi +x)f (xi ) f (xi )f (xi x)
x x

x
f (xi + x) 2f (xi ) + f (xi x) fi+1 2fi + fi1
f 00 (xi ) 2
ou fi0 =
x x2
sendo esta a aproximao centrada de segunda ordem (erro x2 ) para a derivada segunda de
f (x). Outras formulaes numricas para f 00 (x) so
f (xi +2x)2f (xi +x)+f (xi ) fi+2 2fi+1 + fi
f 00 (xi ) x2
, aproximao (f orward) fi0 =
x2
f (xi )2f (xi x)+f (xi 2x) fi 2fi1 + fi2
f 00 (xi ) x2
, aproximao (backward) fi0 =
x2
ambas de primeira ordem (erro x), ou seja, menos precisas.

2.4.3 Aproximaes de f 0 (x) e f 00 (x) cbicas e qurticas

Alguns clculos podem exigir aproximaes numricas das derivadas com uma preciso maior.
A tabela abaixo resume algumas formulaes de terceira e quarta ordem para as derivadas
numricas.
Tabela 2.3: Derivada Primeira f 0 em x0 : expresses numricas, erros e interpolao

Expresso Erro Poli. Tipo


[11f (x0 ) + 18f (x1 ) 9f (x2 ) + 2f (x3 )]/6x (x)3 3 For
[2f (x3 ) + 9f (x2 ) 18f (x1 ) + 11f (x0 )]/6x (x)3 3 Back
[25f (x0 ) + 48f (x1 ) 36f (x2 ) + 16f (x3 ) 3f (x4 )]/12x (x)4 4 For
[3f (x4 ) 16f (x3 ) + 36f (x2 ) 48f (x1 ) + 25f (x0 )]/12x (x)4 4 Back
[f (x2 ) 8f (x1 ) + 8f (x1 ) f (x2 )]/12x (x)4 4 Cen

Tabela 2.4: Derivada Segunda f 00 em x0 : expresses numricas, erros e interpolao

Expresso Erro Poli. Tipo


[2f (x0 ) 5f (x1 ) + 4f (x2 ) f (x3 )]/x2 (x)2 3 For
[f (x3 ) + 4f (x2 ) 5f (x1 ) + 2f (x0 )]/x2 (x)2 3 Back
[35f (x0 ) 104f (x1 ) + 114f (x2 ) 56f (x3 ) + 11f (x4 )]/12x2 (x)4 4 For
[11f (x4 ) 56f (x3 ) + 114f (x2 ) 104f (x1 ) + 35f (x0 )]/12x2 (x)3 4 Back
[f (x2 ) + 16f (x1 ) 30f (x0 ) + 16f (x1 ) f (x2 )]/12x2 (x)3 4 Cen

Deve ser observado nas tabelas acima a seguinte notao fi = f (xi ) = f (x0 ix) e
fi = f (xi ) = f (x0 + ix) para efeito de clculos. Tambm devemos ter em mente ao reali-
zarmos aproximaes numricas das derivadas a dificuldade em calcul-las nas extremidades dos
22 CAPTULO 2. INTEGRAO E DIFERENCIAO NUMRICAS

intervalos. Se temos um conjunto de dados do tipo (xj , fj ) onde j = 1, 2, ..., 11 ou seja, possu-
mos 11 pares de dados, a aproximao de segunda ordem da derivada primeira conter apenas
9 pares de dados pois necessitamos, para o clculo da derivada na segunda amostra (j = 2), de
(x1 , f1 ) e de (x3 , f3 ). Analogamente, para derivada em j = 10 so necessrios os pares (x9 , f9 )
e de (x11 , f11 ). Uma metodologia muito empregada nestes extremos dos dados (j = 1 e j = 11)
a utilizao das aproximaes de primeira ordem, forward e backward, nos extremos inicial e
final respectivamente.

Exemplo 6: Um sistema amortecido oscila segundo a funo g(t) = 10sen(0, 5t) exp(0, 2t).
A derivada primeira (analtica) g 0 (t) = 5 cos(0, 5t) exp(0, 2t) 2sen(0, 5t) exp(0, 2t).
Considerando o intervalo para t de 0 a 10 e um incremento dt = 0.5, determine:

1. A derivada primeira (numrica) da funo;

2. O erro entre a aproximao numrica e a expresso analtica de g 0 (x)

Neste exemplo criamos o seguinte script :


% deriv1.m
clear
dt= 0.5;
t = 0:dt:10;
N = length(t);
fg= inline(10*sin(0.5*t).*exp(-0.2*t));
gl_an = 5*cos(0.5*t).*exp(-0.2*t)-2*sin(0.5*t).*exp(-0.2*t);
%
% usando backward e forward para os ptos. inicial e final
gl_nu(1) = ( fg(t(2)) - fg(t(1)) )/dt; % avanada
gl_nu(N) = ( fg(t(N)) - fg(t(N-1)) )/dt; % atrasada
%
% usando a formulao centrada para pontos intermedirios
for i = 2:N-1;
gl_nu(i)= 0.5*( fg(t(i+1)) - fg(t(i-1)) )/dt;
err(i)=gl_an(i)-gl_nu(i);
end;
err(1) = gl_an(1)-gl_nu(1);
err(N) = gl_an(N)-gl_nu(N);
% resultados grficos
plot(t,gl_nu,b. , t,gl_an); pause
plot(err)

2.5 Exerccios

2.1- Admita a funo f (x) = cos(8x) exp(x2 ). Realize a integral de f (x) para diferentes
discretizaes x (nmero de intervalos) e verifique para que x o resultado da integral
no difere mais usando

(a) regra dos Trapzios


(b) regra de Simpson
(Sugesto: escolha um intervalo [0, /2] e rode o cdigo para (N-1) = 30, 40, 50, ... ;
o valor de x obtido escrevendo >> dx <enter> no prompt de comando.)
2.5. EXERCCIOS 23

2.2- Para
obtermos a posio do C.M. de uma distribuio contnua de massa usamos ~rCM =
~r dm /M em que xCM = x dm /M , e assim sucessivamente com M sendo a massa


do corpo. Quando a distribuio de massa no uniforme a massa especfica depende da


posio, ou seja, = (x, y, z). Considere uma vareta de comprimento L = 0, 9m, rea da
seo reta circular a = 6, 0 mm2 e com massa especfica dada por (x) = 7+2xx2 Kg/m3 .
Use a Regra de Simpson para estimar o valor numrico de xCM .

2.3- Considere o problema do Exerccio 2.2 uma vareta de comprimento L = 0, 9m, rea da seo
reta circular a = 6, 0 mm2 e com massa especfica dada por (x) = 7 + 2x x2 Kg/m3 .
Use a Quadratura Gaussiana (via exemplo 3) para estimar o valor numrico de xCM .

2.4- Considere novamente o problema do Exerccio 2.2. Uma vareta de comprimento L = 0, 9m,
rea da seo reta circular a = 6, 0 mm2 e com massa especfica dada por (x) = 7 + 2x
x2 Kg/m3 . Use Quadratura Gauss-Legendre para estimar o valor numrico de xCM .

2.5- Em um laboratrio foram realizadas medidas experimentais da posio de uma partcula


em relao ao tempo e os resultados encontram-se registrados na tabela abaixo.Construa
um script para Matlab definindo dois vetores t e x com os dados ao lado. Em seguida
1. use a aproximao numrica centrada da deri-
t (s) x (m) t (s) x (m) vada primeira para estimar o vetor velocidade a
partir dos dados fornecidos.
0.5000 0.1947 3.0000 2.0082
0.9000 0.5165 3.4000 2.1118 2. Aplique o mesmo procedimento para o vetor ve-
1.4000 0.9733 4.0000 2.1654 locidade com o intuito de estimar a acelerao
1.9000 1.3961 4.5000 2.1343 da partcula.
2.5000 1.7907 5.0000 2.0521
3. Faa um grfico de x(t) , outro de v(t) e final-
mente um para a(t).

2.6- As velocidades instantneas de um foguete foram transmitidas, via rdio, para a estao
de lanamento e os valores registrados encontram-se na tabela abaixo.

t (s) v (m/s) t (s) v (m/s)


O foguete cheio de combustvel possui uma massa de
0 0 96 747.0
2, 03 106 Kg.
12 31.5 108 987.3
Construa um script para Matlab/Octave que:
24 72.2 120 1301.8
(a) estime por integrao numrica (R. Simpson) o
36 138.9 132 1481.6
deslocamento total do foguete;
48 228.0 144 1489.6
(b) usando derivao numrica (centrada) estime os
60 321.7 156 1504.6
valores das aceleraes e
72 429.5 168 1526.8
(c) faa um grfico da acelerao em funo do tempo.
84 566.1 180 1556.7

2.7- A energia potencial gravitacional de um sistema de dois corpos pode ser expressa por

Mm
U (r) = G
r

onde G = 6, 7 1011 Nm2 /kg2 a constante universal da gravitao e r a distncia


entre os corpos de massas M = 6, 0 1024 Kg e m = 80 Kg. Sabemos ainda que a fora
gravitacional pode ser obtida a partir do gradiente de U (r). Considerando o exposto e que
r = 6, 4 106 + z, onde z a altitude em metros:

(a) determine analiticamente a expresso da fora gravitacional que atua nos corpos;
24 CAPTULO 2. INTEGRAO E DIFERENCIAO NUMRICAS

(b) desenvolva um script para Matlab em que os dados de entrada sejam as massas; que
crie um vetor contendo os valores de r igualmente espaados; que faa um grfico
superposto de F (r) analtico (pontos) e de F (r) numrico (linha cheia) usando a
aproximao centrada da derivada primeira de U ;
(c) refaa os clculos para derivada primeira de ordem superior (centradas Tab 2.3) e
armazene os resultados.
(d) Calcule o erro numrico entre a aproximao da derivada primeira e o resultado ana-
ltico de F e faa um grfico superposto de F r e do Erro r para comparao.

2.8- Desprezando a resistncia do ar faa um script que calcule numericamente o trabalho W


da fora gravitacional ao deslocar um paraquedista com massa de 80 Kg de uma altitude
z igual a 7500 m at uma altitude final de 300 m considerando que (a) a acelerao da
gravidade constante e igual a 9, 81 m/s2 e (b) considerando que a gravidade varie com a
altitude segundo a expresso
M
g(z) = G ,
(R + z)2
onde R = 6, 4 106 m o raio mdio da Terra e M = 6, 0 1024 Kg a massa da Terra.
(c) Calcule a diferena relativa entre os resultados: |Wb Wa |/Wb .

2.9- Segundo RESNICK; HALLIDAY (1983, cap. 8) a soluo completa de problemas unidi-
mensionais com foras dependentes da posio pode ser descrita pela equao
r x2
m dx
t2 t1 = p
2 x1 E U (x)

onde m a massa da partcula, E a energia mecnica (constante) do sistema e U (x) a


energia potencial do sistema. Os tempos t1 e t2 esto relacionados com as posies x1 e
x2 da partcula, respectivamente. O sinal + ou deve ser escolhido segundo o sinal da
velocidade da partcula em eixo orientado. Sendo a energia do sistema invariante ocorre
divergncia do integrando quando a energia cintica tende a zero: E U (x) 0. As
regras do trapzio e de Simpson no podem ser usadas para encontrar o valor de t2 pois
o integrando no definido nas situaes em que E = U (x). A integrao numrica por
quadratura pode contornar este problema visto que os pontos de integrao sempre esto
localizados no interior do intervalo a ser integrado.

(a) Considere o sistema massa mola com m = 0, 2Kg, constante elstica k = 30N/m e que
em t1 = 0s a posio inicial da partcula seja x1 = 0, 10m e que a mesma parta do
repouso. Construa um script para Matlab/OCTAVE em que o limite superior varie
de 0,10m at -0,10m com incremento de 0,01m para obter a resposta t2 . Este processo
permitir construir dois vetores: x2 e os respectivos tempos t2 associados. (Obs.:
dentro do lao para o clculo de t2 a integral deve ser resolvida numericamente por
um dos processos de integrao discutidos neste captulo)
(b) Compare os resultados
q obtidos no item anterior com os valores advindos da equao
x(t) = A cos( m t) sendo A a amplitude do movimento. Para isso use o vetor t2 na
k

equao e faa um grfico superposto dos resultados, i.e., use a instruo plot(t2,
x2, ro, t2, x, b).
Captulo 3

Razes de Funes de uma Varivel

Imagine uma situao na qual nos deparamos com o problema de encontrar o valor de uma
varivel x que anula ou satisfaz uma determinada equao, por exemplo: x + 2 = 0; x2 + 3x 4 =
0; sen(x) = 2x. Existem vrios mtodos numricos que podem ser aplicados para tal fim, dentre
eles os clssicos a saber: o Mtodo da Iterao Linear, o da Bisseo e o de Newton-Raphson e
o mtodo da Rgula Falsi (ou da Secante).

Um teorema muito utilizado na busca de razes (ou zeros) de funes o Teorema de Bolzano
que afirma

Se f (x) uma funo contnua sobre um intervalo fechado [a, b] e f (a) e f (b) tm
sinais contrrios, ento, existe pelo menos um ponto c [a, b], tal que, f (c) = 0.

Devemos ter em mente a possibilidade de mais de uma raiz da funo f (x) no intervalo menci-
onado. Outro caso ocorre quando os sinais de f (a) e f (b) so iguais: neste caso ou existe um
nmero par de razes de f (x), ou ainda, nenhuma raiz no intervalo [a, b].

3.1 Mtodo da Iterao Linear

Para encontrar o valor de x que zera a funo f (x) isolamos x da funo escrevendo uma equao
alternativa na forma x = g(x):

se f (x) = 2x2 x + 1 temos: x = 2x2 + 1 = g(x)

se f (x) = sin(x) + 2x temos: x = 0.5 sin(x) = g(x)


26 CAPTULO 3. RAZES DE FUNES DE UMA VARIVEL

O processo numrico para determinar o va-


lor (aproximado) da raiz da funo f (x)
simples basta escrever

xi+1 = g(xi ) (3.1)

e inserir um valor inicial para o x1 na fun-


o g(x). O resultado proveniente da funo
atribudo a x2 . O valor de i incremen-
tado de uma unidade de modo que podemos
substituir em g(x) o valor anteriormente ob-
tido, x2 . Este processo itera at a preciso
numrica desejada:

Passo 1 dado x1 obtemos x2 = g(x1 )

Passo 2 com x2 obtemos x3 = g(x2 ), ... Figura 3.1: Ilustrao grfica do Mtodo da
Passo i com xi obtemos xi+1 = g(xi ) Iterao Linear.

Observao: Nos mtodos iterativos comum usarmos um ou dois critrios de parada: se


desejamos que o valor da raiz possua preciso de trs algarismos significativos ento

caso |xi+1 xi |  pare o clculo

onde  = 103 1.0e-3. Outro critrio de parada pode ser pelo nmero de iteraes,
ou seja, quando i > N - nmero mximo de iteraes. Dependendo do chute inicial,
x1 , o mtodo pode no convergir para o valor da raiz da funo f (x) e o programa
terminar pelo nmero mximo de iteraes estipulado.

3.1.1 Convergncia

Suponha que escrevamos a equao f (x) = 0 na forma x = g(x) sendo g(x) a funo de iterao.
Para haver convergncia do mtodo existem trs condies necessrias mas no suficientes a
saber:
1. g(x) e g 0 (x) devem ser contnuas no intervalo [a, b];
2. |g 0 (x)| < 1 x [a, b]; a derivada de g deve ser inferior a 1 para todo x no intervalo
3. x1 [a, b]; o chute inicial deve estar dentro do intervalo considerado;

Exemplo 3.1- Considere a equao horria v(t) = t2 2t3 de um mvel em que o tempo dado
em horas e a velocidade instantnea em quilmetros por hora. Desejamos o valor positivo
do tempo em que o mvel inverte o sentido de seu movimento. Para tanto, zeramos a funo
v(t) e explicitamos a varivel independente na forma t = g(t). Isto pode ser feitode duas
formas diferentes: a primeira leva ao resultado t = (t2 3)/2 e a segunda t = 2t + 3.
A formulao correta para a funo de iterao g(t) a ser adotada na implementao do
mtodo aquela que satisfaz os critrios de convergncia.

Exemplo 3.2- Antes de programar o cdigo (script) desenvolvemos o algoritmo com base no
que foi exposto: necessitamos de um chute inicial para iniciar o processo ou seja definir o
valor de t1 . Dos critrios de parada: definir o nmero mximo de iteraes N bem como a
preciso desejada da raiz tol ( ou o ). O resultado est a seguir
3.2. MTODO DE NEWTON-RAPHSON 27

1- defina o valor do no. max de iteraes: N


2- defina o valor da preciso desejada para a raiz: tol
3- defina o contador i como um
4- defina o valor da primeira aproximao da raiz: t(1)
5- defina a diferena difer com valor superior a tol
6- enquanto absoluto(difer ) > tol e i < N faa
t(i+1) programar a funo de iterao escolhida g(t(i))
difer t(i+1) - t(i)
ii +1
fim do lao 6
7- escreva os valores da raiz t(i) e do nmero de iteraes i

3.2 Mtodo de Newton-Raphson

Seja f (x) uma funo contnua no intervalo [a, b]


e c o nico zero da funo no intervalo. Se a
primeira derivada e a segunda derivada tambm
so contnuas em [a, b] escrevemos a expanso
em Srie de Taylor da funo na forma truncada
1 0
f (xi + xi ) f (xi ) + f (xi )xi .
1!
Igualando a zero o termo esquerda vm

f (xi ) f (xi )
xi = 0
xi+1 = xi 0 . (3.2)
f (xi ) f (xi )

Esta ltima equao fornece um mtodo itera- Figura 3.2: Ilustrao grfica do Mtodo de
tivo para a estimativa do zero da funo f (x) Newton-Raphson
no intervalo definido [a, b]. Um problema deste mtodo ocorre quando f 0 (xi ) zero - caso que
deve ser evitado pois causa uma indeterminao no segundo termo direita da igualdade na
equao 3.2.
O algoritmo do exemplo 3.2 pode ser facilmente adaptado para o presente mtodo realizando
uma nica alterao: substituir a funo de iterao g(t) pelos temos direita da igualdade na
equao 3.2.

3.2.1 Convergncia

Considerando a funo f (x) no intervalo [a, b] as condies suficientes de convergncia do mtodo


de Newton-Raphson so:

1. f (a).f (b) < 0

2. f 0 (x) 6= 0, x [a, b]

3. f 00 (x) > 0 ou f 00 (x) < 0 (i.e. f 00 (x) no muda de sinal em [a, b])

4. ff0(a)
f (b)
< (b a) e f 0 (b) < (b a)

(a)

para qualquer valor inicial de x [a, b].


28 CAPTULO 3. RAZES DE FUNES DE UMA VARIVEL

3.3 Mtodo da Secante (Rgula Falsi)

Este um mtodo usado para obter zeros


de funes suaves. Neste mtodo os pontos
de cruzamento da secante, x1 e x2 , so usa-
dos como pontos base (iniciais) para uma
nova secante, mais prxima do zero da fun-
o, x2 e x3 . uma modificao do Mtodo
de Newton visto que a derivada da funo
f 0 (x) substituda por uma aproximao
numrica.
Regula falsi: caso especial do Mtodo da
Secante, em que se condiciona que o zero
procurado fique sempre entre os pontos de
cruzamento da secante utilizada na itera-
o anterior:. Diferente do Mtodo da Se-
cante pois neste processo a busca do zero
da funo inicia-se com fa fb < 0, obriga- Figura 3.3: Ilustrao grfica do Mtodo da
triamente. Secante.

Para aplicar o mtodo iterativo usamos a seguinte expresso


xi xi1
xi+1 = xi f (xi ) (3.3)
f (xi ) f (xi1 )
e, observando melhor, verificamos que a frao direita da igualdade o inverso da aproximao
numrica atrasada para a derivada primeira (Srie de Taylor).
O inconveniente deste mtodo a escolha de dois valores iniciais de x para comear o processo:
com i = 2 necessitamos de x1 e x2 um esquerda da raiz e outro direta dela. Porm se a
relao f (a).f (b) < 0 for satisfeita podemos escolher x1 = a e x2 = b.

Exemplo 3.2- Os trs mtodos apresentados acima so muito similares quanto a sua imple-
mentao. Para exemplificar consideremos um mvel com equao horria dada por
x(t) = 2t2 4t 5.
Desejamos encontrar o valor positivo do tempo para o qual o mvel encontra-se na origem.
Com o algebrismo convencional fcil obter o resultado desejado, i.e., t = 2, 87s. Como
no temos f (x) devemos usar uma substituio de variveis na forma f (x) x(t) de modo
que a nova equao a ser usada para implementar o Mtodo da Secante
ti ti1
ti+1 = ti x(ti ) . (3.4)
x(ti ) x(ti1 )
Pelo que foi discutido so necessrios dois valores de tempo para iniciar o processo: t1 = 2s
e t2 = 4s, por exemplo. Dos critrios de parada: um valor mximo de iteraes N = 50
e de uma preciso para o resultado  = 0.001s. Com estas definies em mente podemos
adaptar o algoritmo exposto no Exemplo 3.2: definir t(2); fazer i=2; substituir a funo de
iterao g(t) pela expresso direita da igualdade na equao 3.4.

3.4 Mtodo da Bisseo

Para se aproximar de uma raiz c, o princpio da bisseo consiste em reduzir o intervalo inicial
testando o sinal de f (x) para o ponto mdio do intervalo, i.e. x = (a + b)/2. Considerando um
intervalo inicial [a, b] usamos
3.5. EXERCCIOS 29

Se f (a).f ( a+b
2 ) < 0 o intervalo [a, b] substitudo por [a, (a + b)/2]

Se f (b).f ( a+b
2 ) < 0 o intervalo [a, b] substitudo por [(a + b)/2, b]

com o novo intervalo calcula-se novamente o valor mdio de x, realiza-se o teste e redefine-se o
intervalo at que o critrio de parada seja satisfeito. A desvantagem deste mtodo a sua lenta
convergncia para obter uma aproximao da raiz da equao (x = c). Outra desvantagem a
necessidade de fornecer ao mtodo dois pontos, a e b, com valores de f (a) e f (b) possuindo sinas
contrrios.
Usando o algoritmo proveniente das alteraes propostas no exerccio 3.2 implementa-se este
mtodo substituindo t1 e t2 por a e b, respectivamente. Outra modificao ocorre dentro do lao
o qual em grande parte substitudo por

6- enquanto absoluto(difer ) > tol e i < N faa


tm (a+b)/ 2
fa programar f(a)
ftm programar f(tm)
Se faftm < 0 ento
b tm
caso contrrio
a tm
fim do Se
difer a - b
ii +1
fim do lao 6

7- escreva os valores da raiz tm e do nmero de iteraes i

3.5 Exerccios

3.1- Dois automveis partem simultaneamente de cidades vizinhas A e B afastadas de 100 Km


em linha reta. As equaes horrias de suas posies so

xa (t) = 12t + 4t2 ,


xb (t) = 105 6t2 ,

respectivamente, com a origem do sistema de coordenadas sobre a cidade A. Para encontrar


o tempo em que os mveis se cruzam na estrada devemos igualar as equaes, i.e., fazer
xa = xb .

(a) Encontre analiticamente o tempo decorrido entre as suas partidas e o instante em que
se cruzam na estrada. No prompt da janela de comando defina t=0:1:120; xa= ...,
xb=... e faa um grfico com o comando plot(t, xa, t, xb). Compare o resultado
encontrado algebricamente com o tempo no ponto que as curvas se cruzam. No grfico
possvel estimar a que distncia da cidade A os carros se encontraro.
(b) implemente o Mtodo da Iterao em um script para Matlab/Octave para calcular
este tempo. Confronte o resultado com o obtido algebricamente.
(c) Crie outro script para encontrar o tempo decorrido atravs do mtodo de Newton-
Raphson e verifique se est de acordo com o resultado analtico.
30 CAPTULO 3. RAZES DE FUNES DE UMA VARIVEL

(d) Sem muitas alteraes o script do item (c) pode ser modificado para obter o tempo
pelo Mtodo da Secante. Faa isso e compare o tempo obtido numericamente com o
resultado analtico.
(e) Finalmente escreva, execute e compare o tempo numrico com o analtico implemen-
tando o Mtodo da Bisseo em um novo script para Matlab/OCTAVE.

3.2- Considere o automvel A do exerccio anterior com uma equao horria mais complexa, a
saber
xa (t) = 12 t + t2 exp(0, 05 t).
Neste caso no possvel obter analiticamente o tempo decorrido entre a partida dos mveis
e o cruzamento dos mesmos na rodovia.

(a) No prompt da janela de comando defina um vetor t=0:1:70, xa=.... e xb=.... Faa
um grfico com o comando plot para estimar em que tempo eles se cruzaro e a
posio do cruzamento a partir da cidade A.
(b) Altere a equao do automvel A nos cdigos dos itens (b), (c), (d) e (e) do exer-
ccio anterior. Encontre o tempo numericamente por cada mtodo comparando os
resultados com o valor estimado graficamente.

3.3- No captulo anterior (seco (2.2.1)) foram mencionados os Polinmios de Legendre. A


quadratura Gauss-Legendre de N pontos exige o conhecimento de N razes e pesos para sua
implementao e uma funo GaussLegendre.m foi apresentada para este fim. Desenvolva
um script em que permita o usurio entrar com o valor de N entre 1 e 4 retornando os
pontos da quadratura (zeros dos polinmios) e seus respectivos pesos usando:

(a) o mtodo da Iterao Linear;


(b) o mtodo de Newton-Raphson.
(Observao: as razes e os pesos dos polinmios de Legendre encontram-se limitados
ao intervalo [-1, 1].)
(Sugestes: use a estrutura de deciso if N==1... elseif N==2 ...else .. ...end; defina
o polinmio usando o comando inline (ex. P=inline(z) se N=1) e a expresso do
peso W (zi ) em cada caso da estrutura. Encontre os zeros e calcule os respectivos
pesos.)

3.4- A fora de interao entre duas molculas ou dois tomos neutros pode ser obtida a partir
do potencial de Lennard-Jones
A B
V (r) = 12 6 ,
r r
onde A e B so constantes que dependem do menor valor do potencial V0 e da distncia
entre molculas onde o potencial se anula r0 . Considere a distncia r em Angstrons e os
valores A = 2, 27 105 eVm12 e B = 104, 5eVm6 .

(a) Encontre o valor de r0 usando Newton-Raphson;


(b) obtenha a expresso analtica da fora F (r) a partir do potencial acima. Use um dos
mtodos apresentados neste captulo para calcular o valor de r em que a fora se anula
(mnimo do potencial).
Captulo 4

Ajuste de Curvas

4.1 Mnimos Quadrados

O ajuste de dados provenientes de medidas experimentais com o intuito de prever valores ou leis
Fsicas que representem o fenmeno em questo so comuns na Fsica Experimental. Ao longo
desta seo iremos assumir um conjunto conhecido de dados (xi , yi ), com i = 1, 2, . . . , N .
Uma tcnica muito empregada minimiza o quadrado dos resduos entre as observaes (yi ) e os
valores preditos por uma funo ajuste (f (xi )), i. e.
(N )
X 2
(4.1)
 2
min R = min [f (xi ) yi ] .
i=1

Esta minimizao pode ser obtida aps a definio do grau do polinmio (p) que deve ajustar os
dados. Para esclarecer o mtodo dos mnimos quadrados vamos admitir f (x) um polinmio de
grau p na forma
f (x) = c0 + c1 x + c2 x2 + + cp xp (4.2)
onde desejamos encontrar os coeficientes {c0 , c1 , . . . , cp }. Como visto na disciplina de clculo,
o mnimo de R2 pode ser obtido pela derivada da funo R2 com respeito aos coeficientes do
polinmio, i.e.
(R2 ) X f (xi ) X
= 2 [f (xi ) yi ] =2 [f (xi ) yi ] = 0
c0 c0
(R2 ) X f (xi ) X
= 2 [f (xi ) yi ] =2 xi [f (xi ) yi ] = 0
c1 c1
(R2 ) X f (xi ) X
= 2 [f (xi ) yi ] =2 x2i [f (xi ) yi ] = 0
c2 c2

(R2 ) X f (xi ) X p
= 2 [f (xi ) yi ] =2 xi [f (xi ) yi ] = 0
cp cp
substituindo f (xi ) e expandindo temos
X X X X p X
c0 1 + c1 xi + c2 x2i + + cp xi = yi
X X X X p+1 X
c0 xi + c1 x2i + c2 x3i + + cp xi = x i yi
X X X X p+2 X
c0 x2i + c1 x3i + c2 x4i + + cp xi = x2i yi
.. .. ..
. . .
xpi + c1 xp+1 xp+2 x2p xpi yi
X X X X X
c0 i + c2 i + + cp i =
32 CAPTULO 4. AJUSTE DE CURVAS

e que pode ser expresso na forma matricial a saber


P P 2 P p
x

P
N x xi c0 yi
P P 2i P i3 P p+1 P xi yi
xi xi xi xi c1
.. .. .. ..
P
c2 x2i yi (4.3)
. . . . = .

.. ..

. P .p


xpi xp+1 xp+2 x2p
P P P P
i i i
cp xi yi

Podemos ainda renomear as matrizes e vetores e reescrever o sistema de equaes em uma forma
compacta
M c = d (4.4)

cuja soluo desejada obtida pela multiplicao da inversa de M pelo vetor d,
1
c = M
d.

4.1.1 Exemplos

Nos vrios ramos da fsica comum encontrarmos leis, relativamente simples, que preveem os
comportamentos dos sistemas. Tais leis so funes como retas e parbolas, exponenciais, lo-
garitmos entre outras. Algumas dessas funes no so polinmios porm com uma simples
transformao de variveis tais funes podem ser linearizadas.

Exemplo 1: Ajuste de dados atravs de uma funo linear do tipo: y = A + Bx.


xi yi
Neste caso possumos uma tabela de dados como ao lado e desejamos x1 y1
ajustar uma reta pelos dados experimentais (xi , yi ). Pelo que foi exposto x2 y1
na seo 4.1 o sistema a ser resolvido .. ..
. .
xN yN
 P    P 
PN P x2i A
= P yi
. (4.5)
xi xi B x i yi

Sendo um sistema 2 2 possvel obter uma soluo analtica simples para os coeficientes
desejados do polinmio, os valores de A e B.

O seguinte algoritmo contm as etapas bsicas para o clculo dos coeficientes da reta
1- limpar memria
2- definir os vetores x e y com os dados provenientes das medidas
3- definir N nmero de medidas
4- definir soma_x, soma_x2, soma_y, soma_xy como zero
5- para i de 1 at N faa
soma_x soma_x + x (i)
soma_x2 soma_x2 + x (i) * x (i)
soma_y soma_y + y(i)
soma_xy soma_xy + x(i) * y(i)
fim do lao 5
6- gerar a matriz M e o vetor d (sistema Mc = d)
7- obter o vetor de coeficientes c = M1 d
8- mostrar os coeficientes.
4.1. MNIMOS QUADRADOS 33

Exemplo 2: Ajuste de dados atravs de uma funo logartmica na forma:

y = A + B ln x.

Para obtermos os coeficientes A e B reescrevemos a equao na forma y = A + Bw onde


w = ln x. O sistema que permite o ajuste dos dados similar ao do Ex1, i.e.
 P    P 
N w i A yi
P P 2 = P
wi wi B xi yi

ou seja, basta criar mais uma coluna de dados na tabela contendo ao invs de xi os valores
de wi = ln xi .

Exemplo 3: Ajuste de dados por uma funo exponencial na forma:

y = A exp(Bx).

Para obtermos os coeficientes A e B do ajuste reescrevemos a equao na forma ln y =


ln A + Bx ou ainda z = a + bx. Assim a tabela de dados necessita de uma coluna com
os valores de ln yi = zi . O procedimento do Ex1 ento repetido de modo a obter os
coeficientes a e b por  P    P 
N x i a z i
P P 2 = P .
xi xi b xi zi
Os reais coeficientes da funo exponencial sero ento A = exp(a) e B = b.

Exemplo 4: Ajuste de dados por uma lei de potncia na forma:

y = AxB .

Neste caso aplicamos a funo ln na equao para obtermos ln y = ln A + B ln x ou ainda


z = a + bw. O sistema resultante ser um misto dos exemplos 2 e 3 ou seja
 P    P 
PN P w2 a
= P zi
.
wi wi b wi z i

Os coeficientes desejados para o ajuste sero A = exp(a) e B = b.

Exemplo 5:
Tabela 4.1 - dados experimentais.
Em uma experincia como pndulo
simples conseguimos os seguintes pe- Li (m) Ti (s)
rodos em funo do comprimento (ta-
0.50 1.43
bela ao lado). Aps efetuar os proce-
1.00 2.00
dimentos indicados nos exemplos de 1
2.00 2.85
a 4 obtivemos os seguintes coeficientes:
3.00 3.48
4.00 3.98
- ajuste linear: A= 1.23 e B= 0.722 y = 1, 23 + 0, 722x
- ajuste logaritmo: A= 2.14 e B= 1.23 y = 2, 14 + 1, 23 ln x
- ajuste exponencial: A=exp(a)=1.43 ; b=B=0.281 y = 1, 43 exp(0, 281x)
- ajuste potncia de x: A=exp(a)=2.01 ; b=B=0.495 y = 2, 01x0,495

O grfico abaixo ilustra o resultado dos ajustes. Podemos observar que a Lei de Potncia
forneceu o melhor ajuste entre os apresentados. Entretanto a potncia deveria ser igual
a 0,5. Isto indica que as medidas experimentais no foram realizadas com a necessria
34 CAPTULO 4. AJUSTE DE CURVAS

preciso fornecendo um erro de (0,500-0,495)/0,500= 0,01 = 1%.


O valor da gravidade local pode ser estimado a partir do coeficiente A fazendo g =
(2/A)2 = 9, 77m/s2 . Assumindo o valor real de 9,81m/s2 o erro na estimativa de g
(9,81-9,77)/9,81=0,004 = 0,4%.

Figura 4.1: Diferentes ajustes obtidos com os dados provenientes de uma experincia com o
Pndulo Simples.

4.1.2 Mnimos Quadrados Ponderados

Imagine que tenhamos a disposio um cronmetro cuja menor leitura seja de um segundo.
Ao realizarmos medidas com este cronmetro os resultados devem ser expressos com a devida
impreciso do equipamento: valor medido0, 5s. Em certos equipamentos a incerteza da medida
um percentual do valor medido (e.g., 2, 5 0, 02 2, 5 Volts), ou seja, as incertezas nos registros
de voltagem so de 2% dos valores medidos.

Vamos assumir um conjunto de N medidas (xi , yi ) e que os valores de yi possuam imprecises


conhecidas i , respectivamente. Para uma dada funo ajuste f (xi , c) polinomial de grau p
desejamos encontrar os coeficientes c = {co , c1 , . . . , cp } que minimizam a soma dos quadrados
dos resduos ponderados

N  N
f (xi , c) yi 2 X 2
X 
2
Rw = = wi [f (xi , c) yi ]2 , (4.6)
i
i=1 i=1

onde wi = 1/i sendo que wi2 representa o quadrado do peso atribudo ao i-simo resduo.
Assim, quanto menor for a incerteza de uma dada medida maior ser o seu peso na estimativa
dos coeficientes da funo ajuste.

Sabemos que as medidas experimentais podem sofrer flutuaes por impercia do experimentador
ao manusear o equipamento de medida, m calibrao do equipamento, flutuaes trmicas do
laboratrio ou mesmo na rede eltrica. Estas flutuaes (aleatrias) alteram as medidas alm do
normal aumentando suas incertezas. Na figura abaixo duas medidas se afastam consideravelmente
do ajuste linear estipulado para os dados. Usando Mnimos Quadrados convencional os valores
dos coeficientes da reta so alterados por estes dois desvios exagerados. Uma forma de contornar
este problema seria refazer as duas medidas ou, na impossibilidade, descart-las antes do ajuste.
4.1. MNIMOS QUADRADOS 35

Figura 4.2: Comparao entre ajustes realizados por Mnimos Quadrados com e sem ponderao.

Na tentativa de minimizar os efeitos de medidas suspeitas no ajuste podemos optar pelo Mtodo
dos Mnimos Quadrados Ponderados com uma tcnica iterativa. O procedimento inicial usar
Mnimos Quadrados convencional para obter um primeiro conjunto de coeficientes da funo
ajuste, c(1) = {c0 , c1 , . . . , cp }(1) . Na sequncia os resduos so computados por ri = f (xi , c) yi
e ento usados para definir os pesos wi . Os pesos recm computados so usados com MQP para
estimar os novos coeficientes da funo ajuste, c(2) = {c0 , c1 , . . . , cp }(2) . O processo pode iterar
mais algumas vezes at que um critrio de convergncia (ou parada) seja satisfeito.
Para facilitar as dedues mudaremos a formulao adotada para uma matricial muito utilizada
em artigos e livros que tratam de ajuste, regresso e inverso.
Desejamos minimizar Rw2 e para isso usando uma matriz de pesos diagonal W = w e a definio
ii i

c0
c1
X m
p  c
2 Xij cj1 , com m = p + 1

f (xi , c) = 1 xi xi ... xi 2 =
..
. j=1
cp

reescrevemos a Eq.(4.6) a saber



N
X m
X Xm
2
Rw = Wii Xij cj1 yi Wii Xij cj1 yi
i=1 j=1 j=1

Como cada termo entre colchetes o i-simo elemento de um vetor, temos


2
Rw = [W (Xc y)]T [W (Xc y)] . (4.7)

Usando as identidades (XY)T = YT XT e WT W = W2 , obtemos


2
Rw = (Xc y)T W2 (Xc y) ,
= (Xc)T W2 (Xc y) yT W2 (Xc y) ,
= cT XT W2 Xc cT XT W2 y yT W2 Xc + yT W2 y,
2
Rw = cT XT W2 Xc 2yT W2 Xc + yT W2 y.

Com o auxlio das identidades


dxT x daT x dxT Ax
= 2x ; =a ; = 2Ax
dx dx dx
36 CAPTULO 4. AJUSTE DE CURVAS

derivamos Rw
2 em relao aos parmetros e igualamos a zero, ou seja

dRw2 T
= 2XT W2 Xc 2 yT W2 X + 0 = 0,
dc
2XT W2 Xc 2XT W2 y = 0,
XT W2 Xc = XT W2 y,
1 T 2
= c = XT W2 X X W y. (4.8)

A Eq.(4.8) fornece os coeficientes que minimizam Rw 2 pelo mtodo dos Mnimos Quadrados

Ponderados. No caso particular em que a matriz diagonal W2 igual a matriz identidade os coe-
ficientes retornados pela equao sero os mesmos obtidos pelo mtodo dos Mnimos Quadrados
1 T
convencional: c = XT X X y = M1 d, com M = XT X e d = XT y.


4.2 Ajuste por uma funo qualquer (Newton e Gauss-Newton)

Em alguns casos os dados experimentais no possuem um bom ajuste com as funes exploradas
nas sees precedentes. Exemplos destes casos so

A
P (w, A, B, wo ) = , potncia em exp. de ressonncia,
(w wo )2 + B 2
1 (x xo )2
G(x, , xo ) = exp( ), funo Gaussiana,
2 2 2 2
k exp()
f (k, ) = , distribuio de Poisson
(k + 1)

e cujos grficos apresentam-se como nas figuras abaixo.

0.9

0.8 x0= 0,0; 2 =0,2


x0= 0,0; 2 =1,0
0.7 x0= 0,0; 2 =5,0
x0=2,0; 2 =0,5
0.6

0.5

0.4

0.3

0.2

0.1

0
5 4 3 2 1 0 1 2 3 4 5
(a) (b)

Figura 4.3: Grficos ilustrando (a) distribuies de Poisson e (b) distribuies Normais (Gaussi-
anas).

Nesta seo ser mostrado um procedimento conhecido pelo Mtodo de Newton que permite
ajustar dados experimentais por uma funo qualquer - funo esta definida previamente - a
exemplo das equaes acima apresentadas e normalmente no lineares.
4.2. AJUSTE POR UMA FUNO QUALQUER (NEWTON E GAUSS-NEWTON) 37

Neste mtodo desejamos minimizar o quadrado


P 2 dos P resduos como 2definido no Mtodo dos Mni-
mos Quadrados ou seja minimizar R = i ri = i [f (xi , c) yi ] onde c = {c1 , c2 , ..., cN } o
2

vetor com os parmetros da funo ajuste. Iniciamos com a derivada do quadrado dos resduos
com respeito aos parmetros de uma funo f (x, c), i.e.
N
1 (R2 ) X ri
gj (c) = = ri ,
2 cj cj
i=1
N
X f (xi , c)
gj (c) = [f (xi , c) yi ] .
cj
i=1

Comparando com o Mtodo de Newton-Raphson (se. 3.2) desejamos os coeficientes c que


minimizam R2 . Expandindo a funo gj (c) em uma Srie de Taylor e truncando os termos de
ordem superior a 2 temos
X gj
gj (c + c) gj (c) + ck ,
ck
k
onde Jjk = o elemento linha j coluna k da matriz Jacobiana associada ao vetor g.
gj/ck
Impondo que g se anule aps a correo dos parmetros fazemos g(c + c) = 0 e reescrevemos
a ltima equao na forma matricial a saber

0 = g + J c
J c = g
 1
c = J g

cuja soluo c o vetor com o incremento dos parmetros do vetor c de modo que a nova
(n)
estimativa dos parmetros da funo f (x, c) sero cn+1 = cn + c para n = 1, 2, ... iteraes
sendo a Jacobiana definida por
N 
2 f (xi , c)

X f (xi , c) f (xi , c)
Jjk = + [f (xi , c) yi ] .
cj ck cj ck
i=1

Em algumas literaturas o segundo termo entre as chaves desconsiderado nos clculos com o
intuito de minimizar o nmero de operaes numricas. Tal procedimento leva ao Mtodo de
Gauss-Newton.
Os zeros da funo gj so obtidos em termos da matriz Jacobiana definida acima e deduzida a
partir da funo ajuste f (x, c) a saber
N N 
2 ri

gj (c) X ri X ri ri
Jjk = = ri = + ri ,
ck ck cj ck cj ck cj
i=1 i=1
N
X f (xi , c)
= [f (xi , c) yi ] ,
ck cj
i=1
N 
2 f (xi , c)

X f (xi , c)
= [f (xi , c) yi ] + [f (xi , c) yi ] ,
ck cj cj ck
i=1
N 
2 f (xi , c)

X f (xi , c) f (xi , c)
Jjk = + [f (xi , c) yi ] .
cj ck cj ck
i=1

Em resumo, para encontrar os coeficientes do vetor c que definem a funo f (x, c) iterativamente
procedemos da seguinte forma:
38 CAPTULO 4. AJUSTE DE CURVAS

Algoritmo

1. escolhemos um conjunto de coeficien-


tes que produzem um ajuste prximo
dos valores tabelados (xi , yi ) - chute
inicial c(1)

2. calculamos a funo gj (x, c(1) ) e a


matriz Jacobiana Jjk (c(1) )

3. resolvemos o sistema linear para c:


(1)
J(c(1) ) c = g(x, c(1) )

4. incrementamos o novo vetor de coefi-


(1)
cientes: c(2) = c(1) + c

5. repete-se os clculos nos passos 2, 3 e


4 para obter c(3) , . . . , c(m) enquanto
|c| > tol1 ou |f (x, c) y| > tol2

6. satisfeito o critrio em 5 assume-se


como coeficientes (razes) de g ou pa-
rmetros da funo f (x, c) o ltimo
conjunto de coeficientes presentes no
vetor c Figura 4.4: Fluxograma Mt. Newton.

A ttulo de conhecimento dizemos que a matriz J a Jacobiana de g porm denominada de


Hessiana (H) de f . Este mtodo empregado quando possumos uma estimativa inicial dos
valores dos coeficientes da funo no linear usada para o ajuste dos dados, ou seja fornecemos
c1 .

Dependendo do chute inicial c(1) possvel que o mtodo gere um incrementoPc demasiada-
mente grande fornecendo um resduo maior do que o resduo sem o incremento: i ri2 (c + c) >
i ri (c) contrrio ao desejado. Quando isto ocorre dizemos que o mtodo diverge e os par-
2
P
metros obtidos no faro com que a funo f (x, c) ajuste os dados experimentais. O que se faz
inserir (fornecer) um novo conjunto de parmetros para um novo teste at que se consiga a
convergncia.

Exemplo 6: Considere uma garrafa com uma quantidade n = N/V de molculas por unidade
de volume. Cada molcula possui massa m e o gs encontra-se a uma temperatura T . O
nmero de molculas por unidade de volume nv com velocidade entre v e v + dv no interior
da garrafa dado pela lei de Maxwell para a distribuio de velocidades a saber

nv (v) = Av 2 exp(Bv 2 ),

onde
 m 3/2 m
A = 4n e B= .
2kT 2kT
4.2. AJUSTE POR UMA FUNO QUALQUER (NEWTON E GAUSS-NEWTON) 39

v(m/s) nv (m3 ) v(m/s) nv (m3 )


Suponha que, atravs de um mtodo 0 0 400 30.150
experimental, tenhamos conseguido obter 40 1.4677 440 26.921
o seguinte conjunto de dados (v, nv ) 80 5.4582 480 22.244
condensados ao lado. Escreva um script 120 13.159 520 18.279
em Matlab que fornea um ajuste para 160 19.677 560 12.405
este conjunto de dados, ou seja, obtenha os 200 28.305 600 9.1540
coeficientes A e B da distribuio de veloci- 240 33.285 640 6.8828
dades moleculares. Ao final do script faa 280 36.652 680 4.8711
um grfico com os pontos experimentais e
320 35.528 720 2.9592
com o ajuste obtido.
360 35.967 760 1.7515
Soluo: a primeira coisa que devemos fazer deduzir analiticamente o sistema de equa-
es, i.e., a matriz Jacobiana e o vetor g. Logo

f (xi , c) nv (vi , A, B)
= = vi2 exp(Bvi2 ) DA
c1 A
f (xi , c) nv (vi , A, B)
= = Avi4 exp(Bvi2 ) DB
c2 B
2 f (xi , c) 2 nv (vi , A, B)
= = 0 DAA
c1 c1 A2
2
f (xi , c) 2 nv (vi , A, B)
= = Avi6 exp(Bvi2 ) DBB
c2 c2 B 2
2 f (xi , c) 2 nv (vi , A, B) 2 nv (vi A, B)
= = vi4 exp(Bvi2 ) = DAB
c1 c2 AB BA

N N
X nv (xi , A, B) X
g1 = [f (xi , c) yi ] = [f (xi , c) yi ] vi2 exp(Bvi2 )
A
i=1 i=1
N N
X nv (xi , A, B) X
[f (xi , c) yi ] Avi4 exp(Bvi2 ) , ou
 
g2 = [f (xi , c) yi ] =
B
i=1 i=1
T
g1 4f DA
T
g2 4f DB , onde, 4fi = f (xi , c) yi

Segundo as dedues e definies acima temos


    
J11 J12 s1 g1
= ,
J21 J22 s2 g2

onde
h i
T T
J11 = DA DA + 4f DAA ,
h i
T T
J12 = DA DB + 4f DAB = J21 ,
h i
T T
J22 = DB DB + 4f DBB .

O script em Matlab/Octave a seguir permite que o usurio insira coeficientes A e B at que


o ajuste fique prximo dos dados experimentais. Na seqncia, itera um nmero mximo
de 50 vezes caso a condio de convergncia (tolerncia) no seja satisfeita, para no final
mostrar o grfico e escrever na tela os parmetros obtidos.
40 CAPTULO 4. AJUSTE DE CURVAS

% Maxwell.m - para um conjunto de dados de entrada ( v, n) realiza


% o ajuste dos mesmos segundo a Distrib. Velocid. Molecul. de Maxwell
% n(v) = A * v.^2 * exp(-B * v.^2)
clear
% dados experimentais (v, n)
vn=[0 0; 40 1.4677; 80 5.4582; 120 13.159; 160 19.677; ...
200 28.305; 240 33.285; 280 36.652; 320 35.528; 360 35.967; ...
400 30.150; 440 26.921; 480 22.244; 520 18.279; 560 12.405; ...
600 9.1540; 640 6.8828; 680 4.8711; 720 2.9592; 760 1.7515];
%
v = vn(:,1) ;
n = vn(:,2) ;
nd= length(n); %obtm o tamanho do vetor - numero de componentes
% inicializao
par = input(Informe o pto. inicial e tol [A , B, tol]: );
A = par(1) ; B = par(2) ; tol = par(3) ;
c = [A;B] ;
% lao p/ obteno do melhor chute inicial
while length(par) > 0
nv = A * v.^2 .* exp(-B * v.^2) ;
plot(v,n,.r,v,nv)
par= input(Altere o pto. inicial e tol [A , B]: ) ;
if length(par) == 2 ;
A = par(1); B = par(2) ;
c = [A;B] ;
end
end % fim do lao - chute inicial
%
% lao para busca automtica dos parmetros
for i = 1 : 50
% definicoes
nv = A * v.^2 .* exp(-B * v.^2);
df = nv - n;
% calculo das derivadas de n(v) em relacao a A e B
DA = v.^2 .* exp(-B*v.^2) ;
DB =-A * v.^4 .* exp(-B*v.^2) ;
% calcula gi
g1 = df * DA ;
g2 = df * DB ;
g = [g1 ; g2];
err= norm(g); % mesmo que sqrt(g*g)
if err < tol; break; end;
% calculo das derivadas cruzadas e segundas
DAA = zeros(1,nd) ;
DBB =-DB .* v.^2 ;
DAB =-DA .* v.^2 ;
DBA = DAB ;
% calculo da Jacobiana
J(1,1) = DA * DA + df * DAA ; % Desconsiderar os termos
J(2,2) = DB * DB + df * DBB ; % a direita das 4 somas leva
J(1,2) = DA * DB + df * DAB ; % ao Metodo de Gauss-Newton
4.3. EXERCCIOS 41

J(2,1) = DB * DA + df * DBA ; %
% calculo do incremento s = DeltaC
s = - inv(J)*g ;
c = c + s ; % nova solucao
A = c(1) ; B = c(2) ;
nv= A *v.^2 .* exp(-B * v.^2) ;
plot(v,n,.r, v,nv);
pause(0.5);
end
%
vv = linspace(0,v(end),10*length(v));
nvv = A * vv.^2 .* exp(-B * vv.^2) ;
plot(v,n,.r, vv,nvv);
nv = A * v.^2 .* exp(-B * v.^2) ;
df = nv - n ;
chi2= df * df ; % produto interno entre os resduos
disp([A B chi2]) % excreve A, B e chi-quadrado do ajuste na tela

Figura 4.5: Resultado do ajuste usando o cdigo Maxwell.m

4.3 Exerccios
4.1- Monte o sistema p/ obter os coeficientes A e B considerando um ajuste linear (reta) do
seguinte conjunto de dados: x = [0.00, 0.20, 0. 50, 0.90, 1.40] e y = [2.32, 1.46, 0.40, -0.88,
-2.32]. Resolva o sistema analiticamente, i. e., fornea a equao y = A + B*x.
4.2- Faa um script para realizar um ajuste linear dos pontos fornecidos no Exerccio 2.1. No
final do cdigo faa um grfico com os dados da tabela (crculos vermelhos) e, sobreposto,
o ajuste conseguido (linha cheia em azul).
42 CAPTULO 4. AJUSTE DE CURVAS

4.3- O potencial de Lennard-Jones usado para oh estudo de molculas diatmicas. Sua ex-
a 12
 i
a 6
presso em uma dimenso U (x, Uo , a) = Uo x sendo a a separao entre

2 x
tomos em que o potencial assume o menor valor e Uo a energia de ligao ou de dissoci-
ao da molcula. Desenvolva um script LenJon.m que permita o ajuste de um conjunto
de dados (xi , Ui ) a ser fornecido pelo usurio. Neste problema desejamos encontrar os
parmetros a e Uo . (Dica: faa uma adaptao dos procedimentos descritos em sala de
aula - script Maxwell.m).

Use os dados da tabela ao abaixo para obter as constantes Uo e a, cujo grfico est ilustrado
na Figura 4.6.

x (nm) U (eV) x (nm) U (eV)


0.420 4.819 0.620 -0.949
0.440 0.660 0.640 -0.806
0.460 -1.157 0.660 -0.685
0.480 -1.845 0.680 -0.582
0.500 -2.000 0.700 -0.496
0.520 -1.912 0.720 -0.423
0.540 -1.726 0.740 -0.362
0.560 -1.513 0.760 -0.311
0.580 -1.304 0.780 -0.268
0.600 -1.115 0.800 -0.231

Figura 4.6: Potencial de Lennard-Jones obtido


com os dados da tabela ao lado.

4.4- No Exemplo 6 a funo ajuste - Distribuio de Velocidades Moleculares - foi usada com
os dados e o Mtodo de Newton para obteno dos parmetros A e B. Aplique logaritmo
neperiano na funo original para obter uma formulao linearizada da funo ajuste,
ou seja, os novos coeficientes devem estar elevados a unidade. Usando a metodologia de
mnimos quadrados deduza o sistema de equaes pertinentes. Programe um script para
resolver o sistema e que ao final fornea os parmetros originais A e B da Lei de Maxwell
em questo.

4.5- Um paraquedista possui massa igual a 81,6 kg e encontra-se a uma altitude y0 com uma
velocidade inicial v0 quando aciona um equipamento capaz de armazenar a altitude, a
velocidade e a acelerao em funo do tempo. Considerando que a fora de atrito viscosa
(resistncia do ar) seja proporcional a velocidade (v). A 2 Lei de Newton acerta que

dv dv g
maj = mg j v j a= =g v = (vl v),
dt m dt vl

onde vl = mg/ a velocidade limite do paraquedista (fora resultante nula). Na primeira


equao consideramos um referencial orientado de baixo para cima com a origem no solo
de modo que a, v e g so considerados positivos. Use o mtodo iterativo desta seo (a
exemplo do cdigo maxwell.m) para obter
4.3. EXERCCIOS 43

(a) o parmetro , a altura inicial y0 e a ve-


locidade inicial v0 a partir dos dados (tempo, Tabela : dados do altmetro, da velo-
altitude) segundo a tabela ao lado sabendo que cidade e da acelerao em funo do
a dependncia da altitude com o tempo dada tempo
por
  t (s) y (m) v (m/s) a (m/s2 )
mgt m mg 1.50 1.4e+3 2.1e+1 6.8
y(t) = y0 + v0 (1 et/m )
3.00 1.3e+3 2.9e+1 4.7
4.50 1.1e+3 3.4e+1 3.4
(b) a velocidade v0 e o coeficiente a partir dos
6.00 1.0e+3 3.9e+1 2.6
dados (tempo, velocidade) fornecidos na tabela
7.50 9.0e+2 4.2e+1 1.9
ao lado sabendo que a dependncia da velocidade
9.00 8.6e+2 4.6e+1 1.6
com o tempo dada por
10.5 7.3e+2 4.7e+1 1.1
11.0 5.9e+2 4.7e+1 8.0e-1
 
mg mg
v(t) = v0 et/m
12.5 6.1e+2 5.1e+1 7.2e-1
14.0 4.7e+2 5.0e+1 5.0e-1
(c) a velocidade v0 e o coeficiente a partir dos 15.5 4.3e+2 5.3e+1 4.2e-1
dados (tempo, acelerao) fornecidos na tabela 17.0 3.0e+2 5.1e+1 2.8e-1
ao lado sabendo que a dependncia da acelerao 18.5 2.3e+2 5.2e+1 2.23e-1
com o tempo dada por 20.0 1.4e+2 5.1e+1 1.59e-1

mg
 22.5 6.7e+1 5.2e+1 1.24e-1
a(t) = v0 et/m

(d) o parmetro , a altura inicial y0 e a velo- OBS.: faam o script em Matlab/Oc-


cidade inicial v0 a partir dos dados (velocidade, tave que fornea os parmetros pedi-
altitude) fornecidos na tabela ao lado sabendo dos. Acrescente ao final do script ins-
que a dependncia da altitude com a velocidade trues para gerar um grfico dos da-
dada por dos experimentais (pts. vermelhos) e
que mostre o ajuste conseguido (linha
m m2 g mg v contnua azul).
y(v) = y0 + (v0 v) 2 ln .
mg v0
44 CAPTULO 4. AJUSTE DE CURVAS
Captulo 5

Sistema de Equaes Lineares

5.1 Definies

Definimos uma equao linear de n variveis na forma: a1 x1 + a2 x2 + + an xn = b onde os x0i s


sos as incgnitas da equao, os a0i s so os coeficientes das incgnitas (nmeros conhecidos) e b
o termo independente (conhecido). Como outro exemplo exemplo: ax + by + cz = d representa
uma equao linear com trs incgnitas, x, y e z.
Consideremos A uma matriz n n, x um vetor de incgnitas n 1 e b o vetor de termos
independentes n 1. A formulao matricial Ax = b representa um sistema de equaes lineares
de ordem n n, cuja soluo x deve ser obtida atravs de um processo em que todas as equaes
so satisfeitas ao mesmo tempo. Para esclarecer, se n = 3 temos o seguinte sistema de equaes

A11 A12 A13 x1 b1 A11 x1 + A12 x2 + A13 x3 = b1
A21 A22 A23 x2 = b2 ou A21 x1 + A22 x2 + A23 x3 = b2 .
A31 A32 A33 x3 b3 A31 x1 + A32 x2 + A33 x3 = b3

Dependendo de como a matriz A e o vetor b se apresentam os sistemas lineares so classificados


como Sist. Impossvel (SI), Sist. Possvel e Indetrminado (SPI) e Sist. Possvel e Determinado
(SPD), e.g.,
    
2 2 x1 5
1. SI - no tem soluo; =
2 2 x2 5
    
1 1 x1 5
2. SPI - infinitas solues; = (0; 5), (2, 5; 2, 5), . . .
3 3 x2 15
    
2 2 x1 5
3. SPD - soluo nica; = (0; 2, 5)
2 2 x2 5

As operaes aritmticas abaixo, realizadas entre duas equaes do mesmo sistema de equaes,
resultam em sistemas equivalentes ( com mesma soluo):

a) ao multiplicarmos os membros de uma equao do sistema por um nmero real distinto de


zero, obtm-se outro sistema equivalente ao inicial;

b) ao somar ou subtrair duas equao do mesmo sistema, obtemos outro sistema equivalente
ao inicial;
46 CAPTULO 5. SISTEMA DE EQUAES LINEARES

c) somando (subtraindo) uma equao do sistema outra equao do mesmo, multiplicada


por um nmero real diferente de zero, obtemos outro sistema equivalente;

d) se em um sistema de equaes lineares uma equao proporcional a outra ou combinao


linear de outras, podemos retir-la e o sistema que obtemos equivalente ao inicial.

Veremos nas sees a seguir algumas das tcnicas de soluo de sistemas de equaes lineares.

5.2 Mtodo de Gauss (Eliminao Gaussiana)

Neste mtodo necessitamos dois passos para obter o vetor soluo.de um sistema de equaes:

1. triangularizar a matriz A e,

2. realizar a retro-substituio (substituio regressiva).

No primeiro passo usamos operaes aritmticas entre linhas da matriz de modo a deix-la na
forma triangular a saber
0 0 0 0
A11 A12 A13 x1 b1
0 A0 0
x2 = b2 ,
0
22 A23

0 0
0 0 A33 x3 b3
0 0
onde Aij so os elementos modificados da matria A enquanto bi so os elementos modificados do
vetor independente b.

Exemplo 5.1: Desejamos triangularizar o sistema de equaes Ax = b dados A = [1 3 4; 4 2 3; 2 4 1]


e b = [1; 2; 3].
Iniciamos com a a matriz ampliada, i.e.

1 3 4 1
AA = 4 2 3 2
2 4 1 3

e ento comeamos a oper-la. 1) Substitumos a 2 linha pelo resultado da subtrao


entre o dobro da terceira linha menos a segunda, i.e.

1 3 4 1
AA = 0 6 1 4 .
2 4 1 3

Em seguida 2) substituimos a 3 linha pelo resultado da subtrao entre o dobro da primeira


linha e a terceira, i.e.
1 3 4 1
AA = 0 6 1 4 .
0 2 7 1
Finalmente 3) substituimos a 3 linha pelo resultado da subtrao entre a segunda linha e
o triplo da terceira, i.e.
1 3 4 1
AA = 0 6 1 4 .
0 0 22 7
5.3. MTODO DE GAUSS-JORDAN 47

Assim obtemos o novo sistema de equaes A0 x = b0 em que a matriz A foi triangularizada



1 3 4 1 3 4 x1 1
A0 = 0 6 1 0 6 1 x2 = 4 .
0 0 22 0 0 22 x3 7

O novo sistema de equaes pode ser facilmnete resolvido por retrosubstituio pois conhecemos
o valor de x3 atravs de uma simples operao: x3 = 7/22.

Exemplo 5.2: Retrosubstituio: Sabemos da terceira equao do sistema que x3 = 7/22.


Substituindo este valor na segunda equao 6x2 x3 = 4 obtemos
 
1 7 81 27
x2 = 4 = x2 = .
6 22 6 22 44
Em seguida substituimos x2 e x3 na primeira equao x1 + 3x2 + 4x3 = 1:
27 7 44 81 + 56 19
x1 = 1 3 +4 x1 = x1 = .
44 22 44 44
A soluo do sistema de equaes segundo o mtodo de Gauss : x = [19/44; 27/44; 7/22].

5.3 Mtodo de Gauss-Jordan

Este mtodo uma extenso do mtodo de Gauss que objetiva a transformao da matriz A
em uma matriz identidade. Basicamente as operaoes entre linhas so promovidas de modo a
diagonalizar a matriz original finalizando com elementos unitrios na diagonal principal.

Exemplo 5.3: suponha um sistema 3 3 dado por A = [2 4 2; 2 1 1; 1 1 2] e b = [6; 16; 9].


Usando a matriz ampliada temos

2 4 2 6

AA = 2 1 1 16 .

1 1 2 9

Como o elemento (3,1) unitrio, permutamos as linhas 1 e 3 obtendo



1 1 2 9
AA = 2 1 1 16 .
2 4 2 6
Realizamos as seguintes operaoes: L2 = L2 2L1 e L3 = L3 2L1 obtendo

1 1 2 9
AA = 0 1 3 2 .
0 2 2 12
Multiplicamos L2 por -1 e fazemos as seguintes operaes: L1 = L1 L2 e L3 = L3 2L2
obtendo

1 0 1 7 1 0 1 7
L3 =L3 /8
AA = 0 1 3 2 AA = 0 1 3 2 .
0 0 8 16 0 0 1 2
Finalmente as operaes: L1 = L1 + L3 e L2 = L2 3L3 nos permitem escrever

1 0 0 9
AA = 0 1 0 4
0 0 1 2
fornecendo a soluo desejada x = [9; 4; 2].
48 CAPTULO 5. SISTEMA DE EQUAES LINEARES

Este mtodo muito pouco usado nas solues de sistemas de equaes pois necessita de um
nmero maior de operaes levando o dobro do tempo gasto pelo mtodo de Gauss. Em al-
guns problemas fsicos o objetivo a diagonalizao de operadores (como A): problemas de
auto-valores e auto-vetores so amplamente usados em Mecnica Quntica. Nestes casos no
trabalhamos com a amatriz ampliada e o resultado da diagonalizao fornece, na diagonal prin-
cipal, o espectro de auto-valores do operador ao invs da matriz identidade.

5.4 Decomposio LU (ou Fatorao LU)

Este mtodo mais trabalhoso que o mtodo de Gauss porm muito prtico quando necessitamos
resolver sistemas de equaes em que a matriz de coeficientes A permanece a mesma e o vetor
de termos independentes b assume diferentes valores para cada sistema de equaes a resolver.
Na forma compacta o sistema de equaes Ax = b pode ser reescrito usando a igualdade LU = A
na forma
LU x = b. (5.1)

onde L a matriz inferior (lower ) e U a matriz superior (upper ) que multiplicadas fornecem a
matriz A, i.e.

1 0 0 U11 U12 U1n A11 A12 A1n
L21 1 0 0 U22 . . . U2n A21 A22 ... A2n
.. .. .. .. .. .. .. .. = .. .. .. .. .

. . . . . . . . . . . .


Ln1 Ln2 . . . 1 0 0 . . . Un n An1 An2 . . . An n

Ao multiplicarmos a 1 linha de L pelas colunas de U verificamos que U1j = A1j para j = 1, ..., n.
Ao multiplicarmos a 2 linha de L pela 1 coluna de U obtemos L21 U11 = A21 ou ainda L21 =
A21 /U11 . As multiplicaes pelas outras colunas fornecem equaes com dois termos na forma
L21 U1j + 1 U2j = A2j para j = 2, ..., n e, visto que conhecemos L21 bem como a primeira linha
da matriz U obtemos U2j = A2j L21 U1j , i.e., os coeficientes restantes da 2 linha da matriz U .
O processo acima pode ser extendido no intuito de construirmos ambas as matrizes L e U .
Suprimindo detalhes a fatorao da matriz A em uma matriz inferior L e outra superior U
resumida em duas equaes a saber
i1
X
Uij = Aij Lik Ukj , para i j ; (5.2)
k=1
 Pi1 
Aij k=1 Lik Ukj
Lij = , para i > j. (5.3)
Ujj

Visto que LU x = b escrevemos Ly = b e y = U x e a soluo do sistema de equaes, aps a


fotorao de A resolvido em duas etapas:

1. calculamos y a partir de Ly = b

1 0 0 y1 b1
L21 1 0 y2 b2
.. .. . . .. .. = ..

. . . . . .


Ln1 Ln2 . . . 1 yn bn
5.5. MTODO ITERATIVO DE JACOBI-RICHARDSON 49

fornecendo: y1 = b1 ; y2 = b2 L21 y1 ; y3 = b3 L31 y1 L32 y2 etc. Este processo leva a


seguinte frmula de recorrncia
i1
X
yi = bi Lij yj , para i = 1, ..., n. (5.4)
j=1

2. usando retro-substituio obtemos x a partir de U e y:



U11 U12 U1n x1 y1
0 U22 . . . U2n x2 y2
.. .. . .. .. = ..

. . . . . . .


0 0 . . . Un n xn yn

sedo este procedimento idntico segunda etapa do mtodo de Gauss.

5.5 Mtodo Iterativo de Jacobi-Richardson

Os mtodos iterativos usam um uma estimativa inicial da soluo do sistema de equaes para
obter uma melhor estimativa da mesma aps sucessivos passos. Assim, sendo x0 uma soluo
aproximada do sistema de equaes o processo deve ser capaz de devolver uma soluo aproxi-
mada x1 , melhor do que x0 , aps uma iterao. A soluo x1 ento usada para obteno de x2
e assim sucessivamente.
Consideremos um sistema n n do tipo Ax = b. Podemos escrever a matriz de coeficientes como
a soma de trs matrizes: uma triangular inferior, uma diagonal e uma triangular superior na
forma

0 0 0 A11 0 0 0 U12 U1n
L21 0 0 0 A22
0 0 0 . . . U2n

.. .. . . .. ..
+ .. .. .. + . .. .. .. = A

. . . . . . . . .. . . .

Ln1 Ln2 . . . 0 0 0 . . . Ann 0 0 ... 0


| {z } | {z } | {z }
L D U

ou L + D + U = A.

Substituindo expresso A no sistema original obtemos


 
L+D+U x=b

e, manipulando, vm
 
Dx = b L + U x,
1 1  
x = D bD L + U x.

O processo iterativo de Jacobi-Richardson inicia-se ao substituirmos x direita da igualdade


por sua aproximao x1 resultando em uma nova aproximao da soluo. Como este processo
repetido vrias vezez, a frmula de recorrncia deste mtodo
1 1  
xk+1 = D bD L + U xk , para k = 1, 2, .... (5.5)
50 CAPTULO 5. SISTEMA DE EQUAES LINEARES

finalizando quando o limite mximo de iteraes ultrapassado ou quando a diferena max|xk+1


xk | < , sendo um nmero pequeno relacionado com o grau de preciso desejado para a soluo
do problema.
Verificamos na Eq.(5.5) a necessidade de inverter a matriz diagonal D. Embora a inverso desta
matriz seja muito simples possvel evitar este procedimento redefinindo os termos da Eq.(5.5)
a saber
 
xk+1 = b L + U xk , para k = 1, 2, .... (5.6)


bi
= bi /Aii , i = 1, ..., n
onde Lij = Aij /Aii , se i > j e 0 caso contrrio

Uij = Aij /Aii , se i < j e 0 caso contrrio



o que representa uma normalizao dos elementos de cada equao do sistema de equaes pelo
elemento da diagonal principal Aii no incio da deduo do mtodo.

5.6 Mtodo de Gauss-Sidel


 
Como na seo anterior reescrevemos o sistema de equaes Ax = b na forma L + I + U x =
b , sendo I. a matriz identidade. Manipulando a equao obtemos
 
L + I x = b U x
 1  1
x = L + I b L + I U x

e, admitindo uma soluo inicial aproximada para x direita da igualdade, obtemos a frmula
de recorrncia para o mtodo iterativo de Gauss-Sidel a saber
 1  1
xk+1 = L + I b L + I U xk , para k = 1, 2, ... (5.7)

com critrios de parada idnticos aos mencionados na seo anterior.


Devemos observar na Eq.(5.7) a necessidade de inverter a matriz triangular inferior (L + I)
para a aplicao do mtodo. neste ponto que nos perguntamos: por qu tanto trabalho se
necessitamos inverter o termo (L + I) ? No seria melhor resolver o sistema Ax = b invertendo
a matriz A e multiplicando o resultado por b?
A resposta a esta pergunta torna-se clara ao redefinirmos o mtodo. Pr-multiplicamos a Eq.(5.7)
pela matriz (L + I) obtendo
 
L + I xk+1 = b U xk , ou

xk+1 = b L xk+1 U xk , para k = 1, 2, ... (5.8)

A Eq.(5.8) permite o clculo iterativo da soluo do sistema de equaes sem a necessidade da


inverso da matriz (L + I). Assumindo um chute inicial xk = [xk1 ; xk2 ; . . . , xkn ] com k = 0 para
o primeiro passo temos

xk+1
1 = A12 xk2 A13 xk3 A1n xkn + b1
xk+1
2 = A21 xk+1
1 A23 xk3 A2n xkn + b2
.. ..
. .
xk+1
n = An1 xk+1
1 An2 xk+1
2 Ann xk+1
n1 + bn
5.7. CONVERGNCIA DOS MTODOS ITERATIVOS 51

o que fornece x1 = [x11 ; x12 ; . . . , x1n ]. No segundo passo incrementa-se k para o valor 1 repetindo-
se o processo. Podemos observar nas solues que o valor recm calculado de x1 usado para
estimar xk+1
2 . Os valores atualizados de x1 e x2 so empregados na estimativa de x3
k+1
e assim
sucessivamente at xn .
k+1

5.7 Convergncia dos mtodos Iterativos

Os dois mtodos iterativos, acima apresentados, iro convergir para a soluo do sistema de equa-
es sempre que a matriz for diagonalmente dominante,. i.e., quando a matriz A satisfizer

n
X
|Aii | > |Aij | , para cada i = 1, 2, . . . , n.
j6=i

Convergncias lentas ocorrem quando o chute inicial est distante da soluo do problema e
quando o critrio acima fica prximo da igualdade, ou seja

X
|Aii | |Aij | , para i = 1, 2, . . . , n.
j6=i

possvel melhorar o condicionamento da matriz realizando algumas permutaes entre linhas de


modo a tornar o sistema diagonalmente dominante. Este processo denominado de pivoteamento
e usado tambm nas solues diretas obtidas pela aplicao do mtodo de Gauss, de Jacobi-
Richardson e decomposio LU.

Exemplo 5.4: Podemos usar um sistema de equaes lineares para obter, por exemplo, as
correntes que circulam nas malhas do circuito abaixo. O mtodo de Maxwell simples pois
assume apenas uma corrente em cada malha. Considerando a Lei de Kirchoff para as trs
malhas do circuito temos

R0 i0 + V2 + R5 (i0 i2 ) + R6 i0 = 0
R1 i1 + R2 (i1 i2 ) V2 = 0
R3 i2 + R4 i2 + R5 (i2 i0 ) + R2 i2 = 0

Sabendo que R1 = R3 = R5 = 100 e R0 = R2 = R4 = R6 = 200 monte o sistema de


equaes e obtenha, com papel-lpis-calculadora, as correntes usando

a) o mtodo de Gauss e

b) o mtodo de Gauss-Sidel.

c) Agora tente implementar o mtodo de Gauss usando a linguagem do Matlab ou do


Octave de modo que valores das resistncias R0 . . . R5 bem como de V1 e V2 sejam inseridos
via teclado antes de se resolver o problema computacionalmente.
52 CAPTULO 5. SISTEMA DE EQUAES LINEARES

Observao: as correntes que


percorrem os resistores sero
dadas por

R1 I1
R2 I1 I2
R3 I2 R4 I2
R5 I0 I2
R0 I0 R5 I0

Figura 5.1: Circuito com trs malhas e duas


fontes de tenso contnuas V1 e V2 .

5.8 Exerccios

5.1- Dados A = [2, 2, 1, 1; 1, 1, 2, 1; 3, 2, 3, 2; 4, 3, 2, 1] e b = [7; 1; 4; 12] determine


por decomposio LU a soluo do sistema de equaes. Resp: a soluo x = [1; 2; 1; 0].

5.2- Use os dados do exerccio 5.1 e determine a soluo do sistema de equaes usando o mtodo
de Gauss-Sidel. (Obs.: verifique se o sistema diagonalmente dominante; em caso negativo
opere as equaes para obter um sistema equivalente que satisfaa esta exigncia).

5.3- A Ponte de Wheatstone usada para calcular resistncias (ou capacitncias) desconhecidas.
O circuito abaixo ilustra uma Ponte de Wheatstone em que R0 I5 = 0 quando a ponte est
em equilbrio, i.e., quando R2 R3 = R1 R4 . Normalmente entre os pontos B e D existe um
ampermetro que indica a corrente neste segmento (I5 ) sendo R0 a resistncia do aparelho.

Figura 5.2: Esquema de circuito: Ponte de Wheatstone


5.8. EXERCCIOS 53

Aplicando as Leis de Kirchhoff aos ns A, D, C e D obtemos as equaes

I = I1 + I2 ,
I3 = I1 + I5 ,
I = I3 + I4 ,
I2 = I4 + I5 .

As trs malhas fornecem as equaes restantes

I2 R2 + I4 R4 = V,
I1 R1 I5 R5 I2 R2 = 0,
I3 R3 I4 R4 + I5 R5 = 0.

A soluo analtica poder ser derivada desde que sejam fornecidos dados suficientes para
isso: este sistema possui cinco resistncias, seis correntes, uma fonte (bateria) e apenas
sete equaes. Assumindo que as incgnitas do problema sejam as correntes reescrevemos
o conjunto de equaes acima na forma

1 1 1

0 0 0 0
I
0 1 0 1 0 1 0
I1
1 0 0 1 1 0 0
I2
0 0 1 0 1 1 = 0 Ax = b
I3
0 R1 0 0 R4 0 V
I4
0 R1 R2 0 0 R5 0
I5
0 0 0 R3 R4 R5 0

onde observa-se que a matriz A no quadrada. Uma forma de solucionar este problema
baseia-se na obteno de um sistema de equaes equivalente. Para tanto pr-multiplicamos
a equao pela matriz transposta de A, ou seja, fazemos

T T
A Ax = A b M x = c

T T
onde c = A b e M = A A sendo M uma matriz quadrada 6x6. Considere R1 = 100,
R2 = 30, R3 = 20, R4 = 200, R5 = 1 e que a bateria fornea 20V de d.d.p. entre
os terminais A e C do circuito. Monte a matriz A e o vetor b, realize a pr-multiplicao
para obter a matriz M e o vetor c. Em seguida implemente um script (Matlab/Octave)
para encontrar computacionalmente as correntes em cada resistor pelo

(a) Mtodo de Fatorao LU e

(b) Mtodo de Gauss-Sidel


54 CAPTULO 5. SISTEMA DE EQUAES LINEARES

5.4- Considere o sistema de roldana e pesos ao lado (Mquna de


Atwood). A roldana possui raio R e momento de Inrcia
I. Considere M > m valores tambm conhecidos e:

(a) Escreva as equaes de movimento dos pesos e da


roldana.

(b) Monte um sistema de equaes em que as incgnitas


so T1 , T2 e a acelerao angular da roldana .

(c) Dados M = 2Kg , m = 1Kg, R = 10cm e I = 0,01


Kgm2 altere o script Gauss.m para obter a soluo.

(d) Altere GauSeidel.m para obter a soluo.

(e) O sistema Fsico levado a Lua (g muda) recalcule a


soluo usando o item c.
5.5- O sistema de trelias ao lado composto de sete
barras de comprimento de 2 m cada. Em cada
um dos ns A, B, C, D e E existem esforos
concorrentes e que podem ser equacionados na
forma

f1 cos 60 + f2 = 0
N A
f1 sen60 + HA = 0

f2 f3 cos 60 + f5 cos 60+f6 = 0
N B
f3 sen60 + f5 sen60 = 10000
 Figura 5.3: Sistema de trelias do exer-
f1 cos 60 + f3 cos 60 f4 = 0
N D ccio 5.5.
f1 sen60 f3 sen60 = 12000

(a) Escreva as equaes pertinentes aos ns C e E.

(b) Considerando que HA = HC = 20KN reescreva o conjunto de equaes na forma


matricial em que o vetor de incgnitas seja composto das foras f1 , f2 , . . . , f7 .

(c) Altere o script Gauss.m para e obtenha a soluo.

(d) Altere GauSeidel.m para obter a soluo e compare com os resultados do item c.

(e) O sistema levado a Lua (g muda) recalcule a soluo usando o script do item c.
Captulo 6

Soluo de Equaes Diferenciais


Ordinrias

Nos distintos ramos da cincia Fsica podemos encontrar inmeros sistemas que so regidos por
equaes diferenciais. Como exemplo primeira Lei de Newton aplicada ao sistema massa-mola
leva s equaes diferenciais do oscilador harmnico, simples, amortecido e forado. As leis de
Maxwell na forma diferencial, as equaes de Navier-Stokes, a difuso e conduo do calor podem
conduzir s denominadas equaes diferenciais ordinrias.
Este captulo apresenta, com uma formulao simples, o Mtodo de Diferenas Finitas (MDF)
como ferramenta numrica para obteno das solues de algumas equaes diferenciais tais
como: decaimento radioativo, oscilaes e difuso do calor.

6.1 Decaimento Radioativo

A Lei que expressa o decaimento radioativo de uma substncia radioativa (ex. Urnio, Trio,
Potssio) equacionada na forma
dN
= N = N (t) = N0 exp(t) (6.1)
dt
onde N0 representa o nmero de tomos radioativos no instante t = 0s e uma constante de
decaimento que depende da substncia. Algumas definies importantes so:
ln 2 0, 693
t1/2 = = , meia vida

1
tm = , vida mdia

sendo que a meia vida da substncia, como a denominao sugere, o tempo necessrio para
que metade dos ncleos radioativos decaiam e tm o tempo mdio de vida da substncia. Em-
bora tenhamos a soluo analtica do problema podemos, a ttulo de exemplo, aplicar a tcnica
numrica denominada de Mtodos de Diferenas Finitas equao diferencial com o intuito de
obter uma soluo numrica N num (t). Para isso devemos substitui a derivada dN/dt por suas
aproximaes (vide cap. anterior), ou seja

Ni+1 Ni1
1. Diferena centrada: = Ni = Ni+1 = Ni1 2t Ni (Centered)
2t
Ni Ni1 Ni1
2. Diferena atrasada: = Ni = Ni = (Backward)
t 1 + t
56 CAPTULO 6. SOLUO DE EQUAES DIFERENCIAIS ORDINRIAS

Ni+1 Ni
3. Diferena adiantada: = Ni = Ni+1 = Ni (1 t) (Forward)
t
Ni+1 Ni
4. Forward Modificado: = Ni+1/2 e, tomando o valor mdio Ni+1/2 = (Ni+1 +
t
Ni )/2 obtemos
(1 t/2)
Ni+1 = Ni
(1 + t/2)

Tarefa 6.1: (a) Considerando N0 = 1000 e = 3, 46 102 s1 determine numericamente os


valores de N (t) segundo as aproximaes de 1 a 4 usando 21 amostras no tempo compre-
endido ao intervalo [0 , 5 102 ] segundos.
(b) Faa um grfico de tempo contra as solues numricas N1 (t), N2 (t), ...
(c) Calcule a soluo analtica nos tempos discretizados e compute os erros de cada apro-
N
ximao na forma erro = Sanal Sanal 100. Ao final produza um grfico do tempo contra
cada um dos erros.

6.2 Equao de Poisson 1-D

Em eletrosttica vimos uma relao entre o fluxo do campo eltrico e a distribuio de cargas no



espao. Considerando o vetor deslocamento eltrico, D = E , onde a permitividade eltrica


do meio e E o campo eltrico temos


D = , (Lei de Gauss)

ou ainda


( E ) = , (6.2)
sendo a densidade de carga. O campo eltrico pode ser obtido a partir do gradiente do potencial


eltrico, i.e., E = V . Substituindo na equao (6.2) vem

(V ) = . (6.3)

Em meios homogneos constante e a ltima equao simplifica-se para



2 V = , (6.4)

conhecida por equao de Poisson para o potencial eletrosttico. Com exemplo considere a
seguinte equao diferencial de segunda ordem

d2
= f (x) = x (6.5)
dx2
sujeita as seguintes condies de fronteira (Dirichlet)

(0) = 1 = a,
(1) = n = b.

Usando diferena centrada esquerda da igualdade temos

(x + x) 2(x) + (x x)
= x
x2
6.2. EQUAO DE POISSON 1-D 57

que pode ser simplificada usando a notao x = (i 1)x, (x) = i , (x + x) = i+1 de


modo que

i+1 2i + i1
= xi
x2
i1 2i + i+1 = x2 xi . (6.6)

Existem dois problemas ao se tentar usar esta equao: um ocorre quando inserimos i = 1, pois
aparece um termo 0 = (x) que no est no domnio do problema e dois, quando i = n, pois
aparece o termo n+1 = (1 + x) que tambm encontra-se fora do modelo (domnio) definido
para valores de x [0, 1]. Podemos desenvolver a ltima equao para diferentes posies x, ou
equivalentemente, para diferentes valores de i na forma

i=1 0 21 + 2 = x2 x1
i=2 1 22 + 3 = x2 x2
i=3 2 23 + 4 = x2 x3
: : :
i=n n1 2n + n+1 = x2 xn .

Como 0 e n+1 no fazem parte da soluo os termos devem ser retirados da primeira e ltima
equaes. Alm disso, das condies de fronteira sabemos os exatos valores de 1 e de n , de
modo que a primeira e a ltima equaes no so verdadeiras devendo ser removidas do sistema
de equaes. O resultado destas conjecturas permite reescrever o conjunto de equaes acima na
forma

i=2 22 + 3 = x2 x2 1
i=3 2 23 + 4 = x2 x3
: : :
i=n1 n2 2n1 = x2 xn1 n

e, usando 1 = a e n = b, pode-se expressar o sistema na forma matricial a saber

2 1 x2 x2 a

0 . . . . 0 2
1 2 1 0 . . . 0 3 x2 x3
x2 x4


0 1 2 1 0 . . .
4



. 0 . . . . . . . .
(6.7)

= .

. . . . . . . .
.
.


. . . . . . . .
.
.

. . . . . . 2 1 . .
0 0 . . . 0 1 2 n1 x2 xn1 b

Denominando a matriz a esquerda da igualdade de K, o vetor soluo-parcial de e o vetor


direita da igualdade de c, o sistema simultneo de equaes resolvido a saber

K = d
1
= K d. (6.8)

Neste sistema de equaes a matriz K de ordem (n 2) (n 2) enquanto os vetores possuem


n 2 elementos. O vetor soluo deste problema, , pode ser obtido usando as seguintes linhas
de comando no ambiente Octave/Matlab
58 CAPTULO 6. SOLUO DE EQUAES DIFERENCIAIS ORDINRIAS

clear;
...
define-se a e b (cond. cont.)
define-se n, dx e x
calcula-se a matriz K
calcula-se o vetor c
...
psi=inv(K)*d ; % soluo para i=2,..,n-1. Exclui-se as bordas
phi(1) = a; %\
phi(2:n-1)= psi; % > soluo numrica completa.
phi(n) = b ; %/
phi_anl = x.*(1-x.^3)/12; % soluo analtica
plot(x,psi,b., x,phi_anl,r-) % grfico comparativo entre solues

Observao: quando o meio for heterogneo = (x) a equao (6.3) desenvolvida usando a
identidade vetorial (AB) = B A + A( B) sendo A e B escalares. A aplicao
desta identidade fornece
(V ) = V + ( V ) =
2 V + V =
d2 V d dV
2 + =
dx dx dx
d2 V d ln dV
2
+ =
dx dx dx
ou seja, para meios heterogneos a equao diferencial possui um termo com dependncia
no gradiente do potencial eltrico.

6.2.1 Algoritmo de Thomas - Sistemas tridiagonais

Um grande nmero de problemas fsicos recaem em um sistema de equaes do tipo Ax = b onde


a matriz A tridiagonal, ou seja, possui a diagonal principal (bi ), uma subdiagonal (ai ) e uma
sobrediagonal (ci ) na forma

b1 c1 0 0 . . . 0 x1 d1
a2 b2 c2 0 . . . 0 x2 d2


0 a3 b3 c3 . . . 0 x3 d3

0 0 a4 . . . . . . . . .

.. .. = .. .

.. . . .. ..

. ... 0 . . . . cn1 . .
0 0 0 an bn xn dn
A proposta do algoritmo de obter o vetor x armazenando apenas as trs diagonais da matriz ao
invs de armazenar a matriz cheia n n. Em uma primeira etapa o processo o de eliminao
da diagonal inferior (vide mtodo de eliminao Gaussiana) de modo que escrevemos

c1 = c1 /b1
d1 = d1 /b1
para k de 1 at n
den = bk ak ck1
ck = ck /den
dk = (dk ak dk1 )/den
fim do lao
6.2. EQUAO DE POISSON 1-D 59

Em uma segunda etapa, a da retrosubstituio obtemos a soluo desejada a saber

xn = dn
para k de n-1 at 1
xk = dk ck xk+1
fim

No ambiente Matlab/Octave podemos criar uma funo para este fim. Um exemplo

function [x]=TRID(a,b,c,d)
% resolve o sistema Ax=d com A tridiagonal
% a - diagonal inferior de A
% b - diagonal principal
% c - diagonal superior
% d - vetor de termos independentes
% http://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm#Variants
n=length(a);
c(1) = c(1)/b(1);
d(1) = d(1)/b(1);
for i = 2:n
id = (b(i) - c(i-1)*a(i)) ;
c(i) = c(i)/id ;
d(i) = (d(i) - a(i)*d(i-1))/id ;
end
% retrosubstituio
x(n) = d(n) ;
for i= n-1:-1:1
x(i) = d(i) - c(i)*x(i + 1) ;
end

Dirichlet: na seo anterior vimos um exemplo em que a soluo da EDO possuia valores
fixos nas duas fronteiras do modelo: condies de Dirichlet. Como resultado o sistema
de equaes n n foi reduzido um sistema com n 2 incgnitas e o vetor de termos
independentes teve a primeira e ltima linhas alteradas para insero das condies de
contorno, i.e.

d2 a
d3 0
0 0
K = d onde d = d cD = . . .

.. ..
dn1 b

Muitos sistemas fsicos possuem outras condies de contorno : em difuso do calor comum
encontrarmos fronteiras com condies de conveco ou com fluxo prescritos, paredes adiabticas
implicam em fluxo trmico nulo. No processo de obter a soluo analtica ou numrica de equaes
diferenciais impomos com frequncia as de Neumann e de Robin (mista)

= e (6.9)
x

+ = , (6.10)
x
respectivamente. Como a condio de Robin incorpora a de Dirichlet ( = 0) e de Neumann
( = 0) interessante analizar como inseri-la na soluo numrica de uma EDO de segunda
ordem.
60 CAPTULO 6. SOLUO DE EQUAES DIFERENCIAIS ORDINRIAS

Condio de Robin: Consideremos a soluo numrica 1D (por DF) da EDO de Poisson

(k) = f

onde a condio mista ocorre em x = 0 e a condio de Dirichlet (L) = L imposta em


x = L. A equao diferencial acima assume a forma discretizada (com k = cte)
x2
i1 2i + i+1 = fi , para i = 1, 2, ..., n 1. (6.11)
k
onde adotou-se a discretizao espacial na forma xi = (i 1)x. Usando a aproximao
numrica (centrada) na derivada primeira da condio de contorno mista temos
i+1 i1
+ i = , em i = 1 vm
2x

0 = 2x + 2x 1 + 2 (6.12)

que representa o valor de obtido em um ponto fictcio (fora do modelo) x0 = x.
Substituindo 0 na eq. (6.11) com i = 1 vm
x2
i=1 0 21 + 2 = f1 ,
k
x2
2x + 2x 1 + 2 21 + 2 = f1 ,
 k
x2


2 1 x 1 + 22 = f1 + 2x . (6.13)
k
Assim o sistema de equaes lineares capaz de resolver numricamente a equao de Poisson
com fonte e condies de Robin (x = 0) e Dirichlet (x = L)
x2

2(1 x ) 2 k f1 + +2x

0 . . . . 0 1
x2
1 2 1 0 . . . 0 2 k f2



x 2
0 1 2 1 0 . . . 3 f

k 3
. 0 . . . . . . .




= .
. . . . . . . . .
.



. . . . . . . . . .



. . . 2 1 .

. . . .
0 0 . . . 0 1 2 n1 x2
k fn1 L
(6.14)
onde consideramos os parmetros k, , , e L constantes. Comparando o ltimo resul-
tado com o sistema de equaes (6.7) conclumos: ao introduzir a condio de contorno
mista o sistema passa a ter ordem n 1 e as mudanas ocorrem tanto na matriz quanto
no vetor de termos independentes.

O sistema de equaes lineares em que a condio de Neumann ocorre em x = 0 deve ser deduzido
de forma similar ao descrito para condio mista. Tentar usar o artifcio = 0 na equao (6.14)
produzir erro: diviso por zero!

Tarefa 6.2: (a) aplique diferenas finitas equao de Poisson no domnio x[0, 1] e obtenha o
sistema de equaes lineares como mostrado em 6.7 e 6.14 pertinente as seguintes condies
de contorno

(x) = a, em x = 0

k = b, em x = 1
x
6.3. OSCILAES SIMPLES, AMORTECIDAS E FORADAS 61

(b) dado o termo fonte f (x) = x derive a soluo analtica para este problema, ou seja,
integre duas vezes a equao d2 /dx2 = x/k e use as condies de contorno para deduzir
as constantes de integrao.
(c) construa um script para ambiente Matlab/Octave que resolva o sistema de equaes
obtido no item (a); programe tambm a soluo analtica para comparao atravs da
instruo plot(x,phi,b-, x,phi_a, r.) . Sugesto: use k = 0, 5; b = 0, 1 ; a = 2 e
L = 1.

6.3 Oscilaes Simples, Amortecidas e Foradas

Alguns sistemas fsicos de movimento peridico estudados na graduao constituem o que denomina-
se de MHS - Movimento Harmnico Simples: Massa-Mola, Pndulo Simples, Pndulo Fsico,
Circuito LC. Outros sistemas oscilantes podem conter em sua descrio fsico-matemtica os
termos dissipativos (atrito, resistncia do ar) bem como o termo fonte.
Nesta seo veremos como problemas oscilantes com e sem amortecimento, com e sem fontes
usando como modelo o Oscilador Massa-Mola.

6.3.1 Oscilador Harmnico Simples

Este o oscilador mais fundamental (Mecnica Clssica) que se trata na graduao do curso de
Fsica. composto de uma mola de constante elstica k, com uma das extremidades fixa na
parede e a outra em um corpo ideal de massa m apoiado em uma mesa sem atrito. Dentro do
limite elstico da mola Hook props que a fora exercida pela mola na massa proporcional a
deformao da mesma. Designando a deformao por x e usando a 2 Lei de Newton obtemos
ma = kx,
d2 x k
2
= x,
dt m
d2 x
+ w02 x = 0. (6.15)
dt2
Esta ltima equao conhecida por Equao Diferencial do MHS sendo w0 = k/m a frequn-
p

cia angular (natural) do movimento peridico da massa. Relembrando a relao do perodo do


movimento com a frequncia angular obtemos
2
T =
w0
o que nos permite calcular o tempo de uma oscilao do sistema cuja soluo geral
x(t) = A cos(w0 t + ) (6.16)
onde A a amplitude do movimento e a constante de fase - fase inicial do movimento.
Nosso intuito usar o Mtodo de Diferenas Finitas para obter solues numricas da posio
em funo do tempo. Para tanto o eixo do tempo ser discretizado a intervalos de tempo t
de modo que as solues x(t) sero obtidas no tempos discretos t = (j 1)t, sendo j um
inteiro. Substituindo a derivada segunda na equao (6.15) por sua aproximao centrada (cap.
2) obtemos
xj+1 2xj + xj1
+w02 xj =0
t2
xj+1 = 2xj t2 w02 xj xj1
xj+1 2 t2 w02 xj xj1 (6.17)

=
62 CAPTULO 6. SOLUO DE EQUAES DIFERENCIAIS ORDINRIAS

sendo esta uma formulao explcita do problema com o sobrescrito j associado ao tempo. Po-
demos observar na equao que para obtermos a soluo no tempo posterior j + 1 necessitamos
do conhecimento das deformaes em dois tempos anteriores, j e j 1.
Conhecendo-se o perodo do movimento, ou equivalentemente a constante elstica e a massa
do corpo nos deparamos com um problema em que se faz necessrio tambm o conhecimento
a posio inicial x(0) e a velocidade inicial v(0). A equao apresentada para xj+1 s pode
ser aplicada diretamente para o caso em que x(0) = A e v(0) = 0 pois assumindo causalidade
fazemos x2 = x1 = x(0) = A na tentativa de se obter x2 x(t). Vejamos o procedimento um
pouco mais genrico:

. conhecemos x(0), v(0) e w0 e desejamos x(t > 0). O problema est em encontrar quem so A
e no caso analtico porm, no caso numrico no h sentido j que no esto presentes
na expresso de xj+1 . Como v = dx/dt usamos a aproximao numrica para escrever

x2 x0
v(0) = v 1 = = x0 = x2 2v(0)t
2t
e, substituindo na expresso de xj+1 com j = 1 temos

x2 = 2 t2 w02 x1 x2 + 2v(0)t


1
x2 = 2 t2 w02 x1 + 2v(0)t
 
2
e que vlida apenas na primeira iterao j = 1 fornecendo ento a igualdade
1
x2 = 2 t2 w02 x(0) + 2v(0)t (6.18)
 
2
pois x1 = x(0) e . Para as prximas iteraes j = 2, 3, ... a equao a ser usada a que
foi deduzida anteriormente

xj+1 = 2 t2 w02 xj xj1 .




O script abaixo fornece os primeiros passos na tentativa de se obter um grfico da soluo e o


erro entre a soluo analtica e numrica.

clear;
tmax = input( Entre com Tempo maximo: ); % tempo desejado da soluo
% discretizao no tempo
dt = input( Entre com discretizao do tempo (dt): );
% numero de iteraes no tempo
nt = Tmax/dt + 1 ;
x0 = input( Entre com posio em t=0s: ) ; % posio inicial
v0 = input( Entre com velocidade em t=0s: ) ; % velocidade inicial
w = input( Entre com freq. angular (k/m)^0.5: ); % freq. angular
x(1)= x0 ; t(1)=0 ;
x(2)= 0.5*( (2-dt*dt*w*w)*x0 + 2*v0*dt) ; t(2)=dt ;
for j=2:nt % lao no tempo das solues
t(j+1)=t(j)+dt ;
x(j+1)=(2-dt*dt*w*w)*x(j)-x(j-1) ;
end
phi= atan(-v0/(w*x0)); % fase inicial
A = x0/cos(phi) ; % amplitude
6.3. OSCILAES SIMPLES, AMORTECIDAS E FORADAS 63

xa = A*cos(w*t+phi) ; % sol. analitica


% grfico comparando sol. anal. e sol. numrica
plot(t,x,b,t,xa,r.); grid; xlabel(t (s)); ylabel(x(t) (m));
er=100*(x-xa)./max(xa) ; disp(Em pausa - digite enter) ;
pause;
% grfico do erro entre sol. anal. e sol. numrica
plot(t,err); grid; xlabel(t (s)); ylabel(erro rel %);

6.3.2 Oscilaes Foradas com Amortecimento

Alguns sistemas fsicos oscilam sujeitos a foras externas e um exemplo simples o circuito
ressonante RLC com uma fonte alternada. O circuito pode entrar em ressonncia (mxima
amplitude de corrente) quando a frequncia da fonte se aproximar da frequncia natural das
oscilaes do sistema.
Tomando por base o sistema com amortecimento e admitindo que uma fora externa cossenoidal
seja aplicada ao mesmo temos
d2 x b dx F0
2
+ + w02 x = cos(wf t) (6.19)
dt m dt m
onde F0 a amplitude da fora e wf a frequncia angular da fonte. Como visto em disciplina
anterior, a soluo analtica desta equao diferencial obtida pela soma da soluo da homog-
nea com uma soluo particular. Suprimindo os detalhes de tal deduo a soluo analtica da
equao diferencial dos sistemas forados-amortecidos
b F0
x(t) = A exp( t) cos(wt + ) + sin(wf t ). (6.20)
2m G
O primeiro termo da soma direita da igualdade a soluo homognea e o segundo termo a
soluo particular. Como o primeiro termo decai exponencialmente comum usarmos apenas a
soluo permanente. Logo a equao horria da posio da massa torna-se
F0
x(t) = sin(wf t ) (6.21)
G
onde
q
G = m2 (wf2 wo2 )2 + b2 wf2
= cos1 (bwf /G).

Do ponto de vista numrico as diferenas deste problema para o da seo anterior so os termos
dissipativo e o termo direita da igualdade ( termo fonte) que depende do tempo. Substituindo
as aproximaes numricas das derivadas e tambm tj = (j 1)t no termo fonte temos
xj+1 2xj + xj1 b xj+1 xj1 F0
2
+ + w02 xj = cos(wf (j 1)t) = f j
t m 2t m
que aps manipulao algbrica resulta em
bt j+1
xj+1 2xj + xj1 + xj1 + t2 w02 xj = t2 f j

x
2m
ou    
1 bt
j+1 2 j 2 2
(6.22)
 j j1
x =  t f + 2 t w0 x 1 x
1 + bt
2m
2m
onde f j = F0
m cos(wf (j 1)t).
64 CAPTULO 6. SOLUO DE EQUAES DIFERENCIAIS ORDINRIAS

6.4 Algoritmo Verlet (Velocity-Verlet)

O mtodo descrito nesta seo muito utilizado na descrio numrica de sistemas fsicos em
que a fora resultante depende da posio ou explicitamente do tempo. O sistema massa-mola,
o Pndulo Simples, o Pndulo Fsico, o de Toro e o Circuito LC so clssicos exemplos de tais
sistemas.
Consideremos uma partcula de massa m sujeita a uma fora resultante F . A segunda Lei de
Newton acerta que
d2 x F
= =a
dt2 m
onde a = a(x(t), v(t), t) a acelerao resultante. Assim, a partir do conhecimento da acelerao
desejamos obter os valores numricos da posio e da velocidade. Usando diferenas centradas
(vide Cap. 3) reescrever a ltima equao na forma

x(t + t) 2x(t) + x(t t) F (t)


= = a(t)
t2 m
ou ainda
x(t + t) = 2x(t) x(t t) + a(t)t2 . (6.23)

Na equao (6.23) necessrio o conhecimento das posies nos instantes t e t t bem como
da acelerao em t = t. Como ilustrao para o sistema massa-mola (OHS) a acelerao funo
da posio segundo
F (t) k
a(t) = = x(t) = w2 x(t)
m m
expresso esta a ser substituda na eq. (6.23).
Uma variao do mtodo anterior, denominado de velocity-Verlet, faz uso da expanso em srie
de Taylor de x(t + t) mais dois passos na estimativa de v(t + t) a saber

1
x(t + t) = x(t) + v(t)t + a(t)t2 ,
2
t 1
v(t + ) = v(t) + a(t)t, (6.24)
2 2
t 1
v(t + t) = v(t + ) + a(t + t)t.
2 2
As vantagens do algoritmo velocity-Verlet em relao a verso bsica so: clculo de posio e
velocidade no mesmo instante (digo, t + t) e a necessidade do conhecimento de v e x apenas
no instante anterior, t.

Exemplo: em um sistema massa-mola, sem atrito, m = 0, 2kg e k = 30N/m. A massa est


inicialmente em repouso e a mola encontra-se deformada de 10cm. O sistema ento
abandonado. Desejamos os valores de x, v e a no intervalo de um perodo.
As equaes horrias deste movimento so dadas por

x(t) = A cos(wt)
v(t) = Aw sen(wt)
k
a(t) = x(t) = Aw2 cos(wt)
m
O script abaixo usa velocity-Verlet para obter numericamente as grandezas acima.
6.5. SISTEMAS DE EQUAES 65

% massa_mola_vv.m
%
clear;
m = 0.2 ; k = 30 ; w = sqrt(k/m) ; T = 2*pi/w ;
% valores iniciais: t, x, v, a
t(1) = 0.0;
x(1) = 0.1;
v(1) = 0.0;
a(1) = -k*x(1)/m;
% discretizao no tempo e lao para estimar x(i+1), v(i+1)
dt=0.01;
i =1;
while t(i) < 2*T;
t(i+1) = t(1) + i*dt;
x(i+1) = x(i) + v(i)*dt + 0.5*a(i)*dt^2;
vtemp = v(i) + 0.5*a(i)*dt;
a(i+1) = -k*x(i+1)/m;
v(i+1) = vtemp+ 0.5*a(i+1)*dt;
end;
% soluo analitica
xa = x(1)*cos(w*t) ;
va = -x(1)*w*sin(wt);
aa = -k*xa/m ;
subplot(2,2,1) ; plot(t,y,bo,t,xa,r);
xlabel(tempo (s)); ylabel(posiao (m)); title(Massa-Mola);
subplot(2,2,2) ; plot(t,v,bo,t,va,r);
xlabel(tempo (s)); ylabel(velocidade (m/s)); title(Massa-Mola);
subplot(2,2,3) ; plot(t,a,bo,t,aa,r);
xlabel(tempo (s)); ylabel(aceleraao (m/s^2)); title(Massa-Mola);
% calculo dos erros (pos. vel. acel.)
er_x = xa-x ; er_v = va-v ; er_a = aa-a ;
subplot(2,2,4) ; plot(t,er_x,b, t,er_v,r, t, er_a,k--);
xlabel(tempo (s)); ylabel(erro (m, m/s e m/s^2)); title(Massa-Mola);

6.5 Sistemas de Equaes

Alguns problemas fsicos (ex. sistemas acoplados) se apresentam como um sistema de equaes
onde desejamos encontrar simultneamente um conjunto de solues. Consideremos um sistema
composto de duas massas ligadas por trs molas como na figura.
66 CAPTULO 6. SOLUO DE EQUAES DIFERENCIAIS ORDINRIAS

Figura 6.1: Sistema de duas massas acopladas onde x10 e x20 so as posies de equilbrio e u1
e u2 so os deslocamentos das massas a partir das posies de equilbrio.

No sistema em questo definimos as posies instantneas dass massas por x1 = x10 + u1 e


x2 = x20 + u2 . As foras elsticas que atuam nos corpos so equacionadas a saber

F12 F11 = k(u2 u1 ) k1 u1 bv1 ,


F22 F12 = k2 u2 k(u2 u1 ) bv2 ,

ou ainda
d2 u1
m1 + (k1 + k)u1 ku2 + bv1 = 0, (6.25)
dt2
d2 u2
m2 2 ku1 + (k2 + k)u2 + bv2 = 0, (6.26)
dt
ou seja, um sistema com dois graus de liberdade cujas solues so u1 (t) e u2 (t). Substituindo
as derivadas segundas por suas aproximaes centradas obtemos

v1n+1 v1n
m1 + (k1 + k)un1 kun2 + bv1n = 0
t
v n+1 v2n
m2 2 kun1 + (k2 + k)un2 + bv2n = 0
t
ou
b t
v1n+1 = (1 t)v1n + [(k1 + k)un1 + kun2 ] ,
m1 m1
b t
v2n+1 = (1 t)v2n + [kun1 (k2 + k)un2 ] , (6.27)
m2 m2
de modo que podemos resolver o sistema acima iterativamente para as velocidades v1 e v2 no
tempo (n + 1)t a partir dos valores conhecidos de v1 , v2 , u1 e u2 no tempo anterior nt.
Neste ponto obtivemos as velocidades em funo do tempo e com estes valores podemos realizzar
numericamente a integral das velocidades para obtermos as posies u1 e u2 . Para exemplificar
o procedimento usemos a expresso backward para substituir as velocidades em (n + 1)t, ou
seja

du1 un+1 un1


v1 = 1 ,
dt t
du2 un+1 un2
v2 = 2 .
dt t
6.6. MTODO DE RUNGE-KUTTA 4 ORDEM 67

Aps manipulaes algbricas temos

un+1
1 = un1 + v1n+1 t,
un+1
2 = un2 + v2n+1 t. (6.28)

O procedimento acima descrito ilustra perfeitamente uma das vrias metodologias numricas
para se obter as solues do sistema de equaes diferenciais ordinrias.

Tarefa 6.3: implemente um script Sist_Acopl.m na linguagem Matlab. Considere b = 0, m1 =


m2 = 0, 5kg, k1 = k2 = 1N/m, k = 0, 2N/m. Considere um tempo mximo de 40s com
t = 0, 2s e as seguintes condies iniciais:
a) u1 (0) = 0, 5m e u2 (0) = v1 (0) = v2 (0) = 0;
b) u1 (0) = u2 (0) = 0m e v1 (0) = 0, 25m/s com v2 (0) = 0m/s;
As solues analticas de u1 e u2 (ALONSO; FINN, 1981, p. 365; BUTKOV, 1988, p. 408)
considerando m1 = m2 = m sem atrito (b = 0) so

u1a (t) = C1 cos(w1 t) + C2 sin(w1 t) + C3 cos(w2 t) + C4 sin(w2 t)


u2a (t) = C1 cos(w1 t) + C2 sin(w1 t) C3 cos(w2 t) C4 sin(w2 t)

com w1 = k1 /m1 e w2 = (k1 + 2k)/m1 onde as constantes so calculadas de acordo


p p

com as condies iniciais, i.e.


u1 (0) + u2 (0) v1 (0) + v2 (0)
C1 = C2 = ,
2 2w1
u1 (0) u2 (0) v1 (0) v2 (0)
C3 = C4 = .
2 2w2
Use o comando plot (ex. plot(t, u1, b-, t, u1a, r.) ) para comparar as solues numricas
e analticas de u1 , u2 , v1 e v2 .

6.6 Mtodo de Runge-Kutta 4 Ordem

Em problemas em que a fora depende da velocidade comum o emprego do Mtodo de Runge-


Kutta para obteno da soluo numrica de uma EDO ou de um sistema de EDOs. O mtodo
mais usado o de quarta ordem e sua aplicao segue os passos:

1. K1 = f (tn , xn )

2. K2 = f (tn + t/2 , xn + t K1 /2)

3. K3 = f (tn + t/2 , xn + t K2 /2)

4. K4 = f (tn + t , xn + t K3 )

5. xn+1 = xn + t
6 (K1 + 2K2 + 2K3 + K4 )

onde f (t, x) a taxa de variao da soluo, i.e., dx/dt = f (t, x).

Exemplo: como aplicao simples do mtodo consideremos o oscilador harmnico amor-


tecido composto de uma mola com constante elstica k e de uma massa m sujeita uma
fora de atrito proporcional a velocidade bv. A 2 Lei de Newton fornece

d2 x dx
m 2
= b kx, (6.29)
dt dt
68 CAPTULO 6. SOLUO DE EQUAES DIFERENCIAIS ORDINRIAS

que pode ser reescrita na forma desejada para aplicao numrica


dx
= v,
dt
dv b k
= v x.
dt m m
Definimos ento fx (t, x, v) = v e fv (t, x, v) = bv/m kx/m de modo que

Kx1 = fx (v j ) Kv1 = fv (xj , v j )


Kx2 = fx (v j + t Kv1 /2) Kv2 = fv (xj + t Kx1 /2, v j + t Kv1 /2)
Kx3 = fx (v j + t Kv2 /2) Kv3 = fv (xj + t Kx2 /2, v j + t Kv2 /2)
Kx4 = fx (v j + t Kv3 ) Kv4 = fv (xj + t Kx3 , v j + t Kv3 )

fornecendo assim as prximas estimativas da posio e da velocidade por


t
xj+1 = xj + (Kx1 + 2Kx2 + 2Kx3 + Kx4 ), (6.30)
6
t
v j+1 = vj + (Kv1 + 2Kv2 + 2Kv3 + Kv4 ). (6.31)
6

Tarefa 6.4: implemente o mtodo acima em um script MHA.m na linguagem do Matlab usando
k = 2N/m, m = 0, 5kg, b = 0, 2kg/s para as condies iniciais: x(0) = 0, 25m e v(0) =
0, 2m/s. Use dt = 0.1s para um tempo de simulao T = 10s. Faa os grficos de x(t) e
v(t) em linha contnua (azul) superpondo as solues analticas com pontos (vermelho). A
soluo analtica da posio
s
b 2
 
b k
x(t) = A exp( t) cos(wt + ) , w =
2m m 2m

onde as constantes A e so obtidas em termos das condies iniciais a saber


  
1 1 v0 b
= tan +
w x0 2m
x0


, se x0 6= 0
A = cos
v 0

, se x0 = 0
[(0.5b/m) cos + w sin ]

Exerccios
6.1- Obtenha analiticamente a soluo da equao (6.5). Aps, implemente o algoritmo ao final
da seo 6.2.

6.2- Ao final da seo (6.3.1) encontra-se um script para a soluo da EDO do MHS, ou seja
equao (6.15).
(a) Salve-o em um arquivo mhs.m e execute-o usando os seguintes valores: tmax = 50s,
t = 0.1s, x(0) = 0.2m, v(0) = 1m/s, w = 0.5. Remova possveis erros e verifique se as
solues analtica e numrica concordam. O que voc pode deduzir ao analisar o grfico de
erros relativos entre as solues.
(b) Repita o procedimento trocando apenas o valor da posio inicial para x(0) = 0m e
descreva o que ocorreu.
(c) Reveja as equaes horrias de x(t) e v(t) para t = 0s. A partir delas tente obter uma
forma alternativa para derivar a amplitude A em termos da velocidade em t = 0s. Use uma
6.6. MTODO DE RUNGE-KUTTA 4 ORDEM 69

estrutura de deciso if .... else ....end para o clculo de e A. Execute o script e verifique
se a soluo analtica concorda com a soluo numrica. (Obs.: quando x(0) = 0m o valor
da fase inicial = /2).

6.3- O Carbono 14 um radio istopo muito usado em dataes arqueolgicas pois sua meia-
vida de aproximadamente 5730 anos, a maior dentre seus outros istopos. Use a teoria
apresentada na seo 6.1 juntamente com o mtodo Forward Modificado para traar um
grfico de N(t) considerando uma a quantidade inicial de istopos radioativos igual a 1mol.
Compare seus resultados numricos com a soluo analtica.

6.4- Considere um circuito RLC em srie como ilustrado


na figura ao lado. Sejam R = 10, L = 50mH e C =
100F. O capacitor est carregado com Vc = 10V em
t = 0s, instante em que a chave acionada. Sabemos
ainda que as ddps entre os terminais de cada elemento
so dadas por

dI 1
VR = RI ; VL = L ; VC = I dt
dt C
e, usando a lei das malhas obtemos

dI 1
L + RI + I dt = 0. Fig 6.4 - Esquema do exerccio
dt C
6.4.
Substituindo I = dq/dt, a EDO homognea anterior reescrita em termos para a carga
armazenada no capacitor na forma

d2 q dq 1
L 2
+ R + q = 0.
dt dt C

Considerando R < 2 L/C a soluo oscilante dada por


p

R
q(t) = CV0 exp( t) cos(wt + )
2L

sendo w = [w02 (R/2L)2 ]1/2 a frequncia das oscilaes com w0 = 1/ LC. Use o Mtodo
de Runge-Kutta de 4 ordem e:
(a) obtenha as solues numricas para q(t) e I(t)
(b) compare a soluo numrica e analtica de q(t) ; use um grfico superposto com a
soluo analtica expressa por pontos e a numrica com linha contnua.

6.5 Ao substituirmos a chave no circuito RLC (Figura 6.5) por uma fonte alternada obtemos

dI
L + RI + VC = Ve .
dt
Como Vc = q/C e I = dq/dt = C dVC /dt temos por substituio

d2 VC dVC
LC + RC + VC = Ve ,
dt dt
que representa uma EDO no homognea com soluo VC (t). Seja a tenso de excitao do
circuito dada por Ve (t) = V0 sen(wf t) com V0 = 10V e wf = 120 rad/s. Use os mesmos
dados do problema anterior para obter a soluo numrica via Mtodo de Runge-Kutta.
70 CAPTULO 6. SOLUO DE EQUAES DIFERENCIAIS ORDINRIAS
Referncias Bibliogrficas

ALONSO, M.; FINN, E. Um Curso Universitrio - Mecnica. [S.l.]: Edgard Blucher, So


Paulo, 1981. v.1.

ARFKEN, G. B.; WEBER, H. J. Mathematical Methods for Physicists. 5.ed. [S.l.]: Har-
court Academic Press, 2001. 1112p.

BUTKOV, E. Fisica matematica. [S.l.]: Guanabara Dois, 1988.

GUSMAN, G.; VASCONCELLLOS, A. Fluxogramas e Programao Cobol. 2.ed. [S.l.]:


Livros Tcnicos e Cientficos, RJ, 1985. 180p.

JALN J. G. D.N, J. G. D.; RODRGUEZ, J. I.; VIDAL, J. Aprenda Matlab 7.0 como
si estuviera en primero. [S.l.]: Universidad Politcnicade, Escuela Tcnica Superior de
Ingenieros Industriales, Madrid, 2005. 128p.

MEDINA, M.; CRISTINA, F. Algoritmos e Programaao - Teoria e Prtica. [S.l.]: Nova-


tec, 2005. 384p.

PRESS, W. H.; FLANNERY, B. P.; TEUKOLSKY, S. A.; VETTERLING, W. T. Numeri-


cal Recipes: the art of scientific computing (fortran version). 2.ed. New York: Cambridge
University Press, 1989.

RECKTENWALD, G. Numerical Methods with MATLAB: implementations and applica-


tions. [S.l.]: Prentice Hall, 2000.

RESNICK, R.; HALLIDAY, D. Fsica. [S.l.]: Livros Tcnicos e Cientficos, 1983. v.1.

RINO, J. P. Fsica Computacional I. http://www.df.ufscar.br/Fortran-parteA.pdf, acessado


em 02/2008.

SPIEGEL, M. R. Clculo Avanado. [S.l.]: McGraw-Hill do Brasil LTDA., 1975. 500p.

THE MATHWORKS, I. MATLAB - The Language of Technical Computing, MATLAB


Function Reference. The MathWorks, Inc., 3 Apple Hill DriveNatick, MA 01760-2098: The
MathWorks, 2002. v.1-3: A - Z.

TREFETHEN, L. H. Is Gauss Quadrature Better than Clenshaw-Curtis? SIAM Review, v.50,


n.1, p.6787, 2008.

WILSON, H. W.; TURCOTTE, L. H. Advanced Mathematics and Mechanics Applicati-


ons Using MATLAB. 2nd ed..ed. [S.l.]: CRC Press, 1998.

71