Escolar Documentos
Profissional Documentos
Cultura Documentos
Klaus Cozzolino
Editor:
Capa
Impresso
Cozzolino, Klaus
Introduo Fsica Computacional / Klaus Cozzolino
1.ed. Par: Editora....., 2014
Bibliografia
1. Fsica Mtodos Computacionais I. Ttulo
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
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
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
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).
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.
Qualquer que seja a linguagem de programao usada precisamos seguir algumas importantes
etapas para que tenhamos sucesso. So elas
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;
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.
.
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
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.
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 ] ;
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
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 ;
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
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
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
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:
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
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],
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.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
Este captulo tm por finalidade ilustrar alguns aspectos bsicos dos processos de integrao e
diferenciao numrica aplicadas a funes reais de uma varivel.
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
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
% 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)
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
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 .
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
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
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
Abaixo um script em Matlab/OCTAVE (TREFETHEN, 2008) para o clculo dos pontos e pesos
necessrios a aplicao do mtodo
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
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
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.
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
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
=
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
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.
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.
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
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:
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
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
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.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.
2.7- A energia potencial gravitacional de um sistema de dois corpos pode ser expressa por
Mm
U (r) = G
r
(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.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)
(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
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].
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):
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.
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
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
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)
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.
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
3.5 Exerccios
(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.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 .
Ajuste de Curvas
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
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.
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
y = A + B ln x.
ou seja, basta criar mais uma coluna de dados na tabela contendo ao invs de xi os valores
de wi = ln xi .
y = A exp(Bx).
y = AxB .
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
Figura 4.1: Diferentes ajustes obtidos com os dados provenientes de uma experincia com o
Pndulo Simples.
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.
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
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.
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)
0.9
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
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
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
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
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
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 .
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
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.
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
5.1 Definies
As operaes aritmticas abaixo, realizadas entre duas equaes do mesmo sistema de equaes,
resultam em sistemas equivalentes ( com mesma soluo):
b) ao somar ou subtrair duas equao do mesmo sistema, obtemos outro sistema equivalente
ao inicial;
46 CAPTULO 5. SISTEMA DE EQUAES LINEARES
Veremos nas sees a seguir algumas das tcnicas de soluo de sistemas de equaes lineares.
Neste mtodo necessitamos dois passos para obter o vetor soluo.de um sistema de equaes:
1. triangularizar a matriz A e,
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.
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.
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.
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.
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
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
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
. . . . . . . . .. . . .
ou L + D + U = A.
e, manipulando, vm
Dx = b L + U x,
1 1
x = D bD L + U x.
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.
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)
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
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
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
a) o mtodo de Gauss e
b) o mtodo de Gauss-Sidel.
R1 I1
R2 I1 I2
R3 I2 R4 I2
R5 I0 I2
R0 I0 R5 I0
5.8 Exerccios
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.
I = I1 + I2 ,
I3 = I1 + I5 ,
I = I3 + I4 ,
I2 = I4 + I5 .
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
(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
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.
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)
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)
d2
= f (x) = x (6.5)
dx2
sujeita as seguintes condies de fronteira (Dirichlet)
(0) = 1 = a,
(1) = n = b.
(x + x) 2(x) + (x x)
= x
x2
6.2. EQUAO DE POISSON 1-D 57
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
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
K = d
1
= K d. (6.8)
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.
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
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
(k) = f
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.
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.
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
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
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
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
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
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.
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);
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.
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
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.
1. K1 = f (tn , xn )
4. K4 = f (tn + t , xn + t K3 )
5. xn+1 = xn + t
6 (K1 + 2K2 + 2K3 + K4 )
d2 x dx
m 2
= b kx, (6.29)
dt dt
68 CAPTULO 6. SOLUO DE EQUAES DIFERENCIAIS ORDINRIAS
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
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.
d2 q dq 1
L 2
+ R + q = 0.
dt dt C
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
ARFKEN, G. B.; WEBER, H. J. Mathematical Methods for Physicists. 5.ed. [S.l.]: Har-
court Academic Press, 2001. 1112p.
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.
RESNICK, R.; HALLIDAY, D. Fsica. [S.l.]: Livros Tcnicos e Cientficos, 1983. v.1.
71