Buscar

Métodos Computacionais - Nilo Maurício

Prévia do material em texto

N
.M
.S
ot
om
ay
orME´TODOS COMPUTACIONAIS DA FI´SICA
Apostila
Araguaina 2014
N. M. Sotomayor
N
.M
.S
ot
om
ay
or
Suma´rio
Resumo 1
1 Integrac¸a˜o Nume´rica 2
1.1 Interpolac¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1 Diferenc¸as Finitas . . . . . . . . . . . . . . . . . . . . . 2
1.1.2 Polinoˆmio Interpolador de Gregory-Newton . . . . . . 3
1.2 Integrac¸a˜o Nume´rica . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1 Exerc´ıcio . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Implementac¸a˜o computacional . . . . . . . . . . . . . . . . . . 8
1.3.1 Exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.2 Exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Soluc¸a˜o Nume´rica de Equac¸o˜es Diferenciais Ordina´rias EDOs 15
2.1 Equac¸o˜es diferenciais ordina´rias nume´ricas . . . . . . . . . . . 15
2.1.1 Equac¸a˜oes diferenciais ordina´rias . . . . . . . . . . . . 15
2.1.2 Problema de valor inicial . . . . . . . . . . . . . . . . . 16
2.2 Algoritmos nume´ricos para equac¸o˜es diferenciais ordina´rias . . 16
2.3 Me´todo de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 Me´todo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4.1 Soluc¸a˜o Exa´ta do PVI do exemplo . . . . . . . . . . . 21
2.4.2 Soluc¸a˜o do PVI atrave´s do Me´todo de Euler . . . . . . 22
3 Os Me´todos de Runge-Kutta de primeira e segunda ordem 27
3.1 Definic¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.1 Me´todo de Runge-Kutta de primeira ordem s = 1 . . . 28
3.1.2 Me´todos de Runge-Kutta de Segunda Ordem . . . . . . 29
3.1.3 Me´todo de Heun (Karl Heun) . . . . . . . . . . . . . . 31
3.1.4 Me´todo de Runge-Kutta de segunda ordem (Ponto
Me´dio) . . . . . . . . . . . . . . . . . . . . . . . . . . 33
i
N
.M
.S
ot
om
ay
or
4 O Me´todo de Runge-Kutta de Terceira ordem 42
4.1 Resumo de teoria ba´sica . . . . . . . . . . . . . . . . . . . . . 42
5 O Me´todo de Runge-Kutta de Quarta Ordem 52
5.1 Teoria ba´sica . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.1.1 Interpretac¸a˜o geome´trica . . . . . . . . . . . . . . . . . 53
6 Integrac¸a˜o nume´rica das equac¸a˜oes de Newton 57
6.1 Forc¸a sobre um objeto em queda livre . . . . . . . . . . . . . . 57
6.1.1 Implementac¸a˜o computacional . . . . . . . . . . . . . . 58
6.2 Trajeto´rias em duas dimenso´es . . . . . . . . . . . . . . . . . . 61
7 Integrac¸a˜o nume´rica das equac¸a˜oes diferenciais de segunda
ordem 68
7.1 Me´todo de Numerov . . . . . . . . . . . . . . . . . . . . . . . 68
7.2 Derivac¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8 Integrac¸a˜o Nume´rica de Equac¸o˜es Diferenciais Parciais 72
8.1 Introduc¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
8.2 Equac¸o˜es diferenciais parciais . . . . . . . . . . . . . . . . . . 72
8.3 Me´todo das diferenc¸as finitas . . . . . . . . . . . . . . . . . . 72
8.4 Soluc¸a˜o nume´rica da equac¸a˜o de Schro¨dinger dependente do
tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
8.5 Fundamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
ii
N
.M
.S
ot
om
ay
or
Lista de Figuras
1.1 Considere o gra´fico de um conjunto de valores da grandeza y
em func¸a˜o da grandeza x. Se na˜o conhecemos o verdadeiro
valor funcional y = f(x) podemos aproximar a dependeˆncia
de y em func¸a˜o de x por um polinoˆmio interpolador Pn(x). . . 5
1.2 A curva em vermelho representa a forma funcional exata de
f(x) no intervalo [0.4 : 2.0], e´ necessa´rio calcular o valor da
integral nesse intervalo. Os pontos em preto representam nove
valores funcionais yi para correspondentes nove valores de xi,
no intervalo escolhido, esses valores foram calculados com o
co´digo computacional mostrado na Figura 1.4. . . . . . . . . . 10
1.3 Fluxograma empregado para descrever o algoritmo do ca´lculo
dos nove valores funcionais (xi, yi) da func¸a˜o f(x). . . . . . . 11
1.4 Co´digo computacional ou programa fonte em linguagem for-
tran 77 empregado para o o ca´lculo dos nove valores funcionais
(xi, yi) da func¸a˜o f(x). . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Tabela que mostra os nove valores funcionais (xi, yi) da func¸a˜o
f(x) obtidos com o co´digo mostrado na Figura 1.4. . . . . . . 12
1.6 Algoritmo em fluxograma para o ca´lculo nume´rico da a´rea do
exerc´ıcio proposto. . . . . . . . . . . . . . . . . . . . . . . . . 13
1.7 Ca´lculo da integral. . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1 Interpretac¸a˜o geome´trica do Me´todo de Euler. O esquema
mostra uma func¸a˜o y = f(x) com valores conhecidos: (x0, y0)
e dy/dx avaliada em x = x0. Considerando-se que a forma
funcional exa´ta e´ desconhecida, deseja-se encontrar uma apro-
ximac¸a˜o para o valor y(x1) com x1 muito pro´ximo de x0.
Empregando-se a definic¸a˜o da derivada de uma func¸a˜o pode se
obter uma aproximac¸a˜o para y1 sendo y1 = y0+htanθ, esta ex-
pressa˜o e´ a mesma dada pela fo´rmula de Euler y1 = y0+hdy/dx. 20
iii
N
.M
.S
ot
om
ay
or
2.2 Representac¸a˜o esquema´tica da aplicac¸a˜o recurssiva do Me´todo
de Euler para a soluc¸a˜o nume´rica de uma EDO. Dado o valor
da func¸a˜o e o da sua derivada no ponto (x0, y0) e´ poss´ıvel
fazer a previssa˜o do valor da func¸a˜o no ponto x1. Apo´s a
determinac¸a˜o de (x1, y1 e dy/dx em x1 podem ser empregados
estes valores para a determinac¸a˜o de y2 e assim sucessivamente. 21
2.3 Fluxograma do Algoritmo para a soluc¸a˜o exa´ta do PIV 2.37 . . 22
2.4 Programa fonte em FORTRAN 77 para o ca´lculo exa´to da
func¸a˜o 2.37. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5 Fluxograma do Algoritmo para o Me´todo de Euler . . . . . . . 24
2.6 Programa fonte em FORTRAN 77 que implementa o algoritmo
para o Me´todo de Euler. . . . . . . . . . . . . . . . . . . . . . 25
2.7 Gra´fico da soluc¸a˜o do PVI do exemplo, sao˜ comparadas a
soluc¸a˜o exata e as soluc¸o˜es aproximadas com diferentes valores
do passo h = (xf = x0)/n. A curva em vermelho representa
a soluc¸a˜o exa´ta com n = 20, a curva em verde representa a
soluc¸a˜o aproximada obtida pela aplicac¸a˜o do Me´todo de Euler
com n = 20, a curva em azul representa a soluc¸a˜o aproximada
obtida pela aplicac¸a˜o do Me´todo de Euler com n = 40 e a
curva em rouxo representa a soluc¸a˜o aproximada obtida pela
aplicac¸a˜o do Me´todo de Euler com n = 80. Observa-se que
quanto menor o passo a soluc¸a˜o nume´rica aproxima-se mais
da soluc¸a˜o exa´ta. . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1 Esquema que mostra a interpretac¸a˜o geome´trica do Me´todo de
Heun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Fluxograma que explica a implementac¸a˜o computacional do
Me´todo de Heun . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3 Programa fonte em Fortran 77, que implementa o Me´todo de
integrac¸a˜o nume´rica de Heun. . . . . . . . . . . . . . . . . . . 36
3.4 Comparac¸a˜o dos ca´lculos da soluc¸a˜o exa´ta do PIV e dos Me´todos
de Euler e Heun (RK-2). . . . . . . . . . . . . . . . . . . . . . 37
3.5 Comparac¸a˜o dos valores nume´ricos da soluc¸a˜o exa´ta do PIV
e dos Me´todos de Euler e Heun (RK-2). . . . . . . . . . . . . 38
3.6 Programa fonte em Fortran 77, que implementa o Me´todo de
integrac¸a˜o nume´rica RK-2 Ponto Me´dio. . . . . . . . . . . . . 39
3.7 Interpretac¸a˜o geome´trica do Me´todo de integrac¸a˜o nume´rica
RK-2 Ponto Me´dio. . . . . . . . . . . . . . . . . . . . . . . . . 40
3.8 Comparac¸a˜o dos valores nume´ricos da soluc¸a˜o exa´ta do PIV
e dos Me´todos de Euler, Heun e Midpoint (RK-2). . . . . . . . 41
iv
N
.M
.S
ot
om
ay
or
4.1 Programa fonte em Fortran 77, que implementa o Me´todo de
integrac¸a˜o nume´rica de Runge-Kutta de ordem 3 RK-3. . .. . 49
4.2 Comparac¸a˜o de trajeto´rias da soluc¸a˜o exa´ta e do me´todo de
Runge-Kutta de ordem 3 para o PIV em estudo. . . . . . . . . 50
4.3 Comparac¸a˜o dos valores nume´ricos das trajeto´rias da soluc¸a˜o
exa´ta e do me´todo de Runge-Kutta de ordem 3 para o PIV em
estudo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.1 Co´digo fortran 77 mostrando a implementac¸a˜o do Me´todo de
integrac¸a˜o nume´rica de Runge-Kutta quarta Ordem . . . . . . 54
5.2 k1 e´ a inclinac¸a˜o em (x0, y0). Avanc¸a-se meio passo e calcula-
se yM1 com k1 atrave´s do me´todo de Euler. . . . . . . . . . . 55
5.3 k2 e´ a inclinac¸a˜o em (xM1, yM1). Volta-se para x0 e calcula-se
yM2, com k2. Usando-se (xM , yM2) calcula-se k3. . . . . . . . 55
5.4 Usando-se k3 e o me´todo de Euler encontra-se y1T . Em se-
guida, empregando-se (x1, y1T ) encontras-se k4. . . . . . . . . 56
5.5 Finalmente, volta-se para x0 e calcula-se a aproximac¸a˜o para
y1 empregando-se a inclina˜c¸a˜o me´dia, usando o me´todo de Eu-
ler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.1 Co´digo fortran 77 mostrando a implementac¸a˜o do Me´todo de
Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.2 Queda de um corpo de massa m sem resisteˆncia do a´r. . . . . 60
6.3 Co´digo fortran 77 mostrando a implementac¸a˜o do Me´todo de
Euler-Richardson . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.4 Queda de um corpo de massa m com resisteˆncia do a´r propor-
cional a v2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.5 Movimento de um proje´til em 2D. . . . . . . . . . . . . . . . . 63
6.6 Programa fonte para o ca´lculo das trajeto´rias de um proje´til
em 2D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.7 Gra´fico das trajeto´rias nume´ricas de um proje´til em 2D lanc¸ado
do n´ıvel do solo, comaˆngulo de 45o e para diferentes valores do
paraˆmetro k. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.1 Implementac¸a˜o computacional do Me´todo de Numerov. . . . . 69
8.1 Programa fonte em fortran 77 para o ca´lculo nume´rico da evoluc¸a˜o
temporal de um pacote de onda gaussiano atrave´s da equac¸a˜o de
Schro¨dinger empregando-se diferenc¸as finitas e o me´todo de passo
me´dio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
8.2 A subrotina INITIALDATA e´ invocada pelo programa principal
para gerar os dados inicias que sera˜o empregados em todo o processo. 76
v
N
.M
.S
ot
om
ay
or
8.3 A subrotina CLEANMATRIX e´ invocada pelo programa principal
para zerar inicialmente os vetores a serem empregados no programa. 76
8.4 A subrotina WAVEPACKET e´ invocada pelo programa prin-
cipal para construir o pacote de onda gaussiano inicial (em
t = 0). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.5 A subrotina EVOLVE e´ invocada pelo programa principal para
integrar nume´ricamente as equac¸o˜es diferenciais para as partes
real e imagina´ria do pacote de onda. . . . . . . . . . . . . . . 77
8.6 A func¸ao˜ V e´ empregada para definir o potencial. . . . . . . . 78
8.7 Gra´fico das partes real, imagina´ria e densidade de probabi-
lidade do pacote de onda gaussiano evoluindo em func¸a˜o do
tempo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
vi
N
.M
.S
ot
om
ay
or
Resumo
Sa˜o apresentados os me´todos ba´sicos para integrac¸a˜o nume´rica de func¸o˜es,
equac¸o˜es diferenciais ordina´rias (problemas de valor inicial), equac¸o˜es dife-
renciais de segunda ordem e, equac¸o˜es diferenciais parciais nume´ricas.
1
1Palavras chave: Me´todos Nume´ricos, Equac¸o˜es Diferenciais Ordina´rias, Linguagens e
Aplicativos Computacionais.
1
N
.M
.S
ot
om
ay
or
Cap´ıtulo 1
Integrac¸a˜o Nume´rica
1.1 Interpolac¸a˜o
Denomina-se interpolac¸a˜o o me´todo que permite construir um novo con-
junto de dados a partir de um conjunto discreto de dados pontuais previa-
mente conhecidos. Atrave´s da interpolac¸a˜o, pode-se construir uma func¸a˜o
que se ajuste aos dados pontuais existentes permitindo assim fazer previso˜es
em todo o intervalo do domı´nio. Dados discretos podem ser interpolados por
polinoˆmios um exemplos deste tipo de func¸o˜es sa˜o o polinoˆmio de Newton e
o polinoˆmio de Gregory-Newton.
1.1.1 Diferenc¸as Finitas
Uma diferenc¸a finita e´ uma expresa˜o matema´tica da forma:
f(x+ b)− f(x+ a). (1.1)
Uma diferenc¸a finita progressiva e´ definida por:
∆f(x) = f(x+ h)− f(x), (1.2)
Segundo a ordem as principais diferenc¸as ordina´rias ou finitas sa˜o:
∆0f(x) = f(x) (1.3)
∆1f(x) = f(x+ h)− f(x)
∆2f(x) = ∆1f(x+ h)−∆1f(x)
∆3f(x) = ∆2f(x+ h)−∆2f(x)
−−−−−−
2
N
.M
.S
ot
om
ay
or
∆0f(x) = f(x) = y0 (1.4)
∆1f(x) = f(x+ h)− f(x)
= y1 − y0
∆2f(x) = ∆1f(x+ h)−∆1f(x)
= [f(x+ h+ h)− f(x+ h)]− [f(x+ h)− f(x)]
= f(x+ 2h)− 2f(x+ h) + f(x)
= y2 − 2y1 + y0
∆3f(x) = ∆2f(x+ h)−∆2f(x)
= [∆1f(x+ 2h)−∆1f(x+ h)]− [∆1f(x+ h)−∆1f(x)]
= ∆1f(x+ 2h)− 2∆1f(x+ h) + ∆1f(x)
= [f(x+ 3h)− f(x+ 2h)]− 2[f(x+ 2h)− f(x+ h)]
+ [f(x+ h)− f(x)]
= f(x+ 3h)− 3f(x+ 2h) + 3f(x+ h)− f(x)
= y3 − 3y2 + 3y1 − y0
1.1.2 Polinoˆmio Interpolador de Gregory-Newton
Seja o polinoˆmio Pn(x),
Pn(x) = y0+N1y0(x−x0)+N2y0(x−x0)(x−x1)+...+Nny0(x−x0)(x−x1)...(x−xn−1)
(1.5)
onde,
• N1y0: Operador diferenc¸a dividida de ordem n;
• Nny0 = ∆
ny0
n!hn
;
• ∆ny0: Operador diferenc¸a finita.
Pn(x) = y0+
∆1y0
1!h1
(x−x0)+∆
2y0
2!h2
(x−x0)(x−x1)+...+∆
ny0
n!hn
(x−x0)(x−x1)...(x−xn−1)
(1.6)
Fazemos as seguintes aproximac¸o˜es:
P1(x) = y0 +
∆1y0
h
(x− x0) (1.7)
3
N
.M
.S
ot
om
ay
or
P2(x) = y0 +
∆1y0
h
(x− x0) + ∆
2y0
2h2
(x− x0)(x− x1) (1.8)
P3(x) = y0+
∆1y0
h
(x−x0)+∆
2y0
2h2
(x−x0)(x−x1)+∆
3y0
6h3
(x−x0)(x−x1)(x−x2).
(1.9)
Fazemos a mudanc¸a de varia´vel,
x− x0 = hu (1.10)
x− x1 = h(u− 1)
x− x2 = h(u− 2)
x− x3 = h(u− 3)
Com as novas varia´veis as aproximac¸o˜es ficam na forma,
P1(x) = y0 +∆
1y0u (1.11)
P2(x) = y0 +∆
1y0u+
∆2y0
2
u(u− 1) (1.12)
P3(x) = y0 +∆
1y0u+
∆2y0
2
u(u− 1) + ∆
3y0
6
u(u− 1)(u− 2). (1.13)
1.2 Integrac¸a˜o Nume´rica
Seja uma func¸a˜o f(x) integra´vel no intervalo [a, b], enta˜o∫ b
a
f(x) dx = F (b)− F (a) (1.14)
onde,
F
′
(x) = f(x). (1.15)
Quando a forma anal´ıtica de F (x) for de dif´ıcil obtenc¸a˜o ou se forem
conhecidos somente valores discretos de f(x), se faz necessa´rio o emprego de
me´todos nume´ricos para avaliar a integral de f(x). Esses me´todos consistem
em aproximar a func¸a˜o f(x) por um polinoˆmio interpolador e determinar
4
N
.M
.S
ot
om
ay
or
x a
0
=
y
0
x
1
y
1
x
2
y
2
x
3
y
3
x
4
y
4
x
5
x
y
5
x
6
y
6
x b
n
=
y
n
y
p(x)nf(x)
Figura 1.1: Considere o gra´fico de um conjunto de valores da grandeza y
em func¸a˜o da grandeza x. Se na˜o conhecemos o verdadeiro valor funcional
y = f(x) podemos aproximar a dependeˆncia de y em func¸a˜o de x por um
polinoˆmio interpolador Pn(x).
anal´ıticamente a integral desse polinoˆmio no intervalo [a, b]. Empregaremos
para o propo´sito os polinoˆmios de Gregory-Newton.
Inicialmente, vamos aproximar a func¸a˜o inco´gnita por um polinoˆmio inter-
polador de grau n = 1 de forma que,∫ b
a
f(x) dx ≈
∫ b=x1
a=x0
P1(x)dx (1.16)
∫ b=x1
a=x0
P1(x)dx =
∫ b=x1
a=x0
(
y0 +∆
1y0u
)
dx (1.17)
lembrando que,
x− x0 = hu, (1.18)
enta˜o,
dx = hdu (1.19)
fazemos a mudanc¸a de varia´vel nos limites de integrac¸a˜o. Assim si,
5
N
.M
.S
ot
om
ay
or
x −→ x0 ⇒ u→ 0, (1.20)
x −→ x1 ⇒ u→ 1 (1.21)
de forma que,∫ b=x1
a=x0
(
y0 +∆
1y0u
)
dx =
∫ 1
0
(
y0 +∆
1y0u
)
hdu (1.22)
=
∫ 1
0
y0hdu+
∫ 1
0
∆1y0hudu (1.23)= hy0u
∣∣∣∣1
0
+ h∆1y0
u2
2
∣∣∣∣1
0
(1.24)
= hy0 + h∆
1y0
1
2
= hy0 +
h
2
(y1 − y0) (1.25)
finalmente,
∫ b=x1
a=x0
P1(x)dx =
h
2
(
y0 + y1
)
(1.26)
conhecida como a Regra do Trape´zio.
A seguir vamos aproximar a func¸a˜o inco´gnita por um polinoˆmio interpolador
de grau n = 2, seguindo o procedimento anterior:∫ b
a
f(x) dx ≈
∫ b=x2
a=x0
P1(x)dx (1.27)
∫ b=x2
a=x0
P2(x)dx =
∫ b=x2
a=x0
[
y0 +∆
1y0u+
∆2y0
2
u(u− 1)
]
dx (1.28)
lembrando que,
x− x2 = h(u− 2), (1.29)
enta˜o,
dx = hdu (1.30)
assim,
6
N
.M
.S
ot
om
ay
or
∫ b=x2
a=x0
P2(x)dx =
∫ b=x2
a=x0
[
y0 +∆
1y0u+
∆2y0
2
u(u− 1)
]
hdu (1.31)
fazemos a mudanc¸a de varia´vel nos limites de integrac¸a˜o,
x− x0 = hu (1.32)
x− x2 = h(u− 2) (1.33)
Assim si,
x −→ x0 ⇒ u→ 0, (1.34)
x −→ x2 ⇒ u→ 2 (1.35)
de forma que,
∫ b=x2
a=x0
P2(x)dx =
∫ 2
0
[
y0 +∆
1y0u+
∆2y0
2
u(u− 1)
]
hdu (1.36)
integrando,
∫ 2
0
[
y0+∆
1y0u+
∆2y0
2
u(u−1)
]
hdu = h
∫ 2
0
[
y0+∆
1y0u+
1
2
∆2y0u
2−1
2
∆2y0u
]
du
(1.37)
h
∫ 2
0
[
y0+∆
1y0u+
1
2
∆2y0u
2−1
2
∆2y0u
]
du = h
[
y0u+∆
1y0
u2
2
+∆2y0
u3
6
−∆2y0u
2
4
]∣∣∣∣∣
2
0
(1.38)
fazendo a avaliac¸a˜o obtemos,
∫ b=x2
a=x0
P2(x)dx =
h
3
[
y0 + 4y1 + y2
]
(1.39)
Expressa˜o conhecida como a Regra 1/3 de Simpson.
7
N
.M
.S
ot
om
ay
or
1.2.1 Exerc´ıcio
Aproximar a func¸a˜o inco´gnita f(x) por um polinoˆmio interpolador de grau
n = 3 e encontrar a expressa˜o para
∫ b
a
f(x)dx.
Resposta
∫ b=x3
a=x0
P3(x)dx =
3
8
h
[
y0 + 3y1 + 3y2 + y3
]
(1.40)
Expressa˜o conhecida como a Regra 3/8 de Simpson.
1.3 Implementac¸a˜o computacional
1.3.1 Exemplo 1
Seja a func¸a˜o f(x) = 1/x utilize o me´todo do trape´zio para aproximar:
I =
∫ 6
1
1
x
dx. (1.41)
Segundo o me´todo do trape´zio a a´rea sob a curva no intervalo de x = 1 a
x = 6 pode ser aproximada pela expressa˜o:
I =
h
2
(y0 + y1) (1.42)
Empregamos h = 5 (distaˆncia entre ponto final e ponto inicial h = 6 − 1),
como passo de integrac¸a˜o, consideramos tambe´m y0 = 1/x0 = 1/1 e y1 =
1/x1 = 1/6, de forma que,
I =
5
2
(
1
1
+
1
6
)
=
35
12
= 2, 916 (1.43)
Devido ao erro de se aproximar uma func¸a˜o por um polinoˆmio de grau 1 e´
que se faz necessa´rio dividir o intervalo de integrac¸a˜o em va´rios subintervalos
menores para aplicar repetitivamente o me´todo do trape´zio a cada um destes
subintervalos aumentando considera´velmente a precisa˜o do resultado.
Consideremos,
I =
∫ b=xm
a=x0
f(x)dx (1.44)
8
N
.M
.S
ot
om
ay
or
Divida-se o intervalo [a, b] em m subintervalos iguais, em seguida aplica-se o
me´todo do trape´zio a cada par de pontos consecutivos da abscissa, de forma
que,
I =
∫ b=xm
a=x0
f(x)dx ≈ h
2
(y0 + y1) +
h
2
(y1 + y2) + ...+
h
2
(ym−1 + ym) (1.45)
I =
∫ b=xm
a=x0
f(x)dx ≈ h
2
(
y0 + 2y1 + 2y2 + ...+ 2ym−1 + ym
)
(1.46)
I =
∫ b=xm
a=x0
f(x)dx ≈ h
2
m∑
i=0
ciyi (1.47)
com c0 = cm = 1, e i = 1, 2, ...,m− 1.
1.3.2 Exemplo 2
Seja a func¸a˜o y = exp(x) sin(10x)+ 8, encontre o valor da integral da func¸a˜o
no intervalo de x = 0.4 a x = 2.0 pelo me´todo exa´to (por integrac¸a˜o direta),
e empregando a aproximac¸a˜o do me´todo do trape´zio sucessivas vezes.
Ca´lculo exa´to
I =
∫ 2.0
0.4
[exp(x) sin(10x) + 8]dx (1.48)
O intervalo sera´ dividido em m = 08 partic¸o˜es iguais, para calcular a integral
de f(x) no intervalo desejado sera´ aplicado o me´todo do trape´zio a cada
partic¸a˜o, assim a integral desejada sera´ a soma das a´reas dos oito trape´zios.
A figura 1.5 mostra os nove valores de x e y para a func¸a˜o f(x) obtidos pelo
co´digo computacional em fortran 77.
A seguir e´ apresentado um fluxograma que ilustra o algoritmo para o ca´lculo
da a´rea do exemplo proposto.
A seguir e´ apresentado na figura 1.7 o programa fonte redigido em fortran
77 para o ca´lculo aproximado da integral pedida. O programa usa como
dados de entrada os nove valores funcionais mostrados na tabela da Figura
1.5 esses dados esta˜o em um arquivo de texto denominado dados.dat. Apo´s
leitura dos dados nume´ricos o programa calcula a a´rea dos oito trape´zios e
as soma sequencialmente armazenando esses valores em uma varia´vel do tipo
acumulador (chamada integral no programa).
9
N
.M
.S
ot
om
ay
or
2
4
6
8
10
12
14
16
0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
y x x=exp( )*sin(10* )+8
y0
y1
y2
y3
y4
y5
y6
y7
y8
x
y
Figura 1.2: A curva em vermelho representa a forma funcional exata de
f(x) no intervalo [0.4 : 2.0], e´ necessa´rio calcular o valor da integral nesse
intervalo. Os pontos em preto representam nove valores funcionais yi para
correspondentes nove valores de xi, no intervalo escolhido, esses valores fo-
ram calculados com o co´digo computacional mostrado na Figura 1.4.
10
N
.M
.S
ot
om
ay
or
x : xF
<
>=
Início
Fim
Ler
x , y , x , m0 0 f
h=(x -x )/mf 0
x=x , y=y0 0
i=1
y=8+exp(x)sin(10x)
x = x + i h0
i=i+1
print
x, y
Figura 1.3: Fluxograma empregado para descrever o algoritmo do ca´lculo dos
nove valores funcionais (xi, yi) da func¸a˜o f(x).
11
N
.M
.S
ot
om
ay
or
Figura 1.4: Co´digo computacional ou programa fonte em linguagem fortran
77 empregado para o o ca´lculo dos nove valores funcionais (xi, yi) da func¸a˜o
f(x).
m x y
0 0.40000000000000002 6.8709833462630909
1 0.60000000000000009 7.4908717676112584
2 0.80000000000000004 10.201857270801881
3 1.0000000000000000 6.5211972999713232
4 1.2000000000000002 6.2185151746646303
5 1.4000000000000001 12.017110915969930
6 1.6000000000000001 6.5740055374670368
7 1.8000000000000000 3.4567919067612700
8 2.0000000000000000 14.745803672878749
Figura 1.5: Tabela que mostra os nove valores funcionais (xi, yi) da func¸a˜o
f(x) obtidos com o co´digo mostrado na Figura 1.4.
12
N
.M
.S
ot
om
ay
or
i : m-1
<
>=
Fim
i=1
Início
Ler
«dados.dat»
m
x = x(1)0
x = x(9)f
h = (x - x )/(m-1)f 0
integral=0.0
integral=integral+Ai
i=i+1
Figura 1.6: Algoritmo em fluxograma para o ca´lculo nume´rico da a´rea do
exerc´ıcio proposto.
13
N
.M
.S
ot
om
ay
or
Figura 1.7: Ca´lculo da integral.
14
N
.M
.S
ot
om
ay
or
Cap´ıtulo 2
Soluc¸a˜o Nume´rica de Equac¸o˜es
Diferenciais Ordina´rias EDOs
2.1 Equac¸o˜es diferenciais ordina´rias nume´ricas
Equac¸o˜es diferenciais ordina´rias nume´ricas corresponde a` parte da ana´lise
nume´rica que estuda a soluc¸a˜o nume´rica de equac¸o˜es diferenciais ordina´rias
(ODEs). E´ conhecido que muitas equac¸o˜es diferenciais na˜o podem ser resol-
vidas de forma anal´ıtica, neste caso e´ necessa´rio a procura por uma apro-
ximac¸a˜o da soluc¸a˜o exata. A seguir sera˜o apresentados alguns algoritmos
empregados para obter essas soluc¸o˜es aproximadas. Sa˜o exemplos deste al-
goritmos os me´todos de Taylor, Euler, Runge-Kutta, etc.
2.1.1 Equac¸a˜oes diferenciais ordina´rias
Uma equac¸a˜o diferencial ordina´ria (frequentemente chamada de ODE ou
EDO) e´ uma relac¸a˜o que envolve uma varia´vel independente, uma func¸a˜o
inco´gnita e as derivadas desta func¸a˜o desconhecida. Uma equac¸a˜o diferencial
ordina´ria de ordem n e´ uma relac¸a˜o do tipo,
F (x; y, y
′
, ..., yn) = 0 (2.1)
onde,
• y e´ uma func¸a˜o de x;
• y′ = dy
dx
e´ a primeira derivada em relac¸a˜o a x;
• yn = d
ny
dxn
e´ a n−e´sima derivada em relac¸a˜o a x [1].
15
N
.M
.S
ot
om
ay
or
Em geral, uma ODE de n−e´sima ordempossui n soluc¸o˜es linearmente
independentes. Mais ainda, qualquer combinac¸a˜o linear de soluc¸o˜es linear-
mente independentes e´ tambe´m uma soluc¸a˜o.
2.1.2 Problema de valor inicial
Denomina-se problema de valor inicial (PVI) a uma equac¸a˜o diferencial
ordina´ria associada a um valor espec´ıfico da func¸a˜o inco´gnita em um dado
ponto do domı´nio da soluc¸a˜o (condic¸o˜es iniciais).
2.2 Algoritmos nume´ricos para equac¸o˜es di-
ferenciais ordina´rias
2.3 Me´todo de Taylor
E´ poss´ıvel de aproximar o valor de uma func¸a˜o f(x), entorno de um certo
ponto particular x0, se e´ conhecido, tanto o valor da func¸a˜o f(x0), quanto os
valores das suas derivadas, nesse ponto. A aproximac¸a˜o e´ conhecida como
expansa˜o de Taylor da func¸a˜o entorno do ponto x0.
f(x) = f(x0)+
(x− x0)
1!
df
dx
∣∣∣∣
x=x0
+
(x− x0)2
2!
d2f
dx2
∣∣∣∣
x=x0
+...+
(x− x0)n
n!
dnf
dxn
∣∣∣∣
x=x0
(2.2)
considerando x− x0 = h a equac¸a˜o anterior pode se escrever:
y = f(x0 + h) = f(x0) +
h
1!
df
dx
∣∣∣∣
x=x0
+
h2
2!
d2f
dx2
∣∣∣∣
x=x0
+ ...+
hn
n!
dnf
dxn
∣∣∣∣
x=x0
(2.3)
ou ainda,
y = y0 +
h
1!
df
dx
∣∣∣∣
x=x0
+
h2
2!
d2f
dx2
∣∣∣∣
x=x0
+ ...+
hn
n!
dnf
dxn
∣∣∣∣
x=x0
(2.4)
onde h e´ o valor do domı´nio para o qual sera´ encontrada a aproximac¸a˜o da
func¸a˜o.
Para ilustrar a obtenc¸a˜o da aproximac¸a˜o atrave´s da expansa˜o de Taylor con-
sideremos apenas os treˆs primeiros termos da se´rie:
y = f(x0 + h) = f(x0) +
h
1!
df
dx
∣∣∣∣
x=x0
+
h2
2!
d2f
dx2
∣∣∣∣
x=x0
(2.5)
16
N
.M
.S
ot
om
ay
or
a derivada
d2f
dx2
pode-se obter sem dificuldade derivando
df
dx
mais uma vez.
Exemplo
Consideramos o seguinte problema de valor inicial:
dy
dx
= 2xy E. D.
y(x = 1) = 1 C. I.
}
x0 = 1, y0 = 1 (2.6)
Aplicamos o me´todo de Taylor para obter uma aproximac¸a˜o de y para x =
1, 1.
Para isto, tomamos h = 0, 1.
dy
dx
= 2xy, (2.7)
d2y
dx2
= 2x
dy
dx
+ 2y, (2.8)
quando h = 0, 1
dy
dx
∣∣∣∣
x=x0
= 2x0y0 = 2(1)(1) = 2, (2.9)
como
d2y
dx2
∣∣∣∣
x=x0
= 2x0
dy
dx
∣∣∣∣
x=x0
+ 2y0 (2.10)
d2y
dx2
∣∣∣∣
x=x0
= 2(1)(2) + 2(1) = 6 (2.11)
Assim, a equac¸a˜o 2.14 podemos escrever na forma
y1 = y0 + h
dy
dx
∣∣∣∣
x=x0
+
h2
2
d2y
dx2
∣∣∣∣
x=x0
(2.12)
y1 = (1) + (0, 1)(2) +
(0, 1)2
2
(6) (2.13)
de onde y1 = 1, 23.
17
N
.M
.S
ot
om
ay
or
2.4 Me´todo de Euler
O me´todo de Euler e´ o me´todo nume´rico mais elementar de resoluc¸a˜o de
equac¸o˜es diferenciais ordina´rias. O me´todo de Euler tambe´m e´ conhecido
como me´todo do Trape´zio ou me´todo de Heun.
Seja uma expansa˜o da soluc¸a˜o exata y(x), em se´rie de Taylor, em torno do
valor inicial x0
y = f(x0 + h) = f(x0) +
h
1!
df
dx
∣∣∣∣
x=x0
+
h2
2!
d2f
dx2
∣∣∣∣
x=x0
+
h3
3!
d3f
dx3
∣∣∣∣
x=x0
+ ... (2.14)
Truncando a se´rie apo´s o termo de derivada primeira, sendo x1 = x0+h e y1
uma aproximac¸a˜o de f(x1), tem-se:
f(x0 + h) = f(x0) + h
dy
dx
∣∣∣∣
x=x0
(2.15)
y1 = y0 + hf(x0, y0) (2.16)
onde,
f(x0, y0) =
dy
dx
∣∣∣∣
x=x0
(2.17)
Para fazer a previsa˜o de y2 = f(x2), com x2 = x1 + h,
f(x1 + h) = f(x1) + h
dy
dx
∣∣∣∣
x=x1
(2.18)
y2 = y1 + hf(x1, y1) (2.19)
onde,
f(x1, y1) =
dy
dx
∣∣∣∣
x=x1
(2.20)
Da mesma forma,
y3 = y2 + hf(x2, y2) (2.21)
onde,
f(x2, y2) =
dy
dx
∣∣∣∣
x=x2
(2.22)
18
N
.M
.S
ot
om
ay
or
As sucessivas aproximac¸o˜es para y podem, enta˜o, ser obtidas pela fo´rmula
de recorreˆncia.
yi+1 = yi + hf(xi, yi) (2.23)
com,
f(xi, yi) =
dy
dx
∣∣∣∣
x=xi
(2.24)
que e´ conhecido como Me´todo de Euler cuja interpretac¸a˜o geome´trica e´ mos-
trada na figura 2.1. O esquema mostra uma func¸a˜o y = f(x) com valores
conhecidos: (x0, y0) e dy/dx avaliada em x = x0. Considerando-se que a
forma funcional exa´ta e´ desconhecida, deseja-se encontrar uma aproximac¸a˜o
para o valor y(x1) com x1 muito pro´ximo de x0. Empregando-se a definic¸a˜o
da derivada de uma func¸a˜o pode se obter uma aproximac¸a˜o para y1 sendo
y1 = y0 + htanθ, esta expressa˜o e´ a mesma dada pela fo´rmula de Euler
y1 = y0+ hdy/dx. A equac¸a˜o 2.15 e´ usada para encontrar uma aproximac¸a˜o
de y para x = x0+ h, para encontrar aproximac¸o˜es consecutivas e´ necessa´rio
repetir a aplicac¸a˜o da fo´rmula de Euler como mostrado na figura 2.2.
Exemplo
A seguir vamos analisar a soluc¸a˜o exa´ta e a soluc¸a˜o nume´rica do problema
de valor inicial (PVI) seguinte:
dy
dx
= x− 2y + 1 (2.25)
Primeiramente, mostramos a soluc¸a˜o exata da equac¸a˜o diferencial,
dy
dx
+ 2y = x+ 1 (2.26)
e2x
[dy
dx
+ 2y] = e2x(x+ 1) (2.27)
d
dx
[
e2xy] = e2x(x+ 1) (2.28)
d
[
e2xy] = e2x(x+ 1)dx (2.29)
e2xy =
∫
(x+ 1)e2xdx (2.30)
19
N
.M
.S
ot
om
ay
or
Figura 2.1: Interpretac¸a˜o geome´trica do Me´todo de Euler. O esquema mostra
uma func¸a˜o y = f(x) com valores conhecidos: (x0, y0) e dy/dx avaliada em
x = x0. Considerando-se que a forma funcional exa´ta e´ desconhecida, deseja-
se encontrar uma aproximac¸a˜o para o valor y(x1) com x1 muito pro´ximo de
x0. Empregando-se a definic¸a˜o da derivada de uma func¸a˜o pode se obter uma
aproximac¸a˜o para y1 sendo y1 = y0 + htanθ, esta expressa˜o e´ a mesma dada
pela fo´rmula de Euler y1 = y0 + hdy/dx.
Integrando por partes o lado direito,
e2xy =
1
2
(x+ 1)e2x − 1
2
∫
e2xdx (2.31)
e2xy =
1
2
(x+ 1)e2x − 1
4
e2x + C (2.32)
y =
1
2
(x+ 1)− 1
4
+ C e−2x (2.33)
20
N
.M
.S
ot
om
ay
or
Figura 2.2: Representac¸a˜o esquema´tica da aplicac¸a˜o recurssiva do Me´todo
de Euler para a soluc¸a˜o nume´rica de uma EDO. Dado o valor da func¸a˜o e
o da sua derivada no ponto (x0, y0) e´ poss´ıvel fazer a previssa˜o do valor da
func¸a˜o no ponto x1. Apo´s a determinac¸a˜o de (x1, y1 e dy/dx em x1 podem ser
empregados estes valores para a determinac¸a˜o de y2 e assim sucessivamente.
y =
1
2
x+
1
4
+ C e−2x (2.34)
As condic¸o˜es iniciais po PVI sa˜o:
(x0, y0) = (0, 1) (2.35)
Substitu´ındo esses valores na EDO 2.34 obtemos,
C =
3
4
(2.36)
de forma que,
y(x) =
1
2
x+
1
4
+
3
4
e−2x (2.37)
e´ a func¸a˜o ingo´gnita que satisfaz o problema de valor inicial 2.25.
2.4.1 Soluc¸a˜o Exa´ta do PVI do exemplo
A seguir apresentamos o algoritmo em fluxograma e o co´digo computacional
em fortran 77 para a avaliac¸a˜o da soluc¸a˜o exata do problema de valor incial
21
N
.M
.S
ot
om
ay
or
proposto. A figura 2.3 mostra um fluxograma para a representac¸a˜o da soluc¸a˜o
exa´ta do problema 2.37.
Figura 2.3: Fluxograma do Algoritmo para a soluc¸a˜o exa´ta do PIV 2.37
A implementac¸a˜o computacional do algoritmo 2.3 e´ mostrado na figura . O
co´digo fonte foi redigido em linguagem fortran 77.
2.4.2 Soluc¸a˜o do PVI atrave´s do Me´todo de Euler
O algoritmo para a resoluc¸a˜o do problema proposto no item anterior e´ mos-
trado na forma de fluxograma na figura 2.5,
22
N
.M
.S
ot
om
ay
or
Figura 2.4: Programa fonte em FORTRAN 77 para o ca´lculo exa´to da func¸a˜o
2.37.
A implementac¸a˜o computacional do algoritmo mostrado na figura 2.5 foi
realizada em linguagem de programac¸a˜o Fortran 77. O co´digo do programa
fonte e´ mostrado na figura 2.6 a seguir:
O gra´fico mostrado na figura 2.7 representa a soluc¸a˜o do problema 2.37, ava-
liado entre os pontos x0 = 0 e xf = 1, o passo e´ h = 0, 01. A curva na cor
vermelha representa a soluc¸a˜o exata da equac¸a˜o e a curva verde represen-
tam a soluc¸a˜o nume´rica. Pode-se determinar que quanto maior for o passo,
maior sera´ oerro encontrado. A diferenc¸a entre as curvas vermelha e verde
representa o erro entre a soluc¸a˜o exata e a soluc¸a˜o nume´rica.
O me´todo de Euler e´ de passo simples por que a aproximac¸a˜o yi+1 e calculada
a partir somente do valor yi do passo anterior, sendo φ a func¸a˜o incremento.
um Me´todo de passo simples e´ definido na forma:
23
N
.M
.S
ot
om
ay
or
Figura 2.5: Fluxograma do Algoritmo para o Me´todo de Euler
yi+1 = yi + hφ(xi, yi;h) (2.38)
24
N
.M
.S
ot
om
ay
or
Figura 2.6: Programa fonte em FORTRAN 77 que implementa o algoritmo
para o Me´todo de Euler.
25
N
.M
.S
ot
om
ay
or
Figura 2.7: Gra´fico da soluc¸a˜o do PVI do exemplo, sao˜ comparadas a soluc¸a˜o
exata e as soluc¸o˜es aproximadas com diferentes valores do passo h = (xf =
x0)/n. A curva em vermelho representa a soluc¸a˜o exa´ta com n = 20, a curva
em verde representa a soluc¸a˜o aproximada obtida pela aplicac¸a˜o do Me´todo de
Euler com n = 20, a curva em azul representa a soluc¸a˜o aproximada obtida
pela aplicac¸a˜o do Me´todo de Euler com n = 40 e a curva em rouxo representa
a soluc¸a˜o aproximada obtida pela aplicac¸a˜o do Me´todo de Euler com n = 80.
Observa-se que quanto menor o passo a soluc¸a˜o nume´rica aproxima-se mais
da soluc¸a˜o exa´ta.
26
N
.M
.S
ot
om
ay
or
Cap´ıtulo 3
Os Me´todos de Runge-Kutta
de primeira e segunda ordem
3.1 Definic¸a˜o
Em ana´lise nume´rica os me´todos de Runge-Kutta sa˜o uma famı´lia im-
portante de me´todos iterativos impl´ıcitos e expl´ıcitos para a aproximac¸a˜o de
soluc¸o˜es de equac¸o˜es diferenciais ordina´rias. Estas te´cnicas foram desenvol-
vidas por volta de 1900 pelos matema´ticos alema˜es Carl David Tolme´ Runge
e Martin Wilhelm Kutta.
Consideremos o problema de valor inicial,
dy
dx
= f(x, y) (3.1)
Eles sa˜o me´todos de passo simples e apresentam a forma geral.
yi+1 = yi + hφ(xi , yi ; h) (3.2)
onde
φ(xi , yi ; h) = b1k1 + b2k2 + ...+ bsks (3.3)
ou,
yi+1 = yi + h(b1k1 + b2k2 + ...+ bsks) (3.4)
de forma compacta,
27
N
.M
.S
ot
om
ay
or
yi+1 = yi + h
s∑
i=1
biki (3.5)
com,
k1 = f(xi, yi), (3.6)
k2 = f(xi + c2h , yi + a21hk1), (3.7)
k3 = f(xi + c3h , yi + h(a31k1 + a32k2)), (3.8)
... (3.9)
ks = f(xi + csh , yi + h(as1k1 + as2k2 + ...+ as,s−1ks−1)). (3.10)
Sendo a e c constantes definidas para cada me´todo particular.
Para especificar um me´todo part´ıcular e´ necessa´rio escolher:
• o inteiro s (nu´mero de esta´gios, ordem do me´todo);
• os coeficientes aij com i > j, para i = 2, 3, ..., s e j = 1, 2, ..., s− 1;
• os coeficiente bi (para i = 1, 2, ..., s)
• os coeficientes ci (para i = 2, 3, ..., s).
3.1.1 Me´todo de Runge-Kutta de primeira ordem s = 1
Para este tipo particular o nu´mero de esta´gios s = 1, de forma que a equac¸a˜o
4.2 fornece,
yi+1 = yi + hb1k1 (3.11)
yi+1 = yi + hb1f(xi, yi). (3.12)
Por outro lado a expansa˜o em se´rie de Taylor de ordem 1 fornece,
yi+1 = yi + h
dy
dx
∣∣∣∣
x=xi
(3.13)
mas em acordo com a definic¸a˜o 3.1,
dy
dx
∣∣∣∣
x=xi
= f(xi, yi) = (3.14)
28
N
.M
.S
ot
om
ay
or
de forma que,
yi+1 = yi + hf(xi, yi) (3.15)
da comparac¸a˜o das duas equac¸o˜es 3.12 e 3.15, determina-se que,
b1 = 1 (3.16)
Este e´ o chamado me´todo de Runge-Kutta de primeira ordem RK-1 e e´
equivalente ao Me´todo de Euler.
3.1.2 Me´todos de Runge-Kutta de Segunda Ordem
Para este tipo particular o nu´mero de esta´gios s = 2, de forma que a equac¸a˜o
4.2 fornece,
yi+1 = yi + h[b1k1 + b2k2] (3.17)
yi+1 = yi + h
[
b1f(xi , yi) + b2f(xi + c2h , yi + a21hk1)
]
(3.18)
yi+1 = yi + h b1f(xi , yi) + h b2f
[
xi + c2h , yi + a21hf(xi, yi)
]
(3.19)
para,
f
[
xi + c2h , yi + a21hf(xi , yi)
]
(3.20)
comparando com,
f
(
xi +∆x , yi +∆y
)
(3.21)
fazendo expansa˜o em se´rie de Taylor de func¸a˜o de duas varia´veis obtemos,
f(x+∆x, y +∆y) = f(xi, yi) + c2h
∂f(xi, yi)
∂x
+ a21hf(xi, yi)
∂f(xi, yi)
∂y
+O2
(3.22)
substitu´ındo em 3.19,
29
N
.M
.S
ot
om
ay
or
yi+1 = yi+hb1f(xi, yi)+hb2
[
f(xi, yi)+c2 h
∂f(xi, yi)
∂x
+a21hf(xi, yi)
∂f(xi, yi)
∂y
]
(3.23)
yi+1 = yi+h
[
b1f(xi, yi)+b2f(xi, yi)
]
+b2c2h
2∂f(xi, yi)
∂x
+b2a21h
2f(xi, yi)
∂f(xi, yi)
∂y
(3.24)
yi+1 = yi + h
[
b1 + b2
]
f(xi, yi) + b2c2h
2∂f(xi, yi)
∂x
+ b2a21h
2f(xi, yi)
∂f(xi, yi)
∂y
(3.25)
Vamos empregar agora a expansa˜o em se´rie de Taylor de uma func¸a˜o de uma
varia´vel pro´ximo do ponto x0,
y1 = y0 + h
dy
dx
+
h2
2
d2y
dx2
+ ...+O(h3) (3.26)
considerando que para o nosso problema de valor inicial PVI definimos,
dy
dx
= f(x, y) (3.27)
e,
d2y
dx2
=
d
dx
f(x, y) (3.28)
podemos re-escrever 3.26, ate´ segunda ordem, da forma seguinte,
yi+1 = yi + hf(xi, yi) +
h2
2
d
dx
f(xi, yi) (3.29)
entretanto,
d
dx
f(xi, yi) =
[
∂f(xi, yi)
∂x
+
∂f(xi, yi)
∂y
dy
dx
]
(3.30)
usando 4.12 e substitu´ındo 3.30 em 3.29 obtemos,
yi+1 = yi + hf(xi, yi) +
h2
2
[
∂f(xi, yi)
∂x
+ f(xi, yi)
∂f(xi, yi)
∂y
]
(3.31)
ou de forma equivalente,
30
N
.M
.S
ot
om
ay
or
yi+1 = yi + hf(xi, yi) +
h2
2
[
∂f(xi, yi)
∂x
]
+
h2
2
[
f(xi, yi)
∂f(xi, yi)
∂y
]
(3.32)
comparando 3.32 com 3.25 indicada novamente a seguir,
yi+1 = yi + h
[
b1 + b2
]
f(xi, yi) + b2c2h
2∂f(xi, yi)
∂x
+ b2a21h
2f(xi, yi)
∂f(xi, yi)
∂y
concluimos:
b1 + b2 = 1 (3.33)
b2c2 =
1
2
(3.34)
b2a2,1 =
1
2
(3.35)
Estas constantes correspondem ao Me´todo de Runge-Kutta de segunda
ordem. Temos um conjunto de treˆs equac¸o˜es lineares alge´bricas com quatro
inco´gnitas, de acordo com isto ha´ inumeras possibilidades para a escolha
destas constantes. Existira´ um me´todo de Runge-Kutta de segunda ordem
para cada escolha do conjunto de constantes.
A seguir sa˜o apresentados alguns exemplos de casos part´ıculares dos me´todos
de Runge-Kutta de segunda ordem.
3.1.3 Me´todo de Heun (Karl Heun)
Chamado tambe´m Me´todo de Euler Melhorado ou Me´todo de Euler Modifi-
cado, e´ o exemplo expl´ıcito da aplicac¸a˜o da regra do trape´zio. Para o caso
part´ıcular da seguinte escolha das constantes: c2 = 1, b1 =
1
2
, b2 =
1
2
e
a2,1 = 1, substitu´ımos estes valores na equac¸a˜o 3.19 obtendo-se,
yi+1 = yi + b1hf(xi , yi) + b2hf
[
xi + c2h , yi + a21hf(xi, yi)
]
(3.36)
temos enta˜o,
yi+1 = yi +
h
2
f(xi , yi) +
h
2
f
[
xi + h , yi + hf(xi, yi)
]
(3.37)
31
N
.M
.S
ot
om
ay
or
yi+1 = yi +
h
2
[
f(xi , yi) + f
[
xi + h , yi + hf(xi, yi)
]]
(3.38)
Na expressa˜o 3.38 fazemos a identificac¸a˜o e interpretac¸a˜o dos seguintes ter-
mos,
f(xi, yi) =
dy
dx
∣∣∣∣
x=xi
(3.39)
e´ a inclinac¸a˜o no ponto (xi, yi)
f
[
xi + h, yi + hf(xi, yi)
]
=
dy
dx
∣∣∣∣
x=xi+h
(3.40)
e´ a inclinac¸a˜o no ponto
[
xi + h, yi + hf(xi, yi)
]
A equac¸a˜o 3.38 pode re-escrever da forma:
yi+1 = yi +
h
2
[
dy
dx
∣∣∣∣
x=xi
+
dy
dx
∣∣∣∣
x=xi+h
]
(3.41)
Pode-se interpretar a equac¸a˜o 3.41 como a escolha de uma inclinac¸a˜o me´dia
para a melhor previsa˜o do ponto yi+1.
yi+1 = yi + h
[ dy
dx
∣∣∣∣
x=xi
+
dy
dx
∣∣∣∣
x=xi+h
2
]
(3.42)
yi+1 = yi + h Φ (3.43)
O algoritmo deste me´todo particular indica que e´ necessa´rio conhecer as
derivadas da func¸a˜o nos pontos (xi, yi) e (xi+1, yi+1), em seguida e´ calculada
a me´dia aritme´tica destas inclinac¸o˜es. Volta-se para o ponto (xi, yi) e a partir
dele e´ calculada uma melhor aproximac¸a˜o de yi+1 empregando-sea fo´rmula
3.43.
32
N
.M
.S
ot
om
ay
orq
x0
x1
y0
y1
y1x h0+
h
y f x= ( )
dx0y0
q
x0
x1
y0
y1
y1
x h0+
h
y f x= ( )
dx1y1
x0
x1
y0
y1
y1
x h0+
h
y f x= ( )
(dx0y0+dx1y1)/2
(a) (b) (c)
Figura 3.1: Esquema que mostra a interpretac¸a˜o geome´trica do Me´todo de
Heun
3.1.4 Me´todo de Runge-Kutta de segunda ordem (Ponto
Me´dio)
Para o caso part´ıcular da seguinte escolha das constantes: c2 =
1
2
, b1 = 0
, b2 = 1 e a2,1 =
1
2
, substitu´ımos estes valores na equac¸a˜o 3.19 obtendo-se,
yi+1 = yi + b1hf(xi , yi) + b2hf
[
xi + c2h , yi + a21hf(xi, yi)
]
(3.44)
temos enta˜o,
yi+1 = yi + h f
[
xi +
h
2
, yi +
h
2
f(xi, yi)
]
(3.45)
Na expressa˜o 3.45 fazemos a identificac¸a˜o e interpretac¸a˜o dos seguintes ter-
mos,
f(xi, yi) =
dy
dx
∣∣∣∣
x=xi
(3.46)
e´ a inclinac¸a˜o no ponto (xi , yi)
f
[
xi +
h
2
, yi +
h
2
f(xi, yi)
]
=
dy
dx
∣∣∣∣∣
x=xi+
h
2
(3.47)
33
N
.M
.S
ot
om
ay
or
e´ a inclinac¸a˜o no ponto me´dio
[
xi +
h
2
, yi +
h
2
f(xi, yi)
]
A equac¸a˜o 3.45 pode re-escrever da forma:
yi+1 = yi + h
dy
dx
∣∣∣∣
x=xi+
h
2
(3.48)
ou,
yi+1 = yi + h Φpm (3.49)
O algoritmo deste me´todo particular indica que e´ necessa´rio calcular a
derivada da func¸a˜o no ponto xi+ h/2, em seguida e´ realizado o avanc¸o ate´ o
ponto xi + h e calcula-se a aproximac¸a˜o para y1 empregando-se para isto a
inclinac¸a˜o computada para o ponto xi + h/2.
34
N
.M
.S
ot
om
ay
or
i=i+1
Início
x:xF
<
>=
Fim
Ler
x,y,x ,n0 0 f
h=(x -x)/nf 0
x=x,y=y0 0
i=1
dx0y0=x-2.0*y+1.0
x=x +i*h0
ylast=y
y=y+h*dx0y0
dx1y1=x-2.0*y+1.0
y=ylast+h*(dx0y0+dx1y1)/2
Print
x,y
Figura 3.2: Fluxograma que explica a implementac¸a˜o computacional do
Me´todo de Heun
35
N
.M
.S
ot
om
ay
or
Figura 3.3: Programa fonte em Fortran 77, que implementa o Me´todo de
integrac¸a˜o nume´rica de Heun.
36
N
.M
.S
ot
om
ay
or
0.75
0.8
0.85
0.9
0.95
1
0 0.1 0.2 0.3 0.4 0.5 0.6
"trayexato.dat"
"trayeuler.dat"
"trayheun.dat"
Figura 3.4: Comparac¸a˜o dos ca´lculos da soluc¸a˜o exa´ta do PIV e dos Me´todos
de Euler e Heun (RK-2).
37
N
.M
.S
ot
om
ay
or
x y (Exato) y (Euler) y (Heun)
0.0000000000000000 1.0000000000000000 1.0000000000000000 1.0000000000000000
2.99999999999999989E-002 0.97132340018818653 0.96999999999999997 0.97135000000000005
5.99999999999999978E-002 0.94519032753786814 0.94269999999999998 0.94524043000000002
8.99999999999999967E-002 0.92145265855845404 0.91793800000000003 0.92152343697400008
0.12000000000000000 0.89997089579991507 0.89556172000000001 0.90005977294211326
0.14999999999999999 0.88061366551128839 0.87542801680000004 0.88071829415688230
0.17999999999999999 0.86325724455327324 0.85740233579200009 0.86337548943695175
0.20999999999999999 0.84778511486129260 0.84135819564448011 0.84791503595172113
0.23999999999999999 0.83408754385460560 0.82717670390581133 0.83422738085933101
0.27000000000000002 0.82206118928049221 0.81474610167146266 0.82220934729331796
0.29999999999999999 0.81160872707051990 0.80396133557117488 0.81176376328084687
0.32999999999999996 0.80263850086877442 0.79472365543690437 0.80279911225790157
0.35999999999999999 0.79506419196997880 0.78694023611069008 0.79522920392449170
0.39000000000000001 0.78880450847891770 0.78052382194404868 0.78897286425608626
0.41999999999999998 0.78378289257180978 0.77539239262740578 0.78395364355638208
0.44999999999999996 0.77992724480544939 0.77146884906976143 0.78009954150140060
0.47999999999999998 0.77716966448133407 0.76868071812557570 0.77734274818601912
0.51000000000000001 0.77544620512980877 0.76695987503804119 0.77561940024159282
0.54000000000000004 0.77469664423370432 0.76624228253575877 0.77486935114753208
0.56999999999999995 0.77486426636222783 0.76646774558361319 0.77503595491074573
0.59999999999999998 0.77589565893415158 0.76757968084859640 0.77606586233494035
Figura 3.5: Comparac¸a˜o dos valores nume´ricos da soluc¸a˜o exa´ta do PIV e
dos Me´todos de Euler e Heun (RK-2).
38
N
.M
.S
ot
om
ay
or
Figura 3.6: Programa fonte em Fortran 77, que implementa o Me´todo de
integrac¸a˜o nume´rica RK-2 Ponto Me´dio.
39
N
.M
.S
ot
om
ay
or
q
x0
x1
y0
y1
y1
x h0+
h
y f x= ( )
dx dy0 0
x0
x1xM
y0
yM
y1
y1
x h0+x h/20+
y f x= ( )
dx dyM M
dx dyM M
x0
x1
y0
y1
y1
y1
x h0+
y f x= ( )
(a) (b) (c)
Figura 3.7: Interpretac¸a˜o geome´trica do Me´todo de integrac¸a˜o nume´rica RK-
2 Ponto Me´dio.
40
N
.M
.S
ot
om
ay
or
0.75
0.8
0.85
0.9
0.95
1
0 0.1 0.2 0.3 0.4 0.5 0.6
"trayeuler06.dat"
"trayexato06.dat"
"trayheun06.dat"
"traymid06.dat"
Figura 3.8: Comparac¸a˜o dos valores nume´ricos da soluc¸a˜o exa´ta do PIV e
dos Me´todos de Euler, Heun e Midpoint (RK-2).
41
N
.M
.S
ot
om
ay
or
Cap´ıtulo 4
O Me´todo de Runge-Kutta de
Terceira ordem
4.1 Resumo de teoria ba´sica
yi+1 = yi + h(b1k1 + b2k2 + ...+ bsks) (4.1)
yi+1 = yi + h
(
b1k1 + b2k2 + b3k3
)
(4.2)
com os coefientes dados por:
k1 = f(xi, yi), (4.3)
k2 = f(xi + c2h , yi + a21hk1), (4.4)
k3 = f
[
xi + c3h , yi + h(a31k1 + a32k2)
]
. (4.5)
de forma que a equac¸a˜o 4.2 pode-se escrever como,
yi+1 = yi + hb1k1 + hb2f
[
xi + c2h , yi + a21hk1
]
+
hb3f
[
xi + c3h , yi + h(a31k1 + a32k2)
] (4.6)
(4.7)
Lembramos a expansa˜o em se´rie de Taylor de uma func¸a˜o de duas varia´veis
ate´ terceira ordem,
42
N
.M
.S
ot
om
ay
or
f(x+∆x, y +∆y) = f(xi, yi) + (∆x)
∂f(xi, yi)
∂x
+ (∆y)
∂f(xi, yi)
∂y
+
(∆x)2
2!
∂2f(xi, yi)
∂x2
+ (∆x)(∆y)
∂2f(xi, yi)
∂y∂x
+
(∆y)2
2!
∂2f(xi, yi)
∂y2
+
(∆x)3
3!
∂3f(xi, yi)
∂x3
+
(∆x)2(∆y)
2
∂3f(xi, yi)
∂x∂x∂y
+
(∆x)(∆y)2
2
∂3f(xi, yi)
∂x∂y∂y
+
(∆y)3
3!
∂3f(xi, yi)
∂y3
+O(∆4).
(4.8)
A seguir vamos expandir f [xi+ c2h , yi+a21hk1] e f [xi+ c3h , yi+h(a31k1+
a32k2)] ate´ segunda ordem usando a expressa˜o 4.8 para logo substituir esses
resultados na equac¸a˜o 4.6 (fica como exerc´ıcio para o aluno a verificac¸a˜o).
yi+1 = yi + hb1f + hb2f + h
2b2c2
df
dx
+ h2b2a21f
df
dy
+
h3b2c
2
2
2
d2f
dx2
+
h3b2c2a21f
∂2f
∂x∂y
+
h3b2a
2
21f
2
2
∂2f
∂y2
+ hb3f + h
2b3c3
df
dx
+ h2b3a31f
df
dy
+
h3b3a32c2
df
dx
df
dy
+ h3b3a32a21f
(
df
dy
)2
+
h3b3c
2
3
2
∂2f
∂x2
+ h3b3c3a31f
∂2f
∂x∂y
+
h3b3c3a32f
∂2f
∂x∂y
+
h3b3a
2
31
2
f 2
∂2f
∂y2
+ h3b3a31a32f
2∂
2f
∂y2
+
h3b3a
2
32
2
f 2
∂2f
∂y2
+ ...
(4.9)
Organizando termos obtemos,
43
N
.M
.S
ot
om
ay
or
yi+1 = yi + h
(
b1 + b2 + b3
)
f + h2
(
b2c2 + b3c3
)
df
dx
+
h2
(
b2a21 + b3a31 + b3a32
)
f
df
dy
+ h3
(
b2c2a21 + b3c3a31 + b3c3a32
)
f
∂2f
∂x∂y
+
h3
2
(
b2c
2
2 + b3c
2
3
)
∂2f
∂x2
+ h3b3a32c2
∂f
∂x
∂f
∂y
+ h3b3a32a21f
(
∂f
∂y
)2
+
h3
2
(
b2a
2
21 + b3a
2
31 + 2b3a31a32 + b3a
2
32
)
f 2
∂2f
∂y2
+ ...
(4.10)
Guardemos a equac¸a˜o 4.10 por um momento, faremos agora a expansa˜o de
uma func¸a˜o de uma varia´vel ate´ terceira ordem,
y1 = y0 + h
dy
dx
+
h2
2
d2y
dx2
+
h3
6
d3y
dx3
+ ...+O(h4) (4.11)
considerando que para o nosso problema de valor inicial PVI definimos,
dy
dx
= f(x, y) (4.12)
d2y
dx2
=
d
dx
f(x, y) =
[
∂f(x, y)
∂x
+
∂f(x, y)
∂y
dy
dx
]
(4.13)
d2y
dx2
=
[
∂f(x, y)
∂x+
∂f(x, y)
∂y
dy
dx
]
(4.14)
d3y
dx3
=
d
dx
(
d2y
dx2
)
(4.15)
d3y
dx3
=
∂2
∂x2
f(x, y) + 2f(x, y)
∂2
∂x ∂y
f(x, y) +
∂
∂x
f(x, y)
∂
∂y
f(x, y)+[
f(x, y)
]2
∂2
∂y2
f(x, y) + f(x, y)
[
∂
∂y
f(x, y)
]2
(4.16)
44
N
.M
.S
ot
om
ay
or
Prova
d3y
dx3
=
d
dx
(
d2y
dx2
)
=
d
dx
[
∂f(x, y)
∂x
+
∂f(x, y)
∂y
dy
dx
]
(4.17)
d3y
dx3
=
d
dx
[
∂f(x, y)
∂x
]
+
d
dx
[
∂f(x, y)
∂y
dy
dx
]
(4.18)
d3y
dx3
=
∂2f
∂y∂x
dy
dx
+
∂2f
∂x2
+
df
dx
[
df
dy
]
+ f
d
dx
[
df
dy
]
(4.19)
d3y
dx3
=
∂2f
∂y∂x
dy
dx
+
∂2f
∂x2
+
[
∂f
∂x
+ f
∂f
∂y
]
∂f
∂y
+ f
[
d
dx
[
∂f
∂y
]]
(4.20)
d3y
dx3
=
∂2f
∂y∂x
dy
dx
+
∂2f
∂x2
+
∂f
∂x
∂f
∂y
+ f
∂f
∂y
∂f
∂y
+ f
[[
∂
∂y
(
df
dy
)]
dy
dx
+
(
∂
∂x
df
dy
)]
(4.21)
d3y
dx3
=
∂2f
∂y∂x
dy
dx
+
∂2f
∂x2
+
∂f
∂x
∂f
∂y
+ f
(
∂f
∂y
)2
+ f 2
∂2f
∂y2
+ f
∂2f
∂x∂y
(4.22)
d3y
dx3
= f
∂2f
∂y∂x
+
∂2f
∂x2
+
∂f
∂x
∂f
∂y
+ f
(
∂f
∂y
)2
+ f 2
∂2f
∂y2
+ f
∂2f
∂x∂y
(4.23)
d3y
dx3
= 2f
∂2f
∂y∂x
+
∂2f
∂x2
+
∂f
∂x
∂f
∂y
+ f
(
∂f
∂y
)2
+ f 2
∂2f
∂y2
(4.24)
que e´ igual a:
d3y
dx3
=
∂2
∂x2
f(x, y) + 2f(x, y)
∂2
∂x ∂y
f(x, y) +
∂
∂x
f(x, y)
∂
∂y
f(x, y)+[
f(x, y)
]2
∂2
∂y2
f(x, y) + f(x, y)
[
∂
∂y
f(x, y)
]2
(4.25)
45
N
.M
.S
ot
om
ay
or
Voltando para,
y1 = y0 + h
dy
dx
+
h2
2
d2y
dx2
+
h3
6
d3y
dx3
(4.26)
substu´ındo os valores encontrados obtemos,
y1 = y0+hf+
h2
2
[
∂f
∂x
+f
∂f
∂y
]
+
h3
6
[
2f
∂2f
∂y∂x
+
∂2f
∂x2
+
∂f
∂x
∂f
∂y
+f
(
∂f
∂y
)2
+f 2
∂2f
∂y2
]
(4.27)
ou de forma compacta,
y1 = y0 + hf +
h2
2
∂f
∂x
+
h2
2
f
∂f
∂y
+
h3
3
f
∂2f
∂y∂x
+
h3
6
∂2f
∂x2
+
h3
6
∂f
∂x
∂f
∂y
+
h3
6
f
(
∂f
∂y
)2
+
h3
6
f 2
∂2f
∂y2
OK
(4.28)
Comparamos agora as equac¸o˜es 4.10 e 4.28 e igualamos os coeficientes das
duas se´ries obtendo-se o seguinte sistema de equac¸o˜es alge´bricas,
b1 + b2 + b3 = 1 (1)
b2c2 + b3c3 =
1
2
(2)
b2a21 + b3a31 + b3a32 =
1
2
(3)
b2c
2
2 + b3c
2
3 =
1
3
(4)
b2c2a21 + b3c3a31 + b3c3a32 =
1
3
(5)
b2a
2
21 + b3a
2
31 + 2b3a31a32 + b3a
2
32 =
1
3
(6)
b3a32c2 =
1
6
(7)
b3a32a21 =
1
6
(8)
(4.29)
46
N
.M
.S
ot
om
ay
or
dividindo (7) e (8) obtemos,
c2 = a21 (4.30)
subtraindo (6) de (5) obtemos,
c3 = a31 + a32 (4.31)
por ser um sistema indeterminado escolhemos,
b3 =
1
6
(4.32)
e,
a21 =
1
2
(4.33)
substitu´ındo em (8) obtem-se,
a32 = 2 (4.34)
e,
c2 =
1
2
(4.35)
usando (2) e (4) encontra-se,
b2 =
2
3
(4.36)
e,
c3 = 1 (4.37)
em (1),
b1 =
1
6
(4.38)
e finalmente,
a31 = −1. (4.39)
Com esses resultados a equac¸a˜o 4.1 pode-se escrever como,
yi+1 = yi + h
(
1
6
k1 +
2
3
k2 +
1
6
k3
)
(4.40)
47
N
.M
.S
ot
om
ay
or
ou ainda,
yi+1 = yi +
h
6
(
k1 + 4k2 + k3
)
(4.41)
com,
k1 = f(xi, yi), (4.42)
k2 = f
(
xi +
h
2
, yi +
h
2
k1
)
, (4.43)
k3 = f
(
xi + h , yi − hk1 + 2hk2
)
. (4.44)
48
N
.M
.S
ot
om
ay
or
Figura 4.1: Programa fonte em Fortran 77, que implementa o Me´todo de
integrac¸a˜o nume´rica de Runge-Kutta de ordem 3 RK-3.
49
N
.M
.S
ot
om
ay
or
0.75
0.8
0.85
0.9
0.95
1
0 0.1 0.2 0.3 0.4 0.5 0.6
"trayexato.dat"
"trayrk3.dat "
Figura 4.2: Comparac¸a˜o de trajeto´rias da soluc¸a˜o exa´ta e do me´todo de
Runge-Kutta de ordem 3 para o PIV em estudo.
50
N
.M
.S
ot
om
ay
orPIV SOLUÇÃO EXATAx y
0.0000000000000000 1.0000000000000000
2.99999999999999989E-002 0.97132340018818653
5.99999999999999978E-002 0.94519032753786814
8.99999999999999967E-002 0.92145265855845404
0.12000000000000000 0.89997089579991507
0.14999999999999999 0.88061366551128839
0.17999999999999999 0.86325724455327324
0.20999999999999999 0.84778511486129260
0.23999999999999999 0.83408754385460560
0.27000000000000002 0.82206118928049221
0.29999999999999999 0.81160872707051990
0.32999999999999996 0.80263850086877442
0.35999999999999999 0.79506419196997880
0.39000000000000001 0.78880450847891770
0.41999999999999998 0.78378289257180978
0.44999999999999996 0.77992724480544939
0.47999999999999998 0.77716966448133407
0.51000000000000001 0.77544620512980877
0.54000000000000004 0.77469664423370432
0.56999999999999995 0.77486426636222783
0.59999999999999998 0.77589565893415158
MÉTODO DE RUNGE-KUTTA ORDEM 3
y y
0.0000000000000000 1.0000000000000000
2.99999999999999989E-002 0.97132300000000005
5.99999999999999978E-002 0.94518957377200008
8.99999999999999967E-002 0.92145159375381391
0.12000000000000000 0.89996955873996676
0.14999999999999999 0.88061209151718600
0.17999999999999999 0.86325546575559120
0.20999999999999999 0.84778316045184854
0.23999999999999999 0.83408544031977472
0.27000000000000002 0.82205896061731232
0.29999999999999999 0.81160639498680254
0.32999999999999996 0.80263608496835115
0.35999999999999999 0.79506170992413427
0.39000000000000001 0.78880197618499237
0.41999999999999998 0.78378032429988320
0.44999999999999996 0.77992465333395522
0.47999999999999998 0.77716706122239898
0.51000000000000001 0.77544360024505132
0.54000000000000004 0.77469404674118048
0.56999999999999995 0.77486168423516111
0.59999999999999998 0.77589309919204230
Figura 4.3: Comparac¸a˜o dos valores nume´ricos das trajeto´rias da soluc¸a˜o
exa´ta e do me´todo de Runge-Kutta de ordem 3 para o PIV em estudo.
51
N
.M
.S
ot
om
ay
or
Cap´ıtulo 5
O Me´todo de Runge-Kutta de
Quarta Ordem
5.1 Teoria ba´sica
yi+1 = yi + hφ(xi, yi, h) (5.1)
yi+1 = yi + h[a1k1 + a2k2 + a3k3 + a4k4] (5.2)
onde,
k1 = f(xi, yi) (5.3)
k2 = f
(
xi +
h
2
, yi +
h
2
k1
)
(5.4)
k3 = f
(
xi +
h
2
, yi +
h
2
k2
)
(5.5)
k4 = f(xi + h, yi + hk3) (5.6)
A expressa˜o para o valor aproximado da func¸a˜o e´,
yi+1 = yi +
h
6
[
k1 + 2k2 + 2k3 + k4
]
(5.7)
Se definimos a inclinac¸a˜o me´dia por,
φ =
k1 + 2k2 + 2k3 + k4
6
(5.8)
52
N
.M
.S
ot
om
ay
or
teremos,
yi+1 = yi + hφ (5.9)
5.1.1 Interpretac¸a˜o geome´trica
• k1 e´ a inclinac¸a˜o no in´ıcio do intervalo xi, yi;
• k2 e´ a inclinac¸a˜o na metade do intervalo, usando o valor da inclinac¸a˜o
k1 para determinar o valor de yM no ponto xM = xi +
h
2
(usando o
me´todo de Euler);
• k3 e´ a inclinac¸a˜o no ponto me´dio, mas agora usando a inclinac¸a˜o k2
para determinar o valor de y;
• k4 e´ a inclinac¸a˜o no final do intervalo, com o valor y determinado usando
k3.
O me´todo de 4a ordem e´ um dois mais utilizados. Pode ser implementado
utilizando o seguinte algoritmo:
53
N
.M
.S
ot
om
ay
or
Figura 5.1: Co´digo fortran 77 mostrando a implementac¸a˜o do Me´todo de
integrac¸a˜o nume´rica de Runge-Kutta quarta Ordem
54
N
.M
.S
ot
om
ay
or
x0
y0
x1
k1
y1
xM
yM1
yM
Figura 5.2: k1 e´ a inclinac¸a˜o em (x0, y0). Avanc¸a-se meio passo e calcula-se
yM1 com k1 atrave´s do me´todo de Euler.
x0
y0
x1
k1
k2
y1
xM
yM1
yM2
yM
Figura 5.3: k2 e´ a inclinac¸a˜o em (xM1, yM1). Volta-se para x0 e calcula-se
yM2,com k2. Usando-se (xM , yM2) calcula-se k3.
55
N
.M
.S
ot
om
ay
or
x0
y0
x1
k1
k2
k3
k4
y1
xM
yM1
y 1T
yM2
yM
Figura 5.4: Usando-se k3 e o me´todo de Euler encontra-se y1T . Em seguida,
empregando-se (x1, y1T ) encontras-se k4.
x0
y0
x1
k1
6
+ 2k2+ 2k3+ k4
y1
xM
yM
k
k =
e
Figura 5.5: Finalmente, volta-se para x0 e calcula-se a aproximac¸a˜o para y1
empregando-se a inclina˜c¸a˜o me´dia, usando o me´todo de Euler.
56
N
.M
.S
ot
om
ay
or
Cap´ıtulo 6
Integrac¸a˜o nume´rica das
equac¸a˜oes de Newton
6.1 Forc¸a sobre um objeto em queda livre
Consideremos a segunda lei de Newton para o movimento de queda livre de
uma part´ıcula de massa m sobre a superf´ıcie da terra,
F (y, v, t) = m
d2y
dt2
(6.1)
Podemos extrair duas equac¸o˜es,
a(t) =
F (y, v, t)
m
(6.2)
e,
v(t) =
dy(t)
dt
(6.3)
Primeiramente aplicamos o me´todo de Euler a`s equac¸o˜es de movimento de
Newton,
vn+1 = vn + an∆t (6.4)
yn+1 = yn + vn∆t (6.5)
onde ∆t e´ o passo de tempo an = an(yn, vn, tn). Temos enta˜o um sistema de
duas equac¸o˜es diferenciais acopladas de primeira ordem.
Uma variac¸a˜o do algoritmo de resoluc¸a˜o de Euler e´ o Me´todo de Euler-
Cromer,
57
N
.M
.S
ot
om
ay
or
vn+1 = vn + an∆t (6.6)
yn+1 = yn + vn+1∆t (6.7)
Calcula a posic¸a˜o avaliando v ao final do intervalo ao inve´s do in´ıcio, pore´m,
uma escolha poss´ıvel que poderia fornecer melhores resultados seria calcular
a velocidade na metade do intervalo. Este me´todo e´ chamado algoritmo de
Euler-Richardson,
vn+1 = vn + amid∆t (6.8)
yn+1 = yn + vmid∆t (6.9)
6.1.1 Implementac¸a˜o computacional
Primeiramente realizamos a simulac¸a˜o da queda livre de um objeto de massa
m usando o me´todo de Euler. A figura 6.1 mostra o co´digo fonte em fortran
77 que realiza este processo.
A seguir, apresentamos a simulac¸a˜o da queda de um objeto de massa m
quando ale´m da forc¸a da gravidade temos resisteˆncia do a´r.
F = −mg + Fa (6.10)
A forma de Fa pode ser obtida atrave´s de experimentos, ha´ duas apro-
ximac¸a˜oes mais usadas Fa ∼ v, e Fa ∼ v2,
Fa = αv (6.11)
e,
Fa = βv
2 (6.12)
A velocidade terminal ocorre quando Fa = mg, para o primeiro caso vt =
mg
α
e para o segundo caso vt =
(
mg
β
) 1
2
. Da equac¸a˜o 6.10 obtemos,
F1 = −mg
(
1− αv
mg
)
= −mg
(
1− v
mg/α
)
(6.13)
F2 = −mg
(
1− βv
2
mg
)
= F2 = −mg
(
1− v
2
mg/β
)
(6.14)
de forma que podemos escrever
58
N
.M
.S
ot
om
ay
or
Figura 6.1: Co´digo fortran 77 mostrando a implementac¸a˜o do Me´todo de
Euler
59
N
.M
.S
ot
om
ay
or
0
2
4
6
8
10
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6
y
(m
)
t (s)
"fall.dat"
Figura 6.2: Queda de um corpo de massa m sem resisteˆncia do a´r.
60
N
.M
.S
ot
om
ay
or
F1 = −mg
(
1− v
vt
)
(6.15)
e,
F2 = −mg
(
1− v
2
v2t
)
(6.16)
Assim, a acelerac¸a˜o dos sistemas e´ dada por,
a = −g
(
1− v
vt
)
(6.17)
e,
a = −g
(
1− v
2
v2t
)
(6.18)
Usamos enta˜o qualquer uma das duas equac¸o˜es em conjunto com as duas
seguintes,
vn+1 = vn + amid∆t (6.19)
yn+1 = yn + vmid∆t (6.20)
que sa˜o as equac¸o˜es correspondentes ao me´todo de Euler-Richardson. Pre-
viamente a acelerac¸a˜o, velocidade e posic¸a˜o tem que ser calculadas no ponto
me´dio do intervalo correspondente a um passo de integrac¸a˜o.
6.2 Trajeto´rias em duas dimenso´es
Consideremos o movimento de um proje´til em duas dimenso˜es. O proje´til e´
lanc¸ado do cha˜o com velocidade inicial fazendo um aˆngulo θ com a horizontal
(eixo x), sera´ levado em conta a forc¸a de atrito com o ar proporcional ao
quadrado da velocidade.
A seguna lei de Newton descreve a dinaˆmica do sistema,
~F = m~a (6.21)
ou,
61
N
.M
.S
ot
om
ay
or
Figura 6.3: Co´digo fortran 77 mostrando a implementac¸a˜o do Me´todo de
Euler-Richardson
62
N
.M
.S
ot
om
ay
or
0
2
4
6
8
10
0 0.2 0.4 0.6 0.8 1 1.2 1.4
y
(m
)
t (s)
"falld.dat"
Figura 6.4: Queda de um corpo de massa m com resisteˆncia do a´r proporci-
onal a v2.
q
v0
|v0 |cosq
|v0 |senq
mg
Fa
x
y
Figura 6.5: Movimento de um proje´til em 2D.
63
N
.M
.S
ot
om
ay
or
Fx = m
dvx
dt
(6.22)
Fy = m
dvy
dt
(6.23)
Fz = m
dvz
dt
(6.24)
vamos considerar que na˜o ha´ movimento na direc¸a˜o x enta˜o,
m
dvx
dt
= −Fa cos θ (6.25)
m
dvy
dt
= −Fa sin θ −mg (6.26)
consideremos tambe´m atrito proporcional ao quadrado da velocidade,
dvx
dt
= −Fa
m
cos θ (6.27)
dvy
dt
= −Fa
m
sin θ − g (6.28)
Lembrando que,
Fa = βv
2 (6.29)
re-escrevemos as equac¸o˜es da forma,
dvx
dt
= −βv
2
m
cos θ (6.30)
dvy
dt
= −βv
2
m
sin θ − g (6.31)
ou ainda,
dvx
dt
= −βv
m
v cos θ (6.32)
dvy
dt
= −βv
m
v sin θ − g (6.33)
Finalmente,
64
N
.M
.S
ot
om
ay
or
dvx
dt
= −βv
m
vx (6.34)
dvy
dt
= −βv
m
vy − g. (6.35)
Vamos simplificas as duas equac¸a˜oes introduzindo a constante k = β/m,
dvx
dt
= −k v vx
dvy
dt
= −k v vy − g.
(6.36)
A equac¸a˜o de acoplamento das duas equac¸o˜es e´,
v2 = v2x + v
2
y (6.37)
A seguir e´ apresentado o programa fonte para o ca´lculo das trajeto´rias
A seguir sa˜o apresentados os resultados obtidos para as trajeto´rias do proje´til
lanc¸ado do cha˜o com aˆngulo de 45o e paraˆmetro k variando de 0, 0.01, 0.02, e 0.04.
65
N
.M
.S
ot
om
ay
or
Figura 6.6: Programa fonte para o ca´lculo das trajeto´rias de um proje´til em
2D.
66
N
.M
.S
ot
om
ay
or
0
1
2
3
4
5
6
0 5 10 15 20
y
(m
)
x (m)
"tray2dk004.dat"
"tray2dk0.dat"
"tray2dk001.dat"
"tray2dk002.dat"
q=45
o
Figura 6.7: Gra´fico das trajeto´rias nume´ricas de um proje´til em 2D lanc¸ado
do n´ıvel do solo, comaˆngulo de 45o e para diferentes valores do paraˆmetro k.
67
N
.M
.S
ot
om
ay
or
Cap´ıtulo 7
Integrac¸a˜o nume´rica das
equac¸a˜oes diferenciais de
segunda ordem
7.1 Me´todo de Numerov
O me´todo de Numerov e´ um me´todo nume´rico para a resoluc¸a˜o de equac¸o˜es
diferenciais ordina´rias de segunda ordem nas quais na˜o aparece o termo de
derivada primeira ordem. Este me´todo foi desenvolvido por Boris Vasil’evich
Numerov. E´ um me´todo multipasso linear de quarta ordem.
A fo´rmula de iterac¸a˜o e´, [
d2
dx2
+ f(x)
]
y(x) = 0 (7.1)
A func¸a˜o y(x) e´ avaliada no intervalo [a, b] o qual e´ particionado em intervalos
iguais xn. Iniciando com valores iniciais de y(x) em dois valores consequtivos
xn−1 e xn a aproximac¸a˜o da func¸a˜o pode ser calculada pela equac¸a˜o:
yn+1 =
[
2− 5h
2
6
f(xn)
]
y(xn)−
[
1 +
h2
12
f(xn−1)
]
y(xn−1)
1 +
h2
12
f(xn+1)
(7.2)
onde h = xn − xn−1.
68
N
.M
.S
ot
om
ay
or
Figura 7.1: Implementac¸a˜o computacional do Me´todo de Numerov.
69
N
.M
.S
ot
om
ay
or
7.2 Derivac¸a˜o
Realizamos a expansa˜o em se´rie de Taylor de y(x) em torno do ponto x0 ate´
quinta ordem,
y(x) = y(x0) + (x− x0)y′(x0) + (x− x0)
2
2!
y′′(x0) +
(x− x0)3
3!
y′′′(x0) (7.3)
+
(x− x0)4
4!
y′′′′(x0) +
(x− x0)5
5!
y′′′′′(x0) +O[(x− x0)6]
Denotamos a distaˆncia x− x0 por h e, fazendo x = x0 + h,
y(x0 + h) = y(x0) + hy
′(x0) +
h2
2!
y′′(x0) +
h3
3!
y′′′(x0) (7.4)
+
h4
4!
y′′′′(x0) +
h5
5!
y′′′′′(x0) +O(h6)
Substitu´ındo h por −h obtemos tambe´m,
y(x0 − h) = y(x0)− hy′(x0) + h
2
2!
y′′(x0)− h
3
3!
y′′′(x0) (7.5)
+
h4
4!
y′′′′(x0)− h
5
5!
y′′′′′(x0) +O(h6)
Apenas aspoteˆncias ı´mpares mundam de sinal, assim, temos os pontos de
amostragem: (xn−1, yn−1) e (xn+1, yn+1). Tomando as equac¸o˜es para yn−1 e
yn+1 observamos que,
yn+1 = y(xn + h) = y(xn) + hy
′(xn) +
h2
2!
y′′(xn) +
h3
3!
y′′′(xn) (7.6)
+
h4
4!
y′′′′(xn) +
h5
5!
y′′′′′(xn) +O(h6)
yn−1 = y(xn − h) = y(xn)− hy′(xn) + h
2
2!
y′′(xn)− h
3
3!
y′′′(xn) (7.7)
+
h4
4!
y′′′′(xn)− h
5
5!
y′′′′′(xn) +O(h6)
A soma destas duas equac¸o˜es fornece,
70
N
.M
.S
ot
om
ay
or
yn−1 + yn+1 = 2yn + h2y′′n +
h4
12
y′′′′n +O(h6) (7.8)
Resolvemos esta equac¸a˜o para y′′n e substituimos ela pela expressa˜o y
′′
n =
−anyn que obtemos da equac¸a˜o diferencial.
h2anyn = 2yn − yn−1 − yn+1 + h
4
12
y′′′′n +O(h6) (7.9)
We take the second derivative of our defining differential equation and get,
y′′′′(x) = − d
2
dx2
[a(x)y(x)] (7.10)
We replace the second derivative d
2
dx2
with the second order difference quotient
and insert this into our equation for anyn (note that we take the mixed
forward and backward finite difference, not the double forward difference or
the double backward difference),
h2anyn = 2yn − yn−1 − yn+1 − h
4
12
an−1yn−1 − 2anyn + an+1yn+1
h2
+O(h6)
(7.11)
We solve for yn+1 to get,
yn+1 =
(
2− 5h2
6
an
)
yn −
(
1 + h
2
12
an−1
)
yn−1
1 + h
2
12
an+1
+O(h6) (7.12)
This yields Numerov’s method if we ignore the term of order h6. It follows
that the order of convergence (assuming stability) is 4.
71
N
.M
.S
ot
om
ay
or
Cap´ıtulo 8
Integrac¸a˜o Nume´rica de
Equac¸o˜es Diferenciais Parciais
8.1 Introduc¸a˜o
Equac¸o˜es diferenciais parciais nume´ricas e´ parte da ana´lise nume´rica que
estuda as soluc¸o˜es nume´ricas das equac¸o˜es diferenciais parciais. Dentre as
diferentes te´cnicas de resoluc¸a˜o de equac¸o˜es diferenciais parciais nume´ricas
empregaremos o me´todo de diferenc¸as finitas.
8.2 Equac¸o˜es diferenciais parciais
Uma equac¸a˜o diferencial parcial EDP e´ uma equac¸a˜o composta de func¸o˜es
multivaria´veis desconhecidas e as suas derivadas parciais. Uma EDP para a
func¸a˜o u(x1, x2, ..., xn), e´ uma equac¸a˜o da forma,
F (x1, x2, ..., xn, u, ux1 , ux2 , ..., uxn , ux1x1 , ux1x2 , ..., ux1xn , ...) = 0 (8.1)
Se F e´ uma func¸a˜o linear de u e de suas derivadas, logo a EDP e´ denominada
linear.
8.3 Me´todo das diferenc¸as finitas
Neste me´todo as func¸o˜es sa˜o representadas pelo seus valores em certos ponto
de uma malha e suas derivadas sa˜o aproximadas atrave´s de diferenc¸as nestes
valores.
72
N
.M
.S
ot
om
ay
or
8.4 Soluc¸a˜o nume´rica da equac¸a˜o de Schro¨din-
ger dependente do tempo
O objetivo deste cap´ıtulo e´ mostrar a evoluc¸a˜o temporal de um pacote de
onda gaussiano atrave´s da soluc¸a˜o nume´rica da equac¸a˜o de Schro¨dinger de-
pendente do tempo. Para isso, e´ empregada a aproximac¸a˜o de diferenc¸as fini-
tas separandose as partes real e imagina´ria da func¸a˜o de onda e empregando-
se o me´todo de passo me´dio. Finalmente, apresenta-se o aplicativo Gnuplot
do Projeto GNU como uma importante ferramenta para a gerac¸a˜o de visua-
lizac¸o˜es animadas quando usada em combinac¸a˜o com o gfortran e o shell do
sistema Linux.
8.5 Fundamentos
A equac¸a˜o de Schro¨dinger dependente do tempo, na˜o relativista, para uma
part´ıcula de massa m se movendo em uma dimensa˜o na presenc¸a de um
potencial V (x, t) e´:
− ~
2
2m
∂2
∂x2
Ψ(x, t) + V (x, t)Ψ(x, t) = i~
∂
∂t
Ψ(x, t) (8.2)
m e´ a massa da part´ıcula, ~ e´ a constante racionalizada de Planck, e V (x, t)
e´ a func¸a˜o potencial, aqual e´ considerada independente do tempo. A soluc¸a˜o
da equac¸a˜o nem sempre e´ direta, entretanto, uma aproximac¸a˜o nume´rica da
soluc¸a˜o pode ser obtida introduzindo uma malha retangular com partic¸o˜es
para a coordenada espacial e para a coordenada temporal. Denotaremos as
partic¸o˜es por,
tn = t0 + n4t (8.3)
xv = x0 + v4x (8.4)
A func¸a˜o de onda num ponto particular do domı´nio e´ denotada por Ψ(xv, tn).
Uma primeira aproximac¸a˜o para a soluc¸a˜o nume´rica da equac¸a˜o 8.2 e´ ob-
tida quando empregadas diferenc¸as finitas para relacionar Ψ(xv, tn) com
Ψ(xv, tn+1) para cada valor de xv (esquema expl´ıcito) [2].
1
∆t
[
Ψ(xv, tn+1)−Ψ(xv, tn)
]
=
1
(∆x)2
[
Ψ(xv+1, tn)−2Ψ(xv, tn)+Ψ(xv−1, tn)
]
(8.5)
73
N
.M
.S
ot
om
ay
or
Embora simples esse esquema pode conduzir a soluc¸o˜es na˜o esta´veis, a seguir
empregamos um algoritmo que trata separadamente as partes real e imagia´ria
da func¸a˜o de onda.
Ψ(x, t) = R(x, t) + iI(x, t), (8.6)
Substitu´ındo 8.6 na equac¸a˜o 8.2 e considerando } = 1 obtemos,
Ĥ(R + iI) = i
d
dt
(R + iI) (8.7)
Igualando as partes real e imagina´ria obtem-se,
ĤR(x, t) = − d
dt
I(x, t) (8.8)
ĤI(x, t) =
d
dt
R(x, t) (8.9)
com
Ĥ ≡ − 1
2m
∂2
∂x2
+ V (x). (8.10)
As equac¸o˜es 8.8 podem ser nume´ricamente resolvidas atrave´s do emprego do
me´todo de integrac¸a˜o de passo me´dio, neste caso as equac¸o˜es sa˜o:
R(x, t+∆t)−R(x, t)
∆t
= ĤI(x, t+
1
2
∆t) (8.11)
I(x, t+ 3
2
∆t)− I(x, t+ 1
2
∆t)
∆t
= −ĤR(x, t) (8.12)
onde, R(x, 0) e I(x, 1
2
∆t) sa˜o os valores iniciais. Para a obtenc¸a˜o da evoluc¸a˜o
temporal e´ escolhido um pacote de onda inicial (t = 0) com perfil gaussiano,
Ψ(x, 0) =
(
1
2piω2
) 1
4
eik0(x−x0)e−(x−x0)
2/4ω2 (8.13)
A figura 8.1 mostra o programa fonte para o ca´lculo da evoluc¸a˜o temporal
do pacote de onda gaussiano da equac¸a˜o 8.13. Mostra-se apenas a parte
do programa principal, observa-se que sa˜o empregadas quatro subrotinas, a
primeira (INITIALDATA) para a introduc¸a˜o dos dados inicias, a segunda
(CLEANMATRIX) para a depurac¸a˜o das varia´veis vetoriais empregadas, a
terceira (WAVEPACKET) para a construc¸a˜o do pacote de onda inicial e a
quarta (EVOLVE) para a integrac¸a˜o nume´rica das duas equac¸o˜es diferenciais.
74
N
.M
.S
ot
om
ay
or
Figura 8.1: Programa fonte em fortran 77 para o ca´lculo nume´rico da evoluc¸a˜o
temporal de um pacote de onda gaussiano atrave´s da equac¸a˜o de Schro¨dinger
empregando-se diferenc¸as finitas e o me´todo de passo me´dio.
O co´digo declara treˆs varia´veis vetoriais para armazenar os resultados nume´ricos
das partes real e imagina´ria assim como o mo´dulo da func¸a˜o de onda. Treˆs
arquivos de sa´ıda sao˜ criados “real.dat”, “imag.dat”e “prob.dat”que arma-
zenam as partes real, imagina´ria e a densidade de probabilidade respectiva-
mente.
A subrotina INITIALDATA ingressa os valores iniciais do programa. Valo-
res como o potencial (V0), intervalo de integrac¸a˜o (XMIN,XMAX), passo
espacial DX, passo temporal DT , sa˜o definidos nesta parte.
A subrotina CLEANMATRIX e´ chamada para zerar inicialmente os vetores
que devera˜o armazenar os resultados nume´ricos das partes real, imagina´ria e
densidade de probabilidade.
A subrotina WAVEPACKET e´ chamada para construir o pacote de onda
75
N
.M
.S
ot
om
ay
or
Figura 8.2: A subrotina INITIALDATA e´ invocada pelo programa principal para
gerar os dados inicias que sera˜o empregados em todo o processo.
Figura 8.3: A subrotina CLEANMATRIX e´ invocada pelo programa principal para
zerar inicialmente os vetores a serem empregados no programa.
inicial Ψ(x, t = 0) em acordo com a equac¸a˜o 8.13.
A subrotina EVOLVE e´ invocada pelo programa principal para realizar a
integrac¸a˜o nume´rica das equac¸o˜es 8.11. As partes real e imagina´ria sa˜o in-
tegradas separadamente de forma simples atrave´s de um processo iterativo
usando-se o me´todo de passo me´dio.
Finalmente e´ empregada tambe´m uma func¸a˜o fortran para definir o poten-
cial. O potencial e´ zero de XMIN ate´ x = 0 a partir de x > 0 o potencial
toma o valor V = V0 de forma que ha´ umprocesso de espalhamento por
uma barreira de potencial no ponto x = 0. O valor do potencial pode ser
alterado. Quando o programa e´ executado gera um conjunto de valores para
a parte real, para a parte imagina´ria e para a densidade de probabilidade
para cada passo de tempo. Cada func¸a˜o compreende um conjunto de valores
76
N
.M
.S
ot
om
ay
or
Figura 8.4: A subrotina WAVEPACKET e´ invocada pelo programa principal
para construir o pacote de onda gaussiano inicial (em t = 0).
Figura 8.5: A subrotina EVOLVE e´ invocada pelo programa principal para
integrar nume´ricamente as equac¸o˜es diferenciais para as partes real e ima-
gina´ria do pacote de onda.
nume´ricos no intervalo de [XMIN,XMAX], no caso do exemplo sa˜o 200
pares de dados para cada func¸a˜o. Isto pode aumentar ou diminuir depen-
dendo da presic¸a˜o desejada. Se sa˜o 1000 intervalos de tempo DT sa˜o 600000
dados para as treˆs func¸o˜es. Certamente, se tentamos realizar o gra´fico desses
dados sera´ imposs´ıvel visualizar alguma evoluc¸a˜o teremos uma superposic¸a˜o
muito grande de dados que impossibilitam qualquer ana´lise. O Gnuplot e´
um aplicativo do Projeto GNU da Free Software Foundation que permite o
gra´fico sincronizado e ainda a criac¸a˜o de uma animac¸a˜o em formato GIF.
77
N
.M
.S
ot
om
ay
or
Figura 8.6: A func¸ao˜ V e´ empregada para definir o potencial.
Para isto e´ necessa´rio criar um arquivo de texto com o conteu´do mostrado a
seguir,
set term gif animate delay 0.1 size 1450, 780
set output "onda.gif"
do for [n=1:1001] {
plot [-20:0][-1:1] "prob.dat" u 1:2 every :n::n::n w l t
sprintf("n=%i", n), "real.dat" u 1:2 every :n::n::n w l
smooth csplines,"imag.dat" u 1:2 every :n::n::n w l smooth
csplines }
O arquivo tem que ser salvo com a extensa˜o .gp, exempo ca.gp. Para
executar o arquivo e´ necessa´rio digitar no prompt de comando do Linux
gnuplot ca.gp. O gnuplot vai ler os dados das func¸o˜es e vai gerar uma
a˜presentac¸a˜o sequeˆncial dos dados salvando eles em um arquivo de animac¸a˜o
de nome “onda.gif”. Parte da evoluc¸a˜o pode ser vista na figura 8.7.
78
N
.M
.S
ot
om
ay
or
-20 -10 0 10 20
-0,6
-0,4
-0,2
0,0
0,2
0,4
0,6
x
-20 -10 0 10 20
-0,6
-0,4
-0,2
0,0
0,2
0,4
0,6
x
-20 -10 0 10 20
-0,6
-0,4
-0,2
0,0
0,2
0,4
0,6
x
Figura 8.7: Gra´fico das partes real, imagina´ria e densidade de probabilidade
do pacote de onda gaussiano evoluindo em func¸a˜o do tempo.
79
N
.M
.S
ot
om
ay
or
Refereˆncias Bibliogra´ficas
[1] Wolfram mathworld, web mathematics resource, 24/10/2007.
http://mathworld.wolfram.com/OrdinaryDifferentialEquation.html
[2] Harvey Gould, Jan Tobochnik, An Introduction to Computer Simu-
lation Methods, Application to Physical Systems, Second Edition,
Addison-Wesley Publishing Co. USA 1996.
80

Continue navegando