Escolar Documentos
Profissional Documentos
Cultura Documentos
Klaus Cozzolino
Editor:
Capa
Impressão
Cozzolino, Klaus
Introdução à Física Computacional / Klaus Cozzolino –
1.ed. – Pará: Editora....., 2014
Bibliografia
1. Física – Métodos Computacionais I. Título
ISBN:
Editora
Telefone
Fax
Endereço eletrônico:
Sumário
Prefácio v
1 Introdução 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 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
iii
iv SUMÁRIO
4 Ajuste de Curvas 31
4.1 Mínimos Quadrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.1.2 Mínimos Quadrados Ponderados . . . . . . . . . . . . . . . . . . . . . . . 34
4.2 Ajuste por uma função qualquer (Newton e Gauss-Newton) . . . . . . . . . . . . 36
4.3 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Referências Bibliográficas 71
Prefácio
Os leitores encontrarão nesta primeira edição do livro uma introdução à linguagem de progra-
mação básica a ser desenvolvida e exercitada em ambientes como Octave, FreeMat e também
Matlab. Os dois primeiros ambientes podem ser baixados gratuitamente e instalados tanto no
sistema operacional Windows como sistema Linux.
Sendo esta disciplina interdisciplinar pressupõe-se que os estudantes possuam conhecimentos
anteriores das físicas básicas, da algeba linear e das disciplinas de cálculo diferencial e integral.
O conhecimento prévio de programação, embora desejável, não constitui condição imperativa ao
bom desempenho dos estudantes em face da enorme rede de informações e dos materiais nela
disponibilizados.
Ao longo dos capítulos algumas técnicas numéricas clássicas são apresentadas com o objetivo de
reforçar o aprendizado das estruturas básicas de programação bem como de suas aplicações em
problemas físicos. As técnicas numéricas somadas a programação são novidade para a maioria
dos estudantes o que naturalmente exigirá um pouco mais de dedicação para a sua melhor
assimilação.
Gostaria de agradecer ao Professor Dr. João Furtado de Souza por sua iniciativa de propor a
publicação desta primeira edição do livro que embora incompleta (parte I), constitui mais uma
ferramenta a deslanchar o ensino de Física, tanto teórico como experimental.
vi PREFÁCIO
Capítulo 1
Introdução
• ALGOL - ALGOrithmic Language. Criada em 1958 é constituída por uma mistura de lin-
guagens de programação. Considerada a primeira linguagem de programação estruturada.
• COBOL - COmmon Business Oriented Language. Criada em 1960 com objetivo de ma-
nipular grandes arquivos. Utilizado por bancos e empresas para manutenção de contas
correntes, folhas de pagamento, controle de estoque e outras aplicações.
• BASIC - Beginner’s 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 substituição do BASIC
por ser uma linguagem estruturada e robusta. As liguagens de programação Turbo Pascal
e Delphi são evoluções do PASCAL.
• C - Foi lançada em 1972 para o desenvolvimento de sistemas operacionais UNIX sua evo-
lução resultou na linguagem C++ muito utilizada para programação científica.
Qualquer que seja a linguagem de programação usada precisamos seguir algumas importantes
etapas para que tenhamos sucesso. São elas
5. sempre teste cada estágio - a saída de um estágio (dados, números, decisões) é normalmente
usada no próximo módulo. Se um estágio estiver com erros os resultados do próximo
também estarão errados;
6. documente todo o programa - insira comentários para facilitar a compreensão das etapas
sempre que julgar necessário;
Todo programa - ou código fonte - é escrito com um editor de texto normalmente muito simples
como o Notepad (do Windows), o Vi (do Linux), o Edit (no DOS) mas é possível editar também
em ambientes de programação próprios à linguagem em uso como o MSDeveloperStudio para
Fortran ou C++ ou Visual Studio C++.
Os programas mais simples assemelham-se à uma redação possuindo início, meio e fim (ou con-
clusão). O início de um programa é normalmente denominado de etapa de inicialização e/ou
entrada de dados: contém informações importantes que serão utilizadas tais como constantes,
dimensões de matrizes e de vetores bem como valores iniciais. O corpo do programa contém as
instruções principais a serem passadas à Unidade de Processamento Central (CPU) da máquina
1.3. FLUXOGRAMAS E ALGORITMOS 3
para que a mesma realize as tarefas. É nesta etapa que os cálculos são realizados através de
linhas de comando/instruções específicas à cada linguagem de programação, 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 operações.
Na conclusão do código fonte encontramos instruções como saída de resultados para arquivos,
saídas gráficas ou simplesmente uma mensagem de finalização da execução. Uma simples saída
como “Aplique na Ação X” ou “NÃO Aplique na Ação Y” pode ser o resultado de inúmeras
linhas de instruções de um código executável.
O Algoritmo: é um conjunto resumido de instruções (ou comandos) a serem realizadas pelo
computador.
O Fluxograma: apresenta as instruções de um algoritmo na forma gráfica através de figuras
geométricas com as instruções principais em seu interior.
Exemplos de algoritmos, fluxogramas introdução a programação 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 posição de um objeto que se desloca com aceleração constante.
Para isso usamos as equações da Física pertinentes à cinemática inserindo, via teclado,
alguns dados iniciais como posição 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 posição 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 geração de uma ta-
bela de dados (arquivo TAB.DAT) com 1000 linhas contendo em cada linha tempo (t), velocidade
(v) e posição (x).
4 CAPÍTULO 1. INTRODUÇÃO
Observe e reflita: no fluxograma encontramos uma figura de decisão (losango) com a instrução
“ N é maior ou igual a 1000? “. Porém, no item 5 do algoritmo tem-se, “ Se N for menor do
que 1000 vá ...”. Estas instruções são claramente diferentes mas realizam o mesmo propósito: a
repetição das instruções necessárias a construção de uma tabela contendo o tempo, a velocidade
e a posição de um móvel em movimento retilíneo 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 espaço ou vírgulas.
Um vetor com elementos igualmente espaçados 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á após a execução na atribuição de seis elementos à variável 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 atribuição dos valores [02 0.52 0.92 1.22 ] = [0 0.25 0.81 1.44] a
variável v2. Porém 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
diferença - o ponto antes do sinal de multiplicação - 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 ;
No código para Matlab acima as duas primeiras linhas são comentários e portanto não
são executadas: começam com “ % ”. Na terceira e quarta linhas são inicializadas as
variáveis número de linhas da tabela (Nlin) e incremento do tempo (dt). Da quinta a
oitava linha vemos as instruções de entrada de dados via teclado (comando input). O
arquivo “ TAB.DAT ” é aberto para escrita na nona linha. Na décima linha inicializa-se
o contador “N” necessário à estrutura de laço “ while ” compreendido entre as linhas 11
à 18. Dentro do laço as instruções serão executadas enquanto a condição ” N < Nlin “
1.4. COMANDOS, ESTRUTURAS E SCRIPTS NO AMBIENTE OCTAVE/MATLAB 7
Para responder quantos termos são necesários para que o resultado da série em x = π/3
tenha precisão de 4 casas decimais foi desenvolvido o seguinte algoritmo
1- limpar memória
2- definir soma como zero
3- definir precisão desejada
4- inicializar o contador k ← 0
5- definir ponto x
6- enquanto |termo| > = precisao faça
k ←k +1
termo ← (-1)^(k +1) * x^(2*k -1) / (2*k -1) !
soma ← soma + termo
fim do laço 6
7- escreva o valor do contador k
8- escreva o resultado do seno de x
1- limpar memória
2- definir um como 1
3- definir eps como um
4- enquanto eps + um > um faça
eps ← eps/2
fim do laço 4
8 CAPÍTULO 1. INTRODUÇÃO
Exemplo 6: Segundo ?, p. 362 a função 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 limitações computacionais esta série deverá ser truncada em N termos antes
de ser utilizada em um código (programa). Estamos interessados em determinar quantos
termos devemos usar para atingir o limite de precisão do computador (o eps).
Para simplificar a estimativa do número de termos da série cosideremos x = 2. O fator
principal que determinará a magnitude do termo da série será o denominador (k!)2 logo,
ao igualar este termo ao eps teremos
s
1 1016
2, 22 × 10−16 = → N ! = → N ! ≈ 68 × 106 .
(N !)2 2, 22
1- limpar memória
2- definir soma como zero
3- definir precisão desejada (= eps)
4- inicializar o contador k ← 0
5- definir ponto x ← 2
6- definir termo (deve ser maior que o valor em precisão)
7- enquanto |termo| > = precisao faça
termo ← (-1)^k * (x/2)^(2*k ) / (k !)^2
soma ← soma + termo
k ←k +1
fim do laço 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 execução está de acordo com o que foi calculado para N ?
Observação: a instrução plot nos permite gerar gráficos de dados tabelados. Se desejamos
o gráfico de x(t) é necessário que exista na memória do computador os dados dos pares
ordenados (t, x). Os gráficos normalmente são acompanhados por textos explicativos nos
eixos horizontal xlabel e vertical ylabel. Vejamos um exemplo simples de como gerar um
gráfico completo com a instrução plot e as instruções auxiliares:
1.5 Exercícios
1.1- Edite um arquivo de nome “tabela.m” copiando o script (código fonte) para Matlab/Octave
apresentado na Figura1.2. No ambiente Matlab execute o código e verifique a presença do
arquivo TAB.DAT no diretório de trabalho, após a execução do script. Abra o arquivo
TAB.DAT com o editor e verifique se número de linhas está correto.
1.2- Ao final do código (script) “tabela.m” adicione a linha load TAB.DAT e abaixo outra
linha plot(TAB(:,1), TAB(:,3),’b–’); grid; salve, execute o código e descreva o que
aconteceu. Mude ’b–’ no comando gráfico 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 conclusões.
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 deformação da mola (xs) do
MHS e a deformação da mola (xa) do movimento harmônico amortecido. (b) Transcreva
o algoritmo para um fluxograma. (Dica: reveja o conteúdo de oscilações para obter as
equações horárias de x(t) para cada sistema físico).
1.4- Reveja o exemplo 5 neste capítulo. 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
espaçados de 1 a 1001, com incremento de 10. Em seguida use a estrutura de laço
for i = inicio : incremento : fim;
comandos;
end;
para somar os elementos do vetor. ( Obs.: no Matlab obtemos o valor numérico do elemento
i=2 de um vetor usando v(i). Isto é equivalente a escrever valor=v(2), o que atribui
a variável valor o número armazenado na posição 2 do vetor v. Dica: reveja o script na
Figura 1.2 na página 6 e preste atenção no contador N. Esta estrutura também é 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 posições no eixo x e y são
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 código usando instruções na linguagem Matlab/Octave
que obtenha o resultado da soma dos números pares bem como dos números ímpares entre
1 e 1000. Para tanto use uma estrutura de decisão
Se condição for verdadeira faça
somapar ← somapar + n
caso contrário faça
10 CAPÍTULO 1. INTRODUÇÃO
somaimp ← somaimp + n
fim do Se
que teste se o número é par (condição) usando o resto da divisão entre dois números mod(x,
y) ou rem(x, y). Veja na ajuda a documentação sobre a instrução mod: use help mod.
1.9- Considere os dados do exercício anterior e a expressão da massa relativística M dada por
m
M=r v 2
1−
c
onde v é a velocidade instantânea do próton e c é a velocidade da luz.
(a) Escreva um código para gerar um gráfico que ilustre a dependência da massa do
próton com o tempo (o gráfico é um dos produtos finais) ;
(b) execute o código considerando o intervalo de tempo do exercício anterior e
(c) altere a linha do código que gera o tempo: redefina o tempo final para 1000 s e
incremento de 1 s; execute-o e analisando o gráfico responda
(d) é necessário considerar o efeito relativístico da massa no problema ?
(e) Quais são 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).
Capítulo 2
Cálculo de integrais em Física são frequentes: as Leis de Maxwell na forma integral, o valor do
trabalho de uma força que depende da posição ou o impulso provocado por determinada força que
depende do tempo são alguns exemplos. As vezes a função a ser integrada leva a manipulações
algébricas complexas e o importante em determinadas situações é o resultado numérico para
interpretação.
Este capítulo têm por finalidade ilustrar alguns aspectos básicos dos processos de integração e
diferenciação numérica aplicadas a funções reais de uma variável.
Consideremos uma função f (x) conhecida, contínua 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 definição da Integral
de Riemann (SPIEGEL, 1975, p.102)
ˆ b X
I= f (x) dx = lim f (ci )∆xi , (2.1)
a ∆x→0
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 laço para soma
x(i) = a+(i-1)*dx;
f(i) = função( x(i) ) % programar a função a ser integrada nesta linha
soma = soma + f(i);
end; % fim do laço
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 Trapézios é a Regra
de Simpson, onde se faz uso de três avaliações da função para definir a área elementar. Neste
2.1. INTEGRAIS DEFINIDAS 13
Devemos ter em mente que neste método o número de intervalos (N − 1 ) entre a e b deve ser par.
Ao deduzir sua fórmula Simpson aproxima a função por uma parábola em cada conjunto de 3
pontos como ilustrado na Fig. 2.2 sendo xi = a+i∆x, xi−1 = a+(i−1)∆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: aproximação da área elementar abaixo da parábola.
A área elementar é obtida integrando uma função parabólica y(x) = co x2 + c1 x + c2 que se ajusta
aos três pontos de avaliação da função. O valor aproximado da integral será
ˆ xi+1
co x2 + c1 x + c2 dx
Ai =
xi−1
hc c1 2 ixi+1
o 3
= x + x + c2 x
3 2 xi−1
hc c1 2 i
o 3 3
xi+1 − x2i−1 + c2 (xi+1 − xi−1 )
= xi+1 − xi−1 +
3 2
(xi+1 − xi−1 )
2co x2i+1 + xi+1 xi−1 + x2i−1 + 3c1 (xi+1 + xi−1 ) + 6c2
Ai =
6
escrevendo em termos da função y(x) temos
y(xi+1 ) y(xi−1 )
(xi+1 − xi−1 ) z 2 }| { z
2
}| {
Ai = co xi+1 + c1 xi+1 + c2 + co xi−1 + c1 xi−1 + c2 +
6
#
+co x2i+1 + 2xi+1 xi−1 + x2i−1 + 2c1 (xi+1 + xi−1 ) + 4c2
( " #)
xi+1 + xi−1 2
(xi+1 − xi−1 ) xi+1 + xi−1
= y(xi−1 ) + y(xi+1 ) + 4 c0 + c1 + c2
6 2 2
(xi+1 − xi−1 ) xi+1 + xi−1
Ai = y(xi−1 ) + y(xi+1 ) + 4y .
6 2
14 CAPÍTULO 2. INTEGRAÇÃO E DIFERENCIAÇÃO NUMÉRICAS
Usando as igualdades xi+1 − xi−1 = 2∆x e (xi+1 + xi−1 )/2 = xi escrevemos a área elementar
abaixo da parábola na forma
∆x
Ai = [y(xi−1 ) + 4y (xi ) + y(xi+1 )] ,
3
o que leva à Regra de Simpson (Eq. 2.3) ao somarmos para todo o intervalo de integração 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 método de integração que basicamente substitui a integral
por uma soma do produto de uma função peso w(xi ) pela função 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 serão precisos caso f(x) seja um polinômio de grau menor ou igual à 19.
% Integ_gauss.m
% realiza a integral de f(x) por quadratura gaussiana
% preciso para polinômios 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 função 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 código 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 funções escritas para este fim. Ao final do
script abaixo existem duas linhas de comando com as funções predefinidas no ambiente
Matlab: quad e quadl. A forma mais básica de usá-las para o cálculo das integrais é o
mesmo: quad(nome_função, lim_inf, lim_sup, tolerância).
% 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 CAPÍTULO 2. INTEGRAÇÃO E DIFERENCIAÇÃO NUMÉRICAS
Quando os limites de integração de uma função são finitos é comum a aplicação de uma substi-
tuição de variáveis
x = xR z + xM , onde
b−a
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 somatório a saber
ˆ b ˆ 1
b−a b+a b−a
I = f (x) dx = f z+ dz
a −1 2 2 2
ˆ
b−a 1
b−a b+a
= f z+ dz
2 −1 2 2
n
b−aX b−a 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 são as raízes do Polinômio de Legendre Pn (z) com pesos calculados por
2
Wi = .
zi2 [Pn0 (zi )]2
1−
Os polinômios de Legendre são obtidos recursivamente pela equação (ARFKEN; WEBER, 2001,
p.749)
zPn (z) − Pn−1 (z)
Pn+1 (z) = 2zPn (z) − Pn−1 (z) − .
(n + 1)
Para obtê-los iniciamos com n = 0, sabendo que P0 (z) = 1 e, recursivamente, derivamos os
polinômios de graus mais elevados. Como exemplo os quatro primeiros polinômios de Legendre
são
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 cálculo dos pontos e pesos
necessários a aplicação do método
Com esta função salva no diretório de trabalho podemos obter os pontos e respectivos pesos da
quadratura Gauss-Legendre usando a instrução 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 são denominadas de impróprias existindo algumas técnicas capazes de simplificá-las
numericamente por substituição de variáveis. 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 substituída por outra integral,
agora definida no intervalo [0, 1], sendo facilmente resolvida por um dos métodos descritos
nas seções anteriores. A Tabela 2.1 abaixo ilustra alguns casos de integrais impróprias e
suas respectivas substituições.
Similar ao método de Gauss-Legendre porém 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)
xαi
i=1
onde α > −1, xi são as raízes do Polinômio de Laguerre Ln (z) com pesos Wi calculados por
Γ(n + α + 1) zi
Wi = 2 .
n! (n + 1)Lαn+1 (zi )
18 CAPÍTULO 2. INTEGRAÇÃO E DIFERENCIAÇÃO NUMÉRICAS
Tabela 2.1: Exemplos de integrais impróprias e suas respectivas substituições (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 ´ (b−a)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)−γ
próximo de x = a para
0≤γ<1
´b ´ (b−a)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)−γ próximo
de x = b para 0 ≤ γ < 1
´b ´ √b−a
a f (x)dx 0 2tf (a + t2 )dt , b>a Funções do tipo 1/[x − a]1/2
com singularidade em x = a
´b ´ √b−a
a f (x)dx 0 2tf (b − t2 )dt , b>a Funções 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
Lαn (z) = .
(n − m)!(α + m)! m!
m=0
Os polinômios de Laguerre são recursivamente obtidos pela equação (ARFKEN; WEBER, 2001,
p.831)
(1 + z)Ln (z) − Ln−1 (z)
Ln+1 (z) = 2Ln (z) − Ln−1 (z) − .
(n + 1)
Os cálculos iniciam-se com n = 0 sabendo que L0 (z) = 1 fornecendo os seguintes resultados para
os próximos quatro polinômios
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 î + ∂y ĵ + ∂z k̂ coord. cartesianas
∇= ∂ 1 ∂ ∂
∂r r̂ + r ∂φ φ̂ + ∂z k̂ coord. cilíndricas
∇= ∂ 1 ∂ 1 ∂
∂r r̂ + r sin θ ∂φ φ̂ + r ∂θ θ̂ coord. esféricas.
O operador gradiente também está presente na teoria da condução do calor. A Lei de Fourier
estabelece uma relação entre o fluxo de calor e o produto da condutividade térmica do material
(k) pelo gradiente de temperatura em certo ponto do meio, i.e.
→
−
H = −k∇T
e que expressa a quantidade de calor por unidade de tempo por unidade de área sendo propagada
através do sólido.
20 CAPÍTULO 2. INTEGRAÇÃO E DIFERENCIAÇÃO NUMÉRICAS
Observação: as derivadas numéricas também podem ser deduzidas através da Série de Taylor
da função 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 série e manipulando temos
f (x + ∆x) − f (x)
f 0 (x) ≈
∆x
que representa a aproximação numérica 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 substituição na equação anterior obtemos a forma compacta a saber
f (a + (i − 1)∆x + ∆x) − f (a + (i − 1)∆x)
f 0 (xi ) ≈ ,
∆x
f (a + i∆x) − f (a + (i − 1)∆x)
f 0 (xi ) ≈ ,
∆x
fi+1 − fi
fi0 ≈ ,
∆x
2.4. DIFERENCIAÇÃO NUMÉRICA 21
onde fi e fi+1 representam os valores da função f (x) obtidos nos pontos xi+1 e xi+1 , res-
pectivamente.
A aproximação numérica da segunda derivada de f (x) pode ser obtida facilmente através da
formulação vista na seção anterior porém 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 + fi−1
f 00 (xi ) ≈ 2
ou fi0 =
∆x ∆x2
sendo esta a aproximação centrada de segunda ordem (erro ≈ ∆x2 ) para a derivada segunda de
f (x). Outras formulações numéricas para f 00 (x) são
f (xi +2∆x)−2f (xi +∆x)+f (xi ) fi+2 − 2fi+1 + fi
f 00 (xi ) ≈ ∆x2
, aproximação (f orward) fi0 =
∆x2
f (xi )−2f (xi −∆x)+f (xi −2∆x) fi − 2fi−1 + fi−2
f 00 (xi ) ≈ ∆x2
, aproximação (backward) fi0 =
∆x2
ambas de primeira ordem (erro ≈ ∆x), ou seja, menos precisas.
Alguns cálculos podem exigir aproximações numéricas das derivadas com uma precisão maior.
A tabela abaixo resume algumas formulações de terceira e quarta ordem para as derivadas
numéricas.
Tabela 2.3: Derivada Primeira f 0 em x0 : expressões numéricas, erros e interpolação
Deve ser observado nas tabelas acima a seguinte notação f−i = f (x−i ) = f (x0 − i∆x) e
fi = f (xi ) = f (x0 + i∆x) para efeito de cálculos. Também devemos ter em mente ao reali-
zarmos aproximações numéricas das derivadas a dificuldade em calculá-las nas extremidades dos
22 CAPÍTULO 2. INTEGRAÇÃO E DIFERENCIAÇÃO NUMÉRICAS
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 aproximação de segunda ordem da derivada primeira conterá apenas
9 pares de dados pois necessitamos, para o cálculo da derivada na segunda amostra (j = 2), de
(x1 , f1 ) e de (x3 , f3 ). Analogamente, para derivada em j = 10 são necessários os pares (x9 , f9 )
e de (x11 , f11 ). Uma metodologia muito empregada nestes extremos dos dados (j = 1 e j = 11)
é a utilização das aproximações de primeira ordem, forward e backward, nos extremos inicial e
final respectivamente.
Exemplo 6: Um sistema amortecido oscila segundo a função g(t) = 10sen(0, 5t) exp(−0, 2t).
A derivada primeira (analítica) é 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 Exercícios
2.1- Admita a função f (x) = cos(8x) exp(−x2 ). Realize a integral de f (x) para diferentes
discretizações ∆x (número de intervalos) e verifique para que ∆x o resultado da integral
não difere mais usando
2.2- Para
´ obtermos a posição do C.M.´ de uma distribuição contínua 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 Exercício 2.2 uma vareta de comprimento L = 0, 9m, área da seção
reta circular a = 6, 0 mm2 e com massa específica dada por ρ(x) = 7 + 2x − x2 Kg/m3 .
Use a Quadratura Gaussiana (via exemplo 3) para estimar o valor numérico de xCM .
2.4- Considere novamente o problema do Exercício 2.2. Uma vareta de comprimento L = 0, 9m,
área da seção reta circular a = 6, 0 mm2 e com massa específica dada por ρ(x) = 7 + 2x −
x2 Kg/m3 . Use Quadratura Gauss-Legendre para estimar o valor numérico de xCM .
2.6- As velocidades instantâneas de um foguete foram transmitidas, via rádio, para a estação
de lançamento 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 expressão da força gravitacional que atua nos corpos;
24 CAPÍTULO 2. INTEGRAÇÃO E DIFERENCIAÇÃO NUMÉRICAS
(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 espaçados; que faça um gráfico
superposto de F (r) analítico (pontos) e de F (r) numérico (linha cheia) usando a
aproximação centrada da derivada primeira de U ;
(c) refaça os cálculos para derivada primeira de ordem superior (centradas Tab 2.3) e
armazene os resultados.
(d) Calcule o erro numérico entre a aproximação da derivada primeira e o resultado ana-
lítico de F e faça um gráfico superposto de F × r e do Erro × r para comparação.
2.9- Segundo RESNICK; HALLIDAY (1983, cap. 8) a solução completa de problemas unidi-
mensionais com forças dependentes da posição pode ser descrita pela equação
r ˆ x2
m dx
t2 − t1 = ± p
2 x1 E − U (x)
(a) Considere o sistema massa mola com m = 0, 2Kg, constante elástica k = 30N/m e que
em t1 = 0s a posição inicial da partícula 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 laço para o cálculo de t2 a integral deve ser resolvida numericamente por
um dos processos de integração discutidos neste capítulo)
(b) Compare os resultados
q obtidos no item anterior com os valores advindos da equação
x(t) = A cos( m t) sendo A a amplitude do movimento. Para isso use o vetor t2 na
k
equação e faça um gráfico superposto dos resultados, i.e., use a instrução plot(t2,
x2, ’ro’, t2, x, ’b’).
Capítulo 3
Imagine uma situação na qual nos deparamos com o problema de encontrar o valor de uma
variável x que anula ou satisfaz uma determinada equação, por exemplo: x + 2 = 0; x2 + 3x − 4 =
0; sen(x) = 2x. Existem vários métodos numéricos que podem ser aplicados para tal fim, dentre
eles os clássicos a saber: o Método da Iteração Linear, o da Bisseção e o de Newton-Raphson e
o método da Régula Falsi (ou da Secante).
Um teorema muito utilizado na busca de raízes (ou zeros) de funções é o Teorema de Bolzano
que afirma
“Se f (x) é uma função contínua sobre um intervalo fechado [a, b] e f (a) e f (b) têm
sinais contrários, então, 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 função f (x) no intervalo menci-
onado. Outro caso ocorre quando os sinais de f (a) e f (b) são iguais: neste caso ou existe um
número par de raízes de f (x), ou ainda, nenhuma raiz no intervalo [a, b].
Para encontrar o valor de x que zera a função f (x) isolamos x da função escrevendo uma equação
alternativa na forma x = g(x):
Passo 2 com x2 obtemos x3 = g(x2 ), ... Figura 3.1: Ilustração gráfica do Método da
Passo i com xi obtemos xi+1 = g(xi ) Iteração Linear.
onde = 10−3 ≡ 1.0e-3. Outro critério de parada pode ser pelo número de iterações,
ou seja, quando i > N - número máximo de iterações. Dependendo do chute inicial,
x1 , o método pode não convergir para o valor da raiz da função f (x) e o programa
terminará pelo número máximo de iterações estipulado.
3.1.1 Convergência
Suponha que escrevamos a equação f (x) = 0 na forma x = g(x) sendo g(x) a função de iteração.
Para haver convergência do método existem três condições necessárias mas não suficientes a
saber:
1. g(x) e g 0 (x) devem ser contínuas 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 equação horária v(t) = t2 −2t−3 de um móvel em que o tempo é dado
em horas e a velocidade instantânea em quilômetros por hora. Desejamos o valor positivo
do tempo em que o móvel inverte o sentido de seu movimento. Para tanto, zeramos a função
v(t) e explicitamos a variável independente na forma t = g(t). Isto pode ser feito√de duas
formas diferentes: a primeira leva ao resultado t = (t2 − 3)/2 e a segunda à t = 2t + 3.
A formulação correta para a função de iteração g(t) a ser adotada na implementação do
método é aquela que satisfaz os critérios de convergência.
Exemplo 3.2- Antes de programar o código (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 critérios de parada: definir o número máximo de iterações N bem como a
precisão desejada da raiz tol ( ou o ). O resultado está a seguir
3.2. MÉTODO DE NEWTON-RAPHSON 27
f (xi ) f (xi )
∆xi = − 0
−→ xi+1 = xi − 0 . (3.2)
f (xi ) f (xi )
Esta última equação fornece um método itera- Figura 3.2: Ilustração gráfica do Método de
tivo para a estimativa do zero da função f (x) Newton-Raphson
no intervalo definido [a, b]. Um problema deste método ocorre quando f 0 (xi ) é zero - caso que
deve ser evitado pois causa uma indeterminação no segundo termo à direita da igualdade na
equação 3.2.
O algoritmo do exemplo 3.2 pode ser facilmente adaptado para o presente método realizando
uma única alteração: substituir a função de iteração g(t) pelos temos à direita da igualdade na
equação 3.2.
3.2.1 Convergência
2. f 0 (x) 6= 0, ∀x ∈ [a, b]
3. f 00 (x) > 0 ou f 00 (x) < 0 (i.e. f 00 (x) não muda de sinal em [a, b])
4. ff0(a)
f (b)
< (b − a) e f 0 (b) < (b − a)
(a)
Exemplo 3.2- Os três métodos apresentados acima são muito similares quanto a sua imple-
mentação. Para exemplificar consideremos um móvel com equação horária dada por
x(t) = 2t2 − 4t − 5.
Desejamos encontrar o valor positivo do tempo para o qual o móvel encontra-se na origem.
Com o algebrismo convencional é fácil obter o resultado desejado, i.e., t = 2, 87s. Como
não temos f (x) devemos usar uma substituição de variáveis na forma f (x) → x(t) de modo
que a nova equação a ser usada para implementar o Método da Secante é
ti − ti−1
ti+1 = ti − x(ti ) . (3.4)
x(ti ) − x(ti−1 )
Pelo que foi discutido são necessários dois valores de tempo para iniciar o processo: t1 = 2s
e t2 = 4s, por exemplo. Dos critérios de parada: um valor máximo de iterações N = 50
e de uma precisão para o resultado = 0.001s. Com estas definições em mente podemos
adaptar o algoritmo exposto no Exemplo 3.2: definir t(2); fazer i=2; substituir a função de
iteração g(t) pela expressão à direita da igualdade na equação 3.4.
Para se aproximar de uma raiz c, o princípio da bisseção consiste em reduzir o intervalo inicial
testando o sinal de f (x) para o ponto médio do intervalo, i.e. x = (a + b)/2. Considerando um
intervalo inicial [a, b] usamos
3.5. EXERCÍCIOS 29
• Se f (a).f ( a+b
2 ) < 0 o intervalo [a, b] é substituído por [a, (a + b)/2]
• Se f (b).f ( a+b
2 ) < 0 o intervalo [a, b] é substituído por [(a + b)/2, b]
com o novo intervalo calcula-se novamente o valor médio de x, realiza-se o teste e redefine-se o
intervalo até que o critério de parada seja satisfeito. A desvantagem deste método é a sua lenta
convergência para obter uma aproximação da raiz da equação (x = c). Outra desvantagem é a
necessidade de fornecer ao método dois pontos, a e b, com valores de f (a) e f (b) possuindo sinas
contrários.
Usando o algoritmo proveniente das alterações propostas no exercício 3.2 implementa-se este
método substituindo t1 e t2 por a e b, respectivamente. Outra modificação ocorre dentro do laço
o qual é em grande parte substituído por
3.5 Exercícios
(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 faça um gráfico com o comando plot(t, xa, t, xb). Compare o resultado
encontrado algebricamente com o tempo no ponto que as curvas se cruzam. No gráfico
é possível estimar a que distância da cidade A os carros se encontrarão.
(b) implemente o Método da Iteração 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 através do método de Newton-
Raphson e verifique se está de acordo com o resultado analítico.
30 CAPÍTULO 3. RAÍZES DE FUNÇÕES DE UMA VARIÁVEL
(d) Sem muitas alterações o script do item (c) pode ser modificado para obter o tempo
pelo Método da Secante. Faça isso e compare o tempo obtido numericamente com o
resultado analítico.
(e) Finalmente escreva, execute e compare o tempo numérico com o analítico implemen-
tando o Método da Bisseção em um novo script para Matlab/OCTAVE.
3.2- Considere o automóvel A do exercício anterior com uma equação horária mais complexa, a
saber
xa (t) = 12 t + t2 exp(0, 05 t).
Neste caso não é possível obter analiticamente o tempo decorrido entre a partida dos móveis
e o cruzamento dos mesmos na rodovia.
(a) No prompt da janela de comando defina um vetor t=0:1:70, xa=.... e xb=.... Faça
um gráfico com o comando plot para estimar em que tempo eles se cruzarão e a
posição do cruzamento a partir da cidade A.
(b) Altere a equação do automóvel A nos códigos dos itens (b), (c), (d) e (e) do exer-
cício anterior. Encontre o tempo numericamente por cada método comparando os
resultados com o valor estimado graficamente.
3.4- A força de interação entre duas moléculas 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 são constantes que dependem do menor valor do potencial V0 e da distância
entre moléculas onde o potencial se anula r0 . Considere a distância r em Angstrons e os
valores A = 2, 27 × 105 eV·m12 e B = 104, 5eV·m6 .
Ajuste de Curvas
O ajuste de dados provenientes de medidas experimentais com o intuito de prever valores ou leis
Físicas que representem o fenômeno em questão são comuns na Física Experimental. Ao longo
desta seção iremos assumir um conjunto conhecido de dados (xi , yi ), com i = 1, 2, . . . , N .
Uma técnica muito empregada minimiza o quadrado dos resíduos entre as observações (yi ) e os
valores preditos por uma função ajuste (f (xi )), i. e.
(N )
X 2
(4.1)
2
min R = min [f (xi ) − yi ] .
i=1
Esta minimização pode ser obtida após a definição do grau do polinômio (p) que deve ajustar os
dados. Para esclarecer o método dos mínimos quadrados vamos admitir f (x) um polinômio 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 cálculo,
o mínimo de R2 pode ser obtido pela derivada da função R2 com respeito aos coeficientes do
polinômio, 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 CAPÍTULO 4. AJUSTE DE CURVAS
Podemos ainda renomear as matrizes e vetores e reescrever o sistema de equações em uma forma
compacta
M c̄ = d¯ (4.4)
¯
cuja solução desejada é obtida pela multiplicação da inversa de M pelo vetor d,
−1
c̄ = M ¯
d.
4.1.1 Exemplos
Nos vários ramos da física é comum encontrarmos leis, relativamente simples, que preveem os
comportamentos dos sistemas. Tais leis são funções como retas e parábolas, exponenciais, lo-
garitmos entre outras. Algumas dessas funções não são polinômios porém com uma simples
transformação de variáveis tais funções podem ser linearizadas.
Sendo um sistema 2 × 2 é possível obter uma solução analítica simples para os coeficientes
desejados do polinômio, os valores de A e B.
O seguinte algoritmo contém as etapas básicas para o cálculo dos coeficientes da reta
1- limpar memória
2- definir os vetores x e y com os dados provenientes das medidas
3- definir N ← número de medidas
4- definir soma_x, soma_x2, soma_y, soma_xy como zero
5- para i de 1 até N faça
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 laço 5
6- gerar a matriz M e o vetor d (sistema M·c = d)
7- obter o vetor de coeficientes c = M−1 · d
8- mostrar os coeficientes.
4.1. MÍNIMOS QUADRADOS 33
y = A + B ln x.
ou seja, basta criar mais uma coluna de dados na tabela contendo ao invés de xi os valores
de wi = ln xi .
y = A exp(Bx).
y = AxB .
Exemplo 5:
Tabela 4.1 - dados experimentais.
Em uma experiência como pêndulo
simples conseguimos os seguintes pe- Li (m) Ti (s)
ríodos em função do comprimento (ta-
0.50 1.43
bela ao lado). Após 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 potência de x: A=exp(a)=2.01 ; b=B=0.495 y = 2, 01x0,495
O gráfico abaixo ilustra o resultado dos ajustes. Podemos observar que a Lei de Potência
forneceu o melhor ajuste entre os apresentados. Entretanto a potência deveria ser igual
a 0,5. Isto indica que as medidas experimentais não foram realizadas com a necessária
34 CAPÍTULO 4. AJUSTE DE CURVAS
Figura 4.1: Diferentes ajustes obtidos com os dados provenientes de uma experiência com o
Pêndulo Simples.
Imagine que tenhamos a disposição um cronômetro cuja menor leitura seja de um segundo.
Ao realizarmos medidas com este cronômetro os resultados devem ser expressos com a devida
imprecisão do equipamento: valor medido±0, 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 são 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 atribuído ao i-ésimo resíduo.
Assim, quanto menor for a incerteza de uma dada medida maior será o seu peso na estimativa
dos coeficientes da função ajuste.
Sabemos que as medidas experimentais podem sofrer flutuações por imperícia do experimentador
ao manusear o equipamento de medida, má calibração do equipamento, flutuações térmicas do
laboratório ou mesmo na rede elétrica. Estas flutuações (aleatórias) alteram as medidas além do
normal aumentando suas incertezas. Na figura abaixo duas medidas se afastam consideravelmente
do ajuste linear estipulado para os dados. Usando Mínimos Quadrados convencional os valores
dos coeficientes da reta são 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. MÍNIMOS QUADRADOS 35
Figura 4.2: Comparação entre ajustes realizados por Mínimos Quadrados com e sem ponderação.
Na tentativa de minimizar os efeitos de medidas suspeitas no ajuste podemos optar pelo Método
dos Mínimos Quadrados Ponderados com uma técnica iterativa. O procedimento inicial é usar
Mínimos Quadrados convencional para obter um primeiro conjunto de coeficientes da função
ajuste, c(1) = {c0 , c1 , . . . , cp }(1) . Na sequência os resíduos são computados por ri = f (xi , c) − yi
e então usados para definir os pesos wi . Os pesos recém computados são usados com MQP para
estimar os novos coeficientes da função ajuste, c(2) = {c0 , c1 , . . . , cp }(2) . O processo pode iterar
mais algumas vezes até que um critério de convergência (ou parada) seja satisfeito.
Para facilitar as deduções mudaremos a formulação adotada para uma matricial muito utilizada
em artigos e livros que tratam de ajuste, regressão e inversão.
Desejamos minimizar Rw2 e para isso usando uma matriz de pesos diagonal W = w e a definição
ii i
c0
c1
X m
p c
2 Xij cj−1 , com m = p + 1
f (xi , c) = 1 xi xi ... xi 2 =
..
. j=1
cp
derivamos Rw
2 em relação aos parâmetros 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 método dos Mínimos Quadrados
Ponderados. No caso particular em que a matriz diagonal W2 é igual a matriz identidade os coe-
ficientes retornados pela equação serão os mesmos obtidos pelo método dos Mínimos Quadrados
−1 T
convencional: c = XT X X y = M−1 d, com M = XT X e d = XT y.
Em alguns casos os dados experimentais não possuem um bom ajuste com as funções exploradas
nas seções precedentes. Exemplos destes casos são
A
P (w, A, B, wo ) = , potência em exp. de ressonância,
(w − wo )2 + B 2
1 −(x − xo )2
G(x, σ, xo ) = √ exp( ), função Gaussiana,
2πσ 2 2σ 2
λk exp(−λ)
f (k, λ) = , distribuição 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: Gráficos ilustrando (a) distribuições de Poisson e (b) distribuições Normais (Gaussi-
anas).
Nesta seção será mostrado um procedimento conhecido pelo Método de Newton que permite
ajustar dados experimentais por uma função qualquer - função esta definida previamente - a
exemplo das equações acima apresentadas e normalmente não lineares.
4.2. AJUSTE POR UMA FUNÇÃO QUALQUER (NEWTON E GAUSS-NEWTON) 37
vetor com os parâmetros da função ajuste. Iniciamos com a derivada do quadrado dos resíduos
com respeito aos parâmetros de uma função 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 solução ∆c é o vetor com o incremento dos parâmetros do vetor c de modo que a nova
(n)
estimativa dos parâmetros da função f (x, c̄) serão cn+1 = cn + ∆c para n = 1, 2, ... iterações
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 cálculos com o
intuito de minimizar o número de operações numéricas. Tal procedimento leva ao Método de
Gauss-Newton.
Os zeros da função gj são obtidos em termos da matriz Jacobiana definida acima e deduzida a
partir da função 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 função f (x, c) iterativamente
procedemos da seguinte forma:
38 CAPÍTULO 4. AJUSTE DE CURVAS
Algoritmo
Dependendo do “chute inicial” c(1) é possível que o método gere um incrementoP∆c demasiada-
mente grande fornecendo um resíduo maior do que o resíduo sem o incremento: i ri2 (c + ∆c) >
i ri (c) contrário ao desejado. Quando isto ocorre dizemos que o método diverge e os parâ-
2
P
metros obtidos não farão com que a função f (x, c̄) ajuste os dados experimentais. O que se faz
é inserir (fornecer) um novo conjunto de parâmetros para um novo teste até que se consiga a
convergência.
Exemplo 6: Considere uma garrafa com uma quantidade n = N/V de moléculas por unidade
de volume. Cada molécula possui massa m e o gás encontra-se a uma temperatura T . O
número de moléculas por unidade de volume nv com velocidade entre v e v + dv no interior
da garrafa é dado pela lei de Maxwell para a distribuição de velocidades a saber
nv (v) = Av 2 exp(−Bv 2 ),
onde
m 3/2 m
A = 4πn e B= .
2πkT 2kT
4.2. AJUSTE POR UMA FUNÇÃO QUALQUER (NEWTON E GAUSS-NEWTON) 39
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 .
O script em Matlab/Octave a seguir permite que o usuário insira coeficientes A e B até que
o ajuste fique próximo dos dados experimentais. Na seqüência, itera um número máximo
de 50 vezes caso a condição de convergência (tolerância) não seja satisfeita, para no final
mostrar o gráfico e escrever na tela os parâmetros obtidos.
40 CAPÍTULO 4. AJUSTE DE CURVAS
4.3 Exercícios
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., forneça a equação y = A + B*x.
4.2- Faça um script para realizar um ajuste linear dos pontos fornecidos no Exercício 2.1. No
final do código faça um gráfico com os dados da tabela (círculos vermelhos) e, sobreposto,
o ajuste conseguido (linha cheia em azul).
42 CAPÍTULO 4. AJUSTE DE CURVAS
4.3- O potencial de Lennard-Jones é usado para oh estudo de moléculas diatômicas. Sua ex-
a 12
i
a 6
pressão em uma dimensão é U (x, Uo , a) = Uo x sendo a a separação entre
−2 x
átomos em que o potencial assume o menor valor e Uo a energia de ligação ou de dissoci-
ação da molécula. Desenvolva um script LenJon.m que permita o ajuste de um conjunto
de dados (xi , Ui ) a ser fornecido pelo usuário. Neste problema desejamos encontrar os
parâmetros a e Uo . (Dica: faça uma adaptação 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 gráfico está ilustrado
na Figura 4.6.
4.4- No Exemplo 6 a função ajuste - Distribuição de Velocidades Moleculares - foi usada com
os dados e o Método de Newton para obtenção dos parâmetros A e B. Aplique logaritmo
neperiano na função original para obter uma formulação linearizada da função ajuste,
ou seja, os novos coeficientes devem estar elevados a unidade. Usando a metodologia de
mínimos quadrados deduza o sistema de equações pertinentes. Programe um script para
resolver o sistema e que ao final forneça os parâmetros originais A e B da Lei de Maxwell
em questão.
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 aceleração em função do tempo. Considerando que a força de atrito viscosa
(resistência do ar) seja proporcional a velocidade (−βv). A 2ª Lei de Newton acerta que
dv β dv g
−maĵ = −mg ĵ − βv ĵ → a= =g− v → = (vl − v),
dt m dt vl
5.1 Definições
As operações aritméticas abaixo, realizadas entre duas equações do mesmo sistema de equações,
resultam em sistemas equivalentes ( com mesma solução):
b) ao somar ou subtrair duas equação do mesmo sistema, obtemos outro sistema equivalente
ao inicial;
46 CAPÍTULO 5. SISTEMA DE EQUAÇÕES LINEARES
Veremos nas seções a seguir algumas das técnicas de solução de sistemas de equações lineares.
Neste método necessitamos dois passos para obter o vetor solução.de um sistema de equações:
1. triangularizar a matriz A e,
No primeiro passo usamos operações aritméticas 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 são os elementos modificados da matria A enquanto bi são os elementos modificados do
vetor independente b.
O novo sistema de equações pode ser facilmnete resolvido por retrosubstituição pois conhecemos
o valor de x3 através de uma simples operação: x3 = −7/22.
Este método é uma extensão do método de Gauss que objetiva a transformação da matriz A
em uma matriz identidade. Basicamente as operaçoes entre linhas são promovidas de modo a
diagonalizar a matriz original finalizando com elementos unitários na diagonal principal.
Este método é muito pouco usado nas soluções de sistemas de equações pois necessita de um
número maior de operações levando o dobro do tempo gasto pelo método de Gauss. Em al-
guns problemas físicos o objetivo é a diagonalização de operadores (como A): problemas de
auto-valores e auto-vetores são amplamente usados em Mecânica Quântica. Nestes casos não
trabalhamos com a amatriz ampliada e o resultado da diagonalização fornece, na diagonal prin-
cipal, o espectro de auto-valores do operador ao invés da matriz identidade.
Este método é mais trabalhoso que o método de Gauss porém muito prático quando necessitamos
resolver sistemas de equações em que a matriz de coeficientes A permanece a mesma e o vetor
de termos independentes b assume diferentes valores para cada sistema de equações a resolver.
Na forma compacta o sistema de equações 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 multiplicações pelas outras colunas fornecem equações 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 fatoração da matriz A em uma matriz inferior L e outra superior U é
resumida em duas equações a saber
i−1
X
Uij = Aij − Lik Ukj , para i ≤ j ; (5.2)
k=1
Pi−1
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. MÉTODO ITERATIVO DE JACOBI-RICHARDSON 49
Os métodos iterativos usam um uma estimativa inicial da solução do sistema de equações para
obter uma melhor estimativa da mesma após sucessivos passos. Assim, sendo x0 é uma solução
aproximada do sistema de equações o processo deve ser capaz de devolver uma solução aproxi-
mada x1 , melhor do que x0 , após uma iteração. A solução x1 é então usada para obtenção de x2
e assim sucessivamente.
Consideremos um sistema n × n do tipo Ax = b. Podemos escrever a matriz de coeficientes como
a soma de três 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, vêm
Dx = b − L + U x,
−1 −1
x = D b−D L + U x.
o que representa uma normalização dos elementos de cada equação do sistema de equações pelo
elemento da diagonal principal Aii no início da dedução do método.
e, admitindo uma solução inicial aproximada para x à direita da igualdade, obtemos a fórmula
de recorrência para o método 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 = −A∗12 xk2 − A13 xk3 − · · · − A1n xkn + b∗1
xk+1
2 = −A∗21 xk+1
1 − A23 xk3 − · · · − A2n xkn + b∗2
.. ..
. .
xk+1
n = −A∗n1 xk+1
1 − An2 xk+1
2 − · · · − Ann xk+1 ∗
n−1 + bn
5.7. CONVERGÊNCIA DOS MÉTODOS 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 soluções que o valor recém calculado de x1 é usado para
estimar xk+1
2 . Os valores atualizados de x1 e x2 são empregados na estimativa de x3
k+1
e assim
sucessivamente até xn .
k+1
Os dois métodos iterativos, acima apresentados, irão convergir para a solução 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
Convergências lentas ocorrem quando o chute inicial está distante da solução do problema e
quando o critério acima fica próximo da igualdade, ou seja
X
|Aii | ≈ |Aij | , para i = 1, 2, . . . , n.
j6=i
Exemplo 5.4: Podemos usar um sistema de equações lineares para obter, por exemplo, as
correntes que circulam nas malhas do circuito abaixo. O método de Maxwell é simples pois
assume apenas uma corrente em cada malha. Considerando a Lei de Kirchoff para as três
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 método de Gauss e
b) o método de Gauss-Sidel.
R1 −→ I1
R2 −→ I1 − I2
R3 −→ I2 R4 −→ I2
R5 −→ I0 − I2
R0 −→ I0 R5 −→ I0
5.8 Exercícios
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 decomposição LU a solução do sistema de equações. Resp: a solução é x = [1; 2; 1; 0].
5.2- Use os dados do exercício 5.1 e determine a solução do sistema de equações usando o método
de Gauss-Sidel. (Obs.: verifique se o sistema é diagonalmente dominante; em caso negativo
opere as equações para obter um sistema equivalente que satisfaça esta exigência).
5.3- A Ponte de Wheatstone é usada para calcular resistências (ou capacitâncias) desconhecidas.
O circuito abaixo ilustra uma Ponte de Wheatstone em que R0 I5 = 0 quando a ponte está
em equilíbrio, i.e., quando R2 R3 = R1 R4 . Normalmente entre os pontos B e D existe um
amperímetro que indica a corrente neste segmento (I5 ) sendo R0 a resistência 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 solução analítica poderá ser derivada desde que sejam fornecidos dados suficientes para
isso: este sistema possui cinco resistências, seis correntes, uma fonte (bateria) e apenas
sete equações. Assumindo que as incógnitas do problema sejam as correntes reescrevemos
o conjunto de equações 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 não é quadrada. Uma forma de solucionar este problema
baseia-se na obtenção de um sistema de equações equivalente. Para tanto pré-multiplicamos
a equação 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 forneça 20V de d.d.p. entre
os terminais A e C do circuito. Monte a matriz A e o vetor b̄, realize a pré-multiplicação
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 solução e compare com os resultados do item c.
(e) O sistema é levado a Lua (g muda) recalcule a solução usando o script do item c.
Capítulo 6
Nos distintos ramos da ciência Física podemos encontrar inúmeros sistemas que são regidos por
equações diferenciais. Como exemplo primeira Lei de Newton aplicada ao sistema massa-mola
leva às equações diferenciais do oscilador harmônico, simples, amortecido e forçado. As leis de
Maxwell na forma diferencial, as equações de Navier-Stokes, a difusão e condução do calor podem
conduzir às denominadas equações diferenciais ordinárias.
Este capítulo apresenta, com uma formulação simples, o Método de Diferenças Finitas (MDF)
como ferramenta numérica para obtenção das soluções de algumas equações diferenciais tais
como: decaimento radioativo, oscilações e difusão do calor.
A Lei que expressa o decaimento radioativo de uma substância radioativa (ex. Urânio, Tório,
Potássio) é equacionada na forma
dN
= −λN =⇒ N (t) = N0 exp(−λt) (6.1)
dt
onde N0 representa o número de átomos radioativos no instante t = 0s e λ uma constante de
decaimento que depende da substância. Algumas definições importantes são:
ln 2 0, 693
t1/2 = = , meia vida
λ λ
1
tm = , vida média
λ
sendo que a meia vida da substância, como a denominação sugere, é o tempo necessário para
que metade dos núcleos radioativos decaiam e tm é o tempo médio de vida da substância. Em-
bora tenhamos a solução analítica do problema podemos, a título de exemplo, aplicar a técnica
numérica denominada de Métodos de Diferenças Finitas à equação diferencial com o intuito de
obter uma solução numérica N num (t). Para isso devemos substitui a derivada dN/dt por suas
aproximações (vide cap. anterior), ou seja
Ni+1 − Ni−1
1. Diferença centrada: = −λNi =⇒ Ni+1 = Ni−1 − 2λ∆t Ni (Centered)
2∆t
Ni − Ni−1 Ni−1
2. Diferença atrasada: = −λNi =⇒ Ni = (Backward)
∆t 1 + λ∆t
56 CAPÍTULO 6. SOLUÇÃO DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
Ni+1 − Ni
3. Diferença adiantada: = −λNi =⇒ Ni+1 = Ni (1 − λ∆t) (Forward)
∆t
Ni+1 − Ni
4. Forward Modificado: = −λNi+1/2 e, tomando o valor médio Ni+1/2 = (Ni+1 +
∆t
Ni )/2 obtemos
(1 − λ∆t/2)
Ni+1 = Ni
(1 + λ∆t/2)
Em eletrostática vimos uma relação entre o fluxo do campo elétrico e a distribuição de cargas no
→
− →
−
espaço. Considerando o vetor deslocamento elétrico, D = ε E , onde ε é a permitividade elétrica
→
−
do meio e E o campo elétrico temos
→
−
∇ · D = ρ, (Lei de Gauss)
ou ainda
→
−
∇ · (ε E ) = ρ, (6.2)
sendo ρ a densidade de carga. O campo elétrico pode ser obtido a partir do gradiente do potencial
→
−
elétrico, i.e., E = −∇V . Substituindo na equação (6.2) vem
−∇ · (ε∇V ) = ρ. (6.3)
d2 φ
= f (x) = −x (6.5)
dx2
sujeita as seguintes condições de fronteira (Dirichlet)
φ(0) = φ1 = a,
φ(1) = φn = b.
que pode ser simplificada usando a notação x = (i − 1)∆x, φ(x) = φi , φ(x + ∆x) = φi+1 de
modo que
Existem dois problemas ao se tentar usar esta equação: um ocorre quando inserimos i = 1, pois
aparece um termo φ0 = φ(−∆x) que não está no domínio do problema e dois, quando i = n, pois
aparece o termo φn+1 = φ(1 + ∆x) que também encontra-se fora do modelo (domínio) definido
para valores de x ∈ [0, 1]. Podemos desenvolver a última equação para diferentes posições x, ou
equivalentemente, para diferentes valores de i na forma
Como φ0 e φn+1 não fazem parte da solução os termos devem ser retirados da primeira e última
equações. Além disso, das condições de fronteira sabemos os exatos valores de φ1 e de φn , de
modo que a primeira e a última equações não são verdadeiras devendo ser removidas do sistema
de equações. O resultado destas conjecturas permite reescrever o conjunto de equações acima na
forma
−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 φn−1 −∆x2 · xn−1 − 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 ; % solução para i=2,..,n-1. Exclui-se as bordas
phi(1) = a; %\
phi(2:n-1)= psi; % > solução numérica completa.
phi(n) = b ; %/
phi_anl = x.*(1-x.^3)/12; % solução analítica
plot(x,psi,’b.’, x,phi_anl,’r-’) % gráfico comparativo entre soluções
Observação: quando o meio for heterogêneo ε = ε(x) a equação (6.3) é desenvolvida usando a
identidade vetorial ∇ · (A∇B) = ∇B · ∇A + A(∇ · ∇B) sendo A e B escalares. A aplicação
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 heterogêneos a equação diferencial possui um termo com dependência
no gradiente do potencial elétrico.
c1 = c1 /b1
d1 = d1 /b1
para k de 1 até n
den = bk − ak ck−1
ck = ck /den
dk = (dk − ak dk−1 )/den
fim do laço
6.2. EQUAÇÃO 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 função 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
% retrosubstituição
x(n) = d(n) ;
for i= n-1:-1:1
x(i) = d(i) - c(i)*x(i + 1) ;
end
Dirichlet: na seção anterior vimos um exemplo em que a solução da EDO possuia valores
fixos nas duas fronteiras do modelo: condições de Dirichlet. Como resultado o sistema
de equações n × n foi reduzido à um sistema com n − 2 incógnitas e o vetor de termos
independentes teve a primeira e última linhas alteradas para inserção das condições de
contorno, i.e.
d2 a
d3 0
0 0
K ψ = d onde d = d − cD = . − . .
.. ..
dn−1 b
Muitos sistemas físicos possuem outras condições de contorno : em difusão do calor é comum
encontrarmos fronteiras com condições de convecção ou com fluxo prescritos, paredes adiabáticas
implicam em fluxo térmico nulo. No processo de obter a solução analítica ou numérica de equações
diferenciais impomos com frequência as de Neumann e de Robin (mista)
∂φ
α = γ e (6.9)
∂x
∂φ
α + βφ = γ, (6.10)
∂x
respectivamente. Como a condição de Robin incorpora a de Dirichlet (α = 0) e de Neumann
(β = 0) é interessante analizar como inseri-la na solução numérica de uma EDO de segunda
ordem.
60 CAPÍTULO 6. SOLUÇÃO DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
∇ · (k∇φ) = f
O sistema de equações lineares em que a condição de Neumann ocorre em x = 0 deve ser deduzido
de forma similar ao descrito para condição mista. Tentar usar o artifício α = 0 na equação (6.14)
produzirá erro: divisão por zero!
Tarefa 6.2: (a) aplique diferenças finitas à equação de Poisson no domínio x[0, 1] e obtenha o
sistema de equações lineares como mostrado em 6.7 e 6.14 pertinente as seguintes condições
de contorno
φ(x) = a, em x = 0
∂φ
k = b, em x = 1
∂x
6.3. OSCILAÇÕES SIMPLES, AMORTECIDAS E FORÇADAS 61
(b) dado o termo fonte f (x) = −x derive a solução analítica para este problema, ou seja,
integre duas vezes a equação d2 φ/dx2 = −x/k e use as condições de contorno para deduzir
as constantes de integração.
(c) construa um script para ambiente Matlab/Octave que resolva o sistema de equações
obtido no item (a); programe também a solução analítica para comparação através da
instrução plot(x,phi,’b-’, x,phi_a, ’r.’) . Sugestão: use k = 0, 5; b = 0, 1 ; a = 2 e
L = 1.
Alguns sistemas físicos de movimento periódico estudados na graduação constituem o que denomina-
se de MHS - Movimento Harmônico Simples: Massa-Mola, Pêndulo Simples, Pêndulo Físico,
Circuito LC. Outros sistemas oscilantes podem conter em sua descrição físico-matemática os
termos dissipativos (atrito, resistência do ar) bem como o termo fonte.
Nesta seção veremos como problemas oscilantes com e sem amortecimento, com e sem fontes
usando como modelo o Oscilador Massa-Mola.
Este é o oscilador mais fundamental (Mecânica Clássica) que se trata na graduação do curso de
Física. É composto de uma mola de constante elástica 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 elástico da mola Hook propôs que a força exercida pela mola na massa é proporcional a
deformação da mesma. Designando a deformação 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 equação é conhecida por Equação Diferencial do MHS sendo w0 = k/m a frequên-
p
sendo esta uma formulação explícita do problema com o sobrescrito j associado ao tempo. Po-
demos observar na equação que para obtermos a solução no tempo posterior j + 1 necessitamos
do conhecimento das deformações em dois tempos anteriores, j e j − 1.
Conhecendo-se o período do movimento, ou equivalentemente a constante elástica e a massa
do corpo nos deparamos com um problema em que se faz necessário também o conhecimento
a posição inicial x(0) e a velocidade inicial v(0). A equação 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 genérico:
. conhecemos x(0), v(0) e w0 e desejamos x(t > 0). O problema está em encontrar quem são A
e φ no caso analítico porém, no caso numérico não há sentido já que não estão presentes
na expressão de xj+1 . Como v = dx/dt usamos a aproximação numérica para escrever
x2 − x0
v(0) = v 1 = =⇒ x0 = x2 − 2v(0)∆t
2∆t
e, substituindo na expressão de xj+1 com j = 1 temos
1
x2 = 2 − ∆t2 w02 x1 + 2v(0)∆t
2
e que é válida apenas na primeira iteração j = 1 fornecendo então a igualdade
1
x2 = 2 − ∆t2 w02 x(0) + 2v(0)∆t (6.18)
2
pois x1 = x(0) e . Para as próximas iterações j = 2, 3, ... a equação a ser usada é a que
foi deduzida anteriormente
clear;
tmax = input(’ Entre com Tempo maximo: ’); % tempo desejado da solução
% discretização no tempo
dt = input(’ Entre com discretização do tempo (dt): ’);
% numero de iterações no tempo
nt = Tmax/dt + 1 ;
x0 = input(’ Entre com posição em t=0s: ’) ; % posição 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 % laço no tempo das soluções
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. OSCILAÇÕES SIMPLES, AMORTECIDAS E FORÇADAS 63
Alguns sistemas físicos oscilam sujeitos a forças externas e um exemplo simples é o circuito
ressonante RLC com uma fonte alternada. O circuito pode entrar em ressonância (máxima
amplitude de corrente) quando a frequência da fonte se aproximar da frequência natural das
oscilações do sistema.
Tomando por base o sistema com amortecimento e admitindo que uma força 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 força e wf a frequência angular da fonte. Como visto em disciplina
anterior, a solução analítica desta equação diferencial é obtida pela soma da solução da homogê-
nea com uma solução particular. Suprimindo os detalhes de tal dedução a solução analítica da
equação diferencial dos sistemas forçados-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 solução homogênea e o segundo termo a
solução particular. Como o primeiro termo decai exponencialmente é comum usarmos apenas a
solução permanente. Logo a equação horária da posição da massa torna-se
F0
x(t) = sin(wf t − α) (6.21)
G
onde
q
G = m2 (wf2 − wo2 )2 + b2 wf2
α = cos−1 (bwf /G).
Do ponto de vista numérico as diferenças deste problema para o da seção anterior são os termos
dissipativo e o termo à direita da igualdade ( termo fonte) que depende do tempo. Substituindo
as aproximações numéricas das derivadas e também tj = (j − 1)∆t no termo fonte temos
xj+1 − 2xj + xj−1 b xj+1 − xj−1 F0
2
+ + w02 xj = cos(wf (j − 1)∆t) = f j
∆t m 2∆t m
que após manipulação algébrica resulta em
b∆t j+1
xj+1 − 2xj + xj−1 + − xj−1 + ∆t2 w02 xj = ∆t2 f j
x
2m
ou
1 b∆t
j+1 2 j 2 2
(6.22)
j j−1
x = ∆t f + 2 − ∆t w0 x − 1 − x
1 + b∆t
2m
2m
onde f j = F0
m cos(wf (j − 1)∆t).
64 CAPÍTULO 6. SOLUÇÃO DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
O método descrito nesta seção é muito utilizado na descrição numérica de sistemas físicos em
que a força resultante depende da posição ou explicitamente do tempo. O sistema massa-mola,
o Pêndulo Simples, o Pêndulo Físico, o de Torção e o Circuito LC são clássicos exemplos de tais
sistemas.
Consideremos uma partícula de massa m sujeita a uma força resultante F . A segunda Lei de
Newton acerta que
d2 x F
= =a
dt2 m
onde a = a(x(t), v(t), t) é a aceleração resultante. Assim, a partir do conhecimento da aceleração
desejamos obter os valores numéricos da posição e da velocidade. Usando diferenças centradas
(vide Cap. 3) reescrever a última equação na forma
Na equação (6.23) é necessário o conhecimento das posições nos instantes t e t − ∆t bem como
da aceleração em t = t. Como ilustração para o sistema massa-mola (OHS) a aceleração é função
da posição segundo
F (t) k
a(t) = = − x(t) = −w2 x(t)
m m
expressão esta a ser substituída na eq. (6.23).
Uma variação do método anterior, denominado de velocity-Verlet, faz uso da expansão em série
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 relação a versão básica são: cálculo de posição 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 EQUAÇÕES 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;
% discretização no tempo e laço 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;
% solução 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(’posiçao (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(’aceleraçao (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 físicos (ex. sistemas acoplados) se apresentam como um sistema de equações
onde desejamos encontrar simultâneamente um conjunto de soluções. Consideremos um sistema
composto de duas massas ligadas por três molas como na figura.
66 CAPÍTULO 6. SOLUÇÃO DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
Figura 6.1: Sistema de duas massas acopladas onde x10 e x20 são as posições de equilíbrio e u1
e u2 são os deslocamentos das massas a partir das posições de equilíbrio.
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 soluções são u1 (t) e u2 (t). Substituindo
as derivadas segundas por suas aproximações 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 n∆t.
Neste ponto obtivemos as velocidades em função do tempo e com estes valores podemos realizzar
numericamente a integral das velocidades para obtermos as posições u1 e u2 . Para exemplificar
o procedimento usemos a expressão 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 várias metodologias numéricas
para se obter as soluções do sistema de equações diferenciais ordinárias.
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 CAPÍTULO 6. SOLUÇÃO DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
Tarefa 6.4: implemente o método acima em um script MHA.m na linguagem do Matlab usando
k = 2N/m, m = 0, 5kg, b = 0, 2kg/s para as condições iniciais: x(0) = 0, 25m e v(0) =
−0, 2m/s. Use dt = 0.1s para um tempo de simulação T = 10s. Faça os gráficos de x(t) e
v(t) em linha contínua (azul) superpondo as soluções analíticas com pontos (vermelho). A
solução analítica da posição é
s
b 2
b k
x(t) = A exp(− t) cos(wt + φ) , w = −
2m m 2m
Exercícios
6.1- Obtenha analiticamente a solução da equação (6.5). Após, implemente o algoritmo ao final
da seção 6.2.
6.2- Ao final da seção (6.3.1) encontra-se um script para a solução da EDO do MHS, ou seja
equação (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 possíveis erros e verifique se as
soluções analítica e numérica concordam. O que você pode deduzir ao analisar o gráfico de
erros relativos entre as soluções.
(b) Repita o procedimento trocando apenas o valor da posição inicial para x(0) = 0m e
descreva o que ocorreu.
(c) Reveja as equações horárias 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. MÉTODO DE RUNGE-KUTTA 4ª ORDEM 69
estrutura de decisão if .... else ....end para o cálculo de φ e A. Execute o script e verifique
se a solução analítica concorda com a solução numérica. (Obs.: quando x(0) = 0m o valor
da fase inicial é φ = π/2).
6.3- O Carbono 14 é um radio isótopo muito usado em datações arqueológicas pois sua meia-
vida é de aproximadamente 5730 anos, a maior dentre seus outros isótopos. Use a teoria
apresentada na seção 6.1 juntamente com o método Forward Modificado para traçar um
gráfico de N(t) considerando uma a quantidade inicial de isótopos radioativos igual a 1mol.
Compare seus resultados numéricos com a solução analítica.
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 frequência das oscilações com w0 = 1/ LC. Use o Método
de Runge-Kutta de 4ª ordem e:
(a) obtenha as soluções numéricas para q(t) e I(t)
(b) compare a solução numérica e analítica de q(t) ; use um gráfico superposto com a
solução analítica expressa por pontos e a numérica com linha contínua.
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 substituição
d2 VC dVC
LC + RC + VC = Ve ,
dt² dt
que representa uma EDO não homogênea com solução VC (t). Seja a tensão de excitação 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 solução numérica via Método de Runge-Kutta.
70 CAPÍTULO 6. SOLUÇÃO DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS
Referências Bibliográficas
ALONSO, M.; FINN, E. Um Curso Universitário - Mecânica. [S.l.]: Edgard Blucher, São
Paulo, 1981. v.1.
ARFKEN, G. B.; WEBER, H. J. Mathematical Methods for Physicists. 5.ed. [S.l.]: Har-
court Academic Press, 2001. 1112p.
JALÓN J. G. D.N, J. G. D.; RODRÍGUEZ, J. I.; VIDAL, J. Aprenda Matlab 7.0 como
si estuviera en primero. [S.l.]: Universidad Politécnicade, Escuela Técnica Superior de
Ingenieros Industriales, Madrid, 2005. 128p.
RESNICK, R.; HALLIDAY, D. Física. [S.l.]: Livros Técnicos e Científicos, 1983. v.1.
71