Você está na página 1de 9

Captulo 5

Problemas de Valor Inicial [Em


Construo]
5.1 Introduo
Neste captulo sero discutidos alguns mtodos de soluo numrica de Equaes Diferenciais Ordinrias
(ODE) que fazem parte de Problemas de Valor Inicial (PVI).
Em cincias exatas ou naturais, grande parte dos problemas existentes so descritos por equaes dife-
renciais, cujas solues gerais devem ser particularizadas por condies iniciais e/ou condies de contorno.
Quando ocorrem somente as primeiras, diz-se que o problema de valor inicial.
Um problema de valor inicial pode ser denido da seguinte forma. Sendo x x
0
um parmetro que
varia de forma independente no problema e y(x) uma funo da varivel x, a funo y(x) ser determinada,
em um problema de valor inicial, a partir da soluo da equao diferencial ordinria de ordem n
F
_
y
(n)
(x), y
(n1)
(x), . . . , y

(x), y(x), x
_
= f(x), (5.1a)
juntamente com as condies iniciais
g
0
_
y (x
0
) , y

(x
0
) , . . . , y
(n1)
(x
0
)
_
=a
0
(5.1b)
g
1
_
y (x
0
) , y

(x
0
) , . . . , y
(n1)
(x
0
)
_
=a
1
(5.1c)
.
.
.
.
.
. (5.1d)
g
n
_
y (x
0
) , y

(x
0
) , . . . , y
(n1)
(x
0
)
_
=a
n
, (5.1e)
sendo F ( ) um funcional qualquer de y(x) e suas derivadas at a ordem n, f(x) uma funo de x,
g
0
( ) , . . . , g
n
( ) funcionais das condies iniciais y (x
0
) , . . . , y
(n1)
(x
0
) e a
0
, . . . , a
n
constantes. Em
problemas realsticos na fsica, geralmente os funcionais g
0
, . . . , g
n
so lineares em
_
y (x
0
) , . . . , y
(n1)
(x
0
)
_
mas o funcional F no linear em
_
y(x), . . . , y
(n)
(x)
_
.
5.2 Equaes de diferenas nitas lineares
A soluo numrica do problema (5.1) envolve a discretizao da ODE, ou seja, a transformao da
equao diferencial em uma equao de diferenas nitas. Para exemplicar, pode-se considerar o PVI
linear
y

=y, (5.2a)
y (x
0
) =a
0
, (5.2b)
cuja soluo y(x) = a
0
e
xx
0
. Para discretizar este PVI de uma forma trivial, considera-se a denio de
uma derivada e omite-se o smbolo de limite:
y

(x)
y (x + h) y(x)
h
,
83
84 5.2. Equaes de diferenas nitas lineares
sendo h um pequeno incremento em x. Desta forma, possvel armar que a soluo no ponto x + h
obtida a partir do conhecimento da soluo em x atravs de
y (x + h) = (1 + h) y(x).
Partindo-se ento do valor inicial y
0
= a
0
, obtem-se y
1
= y (x + h)=(1 + h) y
0
=(1 + h) a
0
, y
2
= y (x + 2h) =
(1 + h) y
1
= (1 + h)
2
a
0
, etc. Por induo, pode-se deduzir que y
n
= (1 + h)
n
a
0
. Escrevendo agora o n-
simo valor de x como x
n
= x
0
+ nh e chamando x
n
x e y
n
y, temos
h =
x x
0
n
. Portanto, y =
_
1 +
x x
0
n
_
n
a
0
.
Empregando agora a identidade
lim
n
_
1 +
z
n
_
n
= e
z
,
resulta que a soluo discretizada do PVI (5.2), quando n , reduz-se a y = a
0
e
xx
0
, a qual justamente
a sua soluo. Contudo, neste limite o resultado dever estar bastante contaminado pela propagao de
erros de arredondamento; alm disso, deseja-se buscar mtodos que forneam resultados mais acurados j
para as primeiras iteraes.
Alguns exemplos de equaes de diferenas nitas e suas solues so
y
n+1
y
n
= 1 = y
n
= n + c
y
n+1
y
n
= n = y
n
=
n(n 1)
2
+ c
y
n+1
(n + 1) y
n
= 0 = y
n
= cn!
Vamos considerar com algum detalhe uma equao de diferenas nitas linear de ordem N com coeci-
entes constantes
y
n+N
+ a
N1
y
n+N1
+ + a
1
y
n+1
+ a
0
y
n
= 0. (5.3)
Esta equao deve possuir N solues linearmente independentes, as quais so da forma y
n
=
n
, n, sendo
uma constante. Substituindo esta soluo em (5.3) resulta

n+N
+ a
N1

n+N1
+ + a
1

n+1
+ a
0

n
= 0.
Dividindo-se por
n
, resulta a equao caracterstica

N
+ a
N1

N1
+ + a
1
+ a
0
= 0, (5.4)
a qual fornece as razes de um polinmio de grau N. Assumindo que todas as razes
1
,
2
, . . . ,
N
so
distintas, a soluo geral de (5.3) pode ser nalmente escrita como
y
n
= c
1

n
1
+ c
2

2
2
+ + c
N

n
N
, n = 0, 1, 2, . . . .
Se os valores de y
n
n = 0, . . . , N 1 forem dados, estes, juntamente com (5.3), formam um problema
de valor inicial de diferenas nitas, o qual pode ser resolvido explicitamente resultando na soluo
particular para y
n
.
Como um exemplo, a equao de diferenas
y
n+3
2y
n+2
y
n+1
+ 2y
n
= 0
possui a equao caracterstica

3
2
2
+ 2 = 0,
cujas razes so
1
= 1,
2
= 1 e
3
= 2. Portanto, a soluo geral
y
n
= c
1
1
n
+ c
2
(1)
n
+ c
3
2
n
.
Sendo agora dados y
0
= 0, y
1
= 1 e y
2
= 1, ento
y
0
= c
1
+ c
2
+ c
3
= 0
y
1
= c
1
c
2
+ 2c
3
= 1
y
2
= c
1
+ c
2
+ 4c
3
= 1
Autor: Rudi Gaelzer IFM/UFPel Verso: 22 de julho de 2009
Captulo 5. Problemas de Valor Inicial [Em Construo] 85
o qual forma um sistema linear nas constantes, cuja soluo c
1
= 0, c
2
=
1
/3 e c
3
=
1
/3. Portanto, a
soluo particular
y
n
=
1
3
(1)
n
+
2
n
3
.
Se alguma das razes da equao caracterstica (5.4) for dupla (
1
, por exemplo), ento uma segunda
soluo da mesma n
n
1
. No mesmo esprito, se algum par de razes de (5.4) forem complexo conjugadas
(
1
=

2
, por exemplo), ento estas podem ser escritas na sua forma polar e c
1

1
+c
2

2
pode ser reescrita
na forma r
n
(C
1
cos n + C
2
senn), onde r = |
1
| e = arg
1
.
As propriedades das equaes de diferenas nitas consideradas nesta seo sero teis para os mtodos
desenvolvidos no restante deste captulo.
5.3 Integrao numrica por srie de Taylor
Considerando-se inicialmente um PVI de primeira ordem na forma
y

=f (x, y) (5.5a)
y (x
0
) =y
0
. (5.5b)
A funo f (x, y) pode ser linear ou no linear em y, mas assumido que esta diferencivel em qualquer
ordem em x e y. Se f/y for contnua no domnio de interesse, ento a soluo de (5.5) nica.
Sendo ento y(x) a soluo exata de (5.5), pode-se desenvolver y(x) em uma srie de Taylor em torno
do ponto x = x
0
:
y(x) = y
0
+ (x x
0
) y

(x
0
) +
1
2!
(x x
0
)
2
y (x
0
) + . (5.6)
O valor de y
0
suposto dado, mas as derivadas na srie acima no so conhecidas uma vez que y(x)
desconhecido. Contudo, dada a hiptese de f (x, y) ser diferencivel, as derivadas de (5.6) podem ser
obtidas tomando-se a derivada total de (5.5a) em relao a x, lembrando sempre que y funo de x.
Assim, obtem-se para as primeiras derivadas:
y

= f
y

=
df
dx
= f
x
+ f
y
y

= f
x
+ f
y
f
y

=
d
2
f
dx
2
= f
xx
+ f
xy
f + f
yx
f + f
yy
f
2
+ f
y
f
x
+ f
2
y
f
= f
xx
+ 2f
xy
f + f
yy
f
2
+ f
y
f
x
+ f
2
y
f.
Continuando desta maneira, pode-se expressar qualquer derivada de y em termos de f (x, y) e suas derivadas
parciais. Contudo, para derivadas de mais alta ordem a expresso resultante torna-se cada vez mais extensa.
Por razes prticas, portanto, deve-se limitar o nmero de termos em (5.6) a um valor pequeno e
esta limitao restringe o valor de x para o qual a srie (5.6) truncada resulta em um valor para y(x)
razoavelmente acurado. Assumindo que a srie (5.6) truncada fornece uma boa aproximao para um passo
de comprimento h, isto , xx
0
= h, pode-se calcular y em x
0
+h, recalcular suas derivadas y

, y

, etc, em
x = x
0
+h e ento usar (5.6) novamente para calcular y em x
0
+2h; e assim sucessivamente. Prosseguindo
desta maneira, obtem-se uma conjunto discreto de valores {y
n
} que so aproximaes da soluo correta
nos pontos x
n
= x
0
+nh (n = 0, 1, 2, . . . ). No restante deste captulo, a soluo exata de (5.5) no ponto x
n
ser denotada por y (x
n
), enquanto que a soluo aproximada ser denotada por y
n
.
Para formalizar este procedimento, introduz-se o operador
T
k
(x, y) = f (x, y) +
h
2!
f

(x, y) +
h
2
3!
f

(x, y) + +
h
k1
k!
f
(k1)
(x, y) , k = 1, 2, . . . , (5.7)
onde f
(j)
(x, y) denota a j-sima derivada total de f (x, y) com relao a x. Assim, truncando-se a srie
(5.6) at o k-simo termo, pode-se escrever:
y(x
0
+ h) y
0
+ h
_
T
k
_
x
0
, y (x
0
)
__
. (5.8a)
O erro local cometido ao se tormar o passo de x
n
para x
n+1
utilizando o mtodo de Taylor na ordem k,
fornecido pelo prximo termo da srie de Taylor truncada:
E =
h
k+1
(k + 1)!
y
(k+1)
() =
h
k
(k + 1)!
f
(k)
_
, y ()
_
, x
n
< < x
n
+ h. (5.8b)
Autor: Rudi Gaelzer IFM/UFPel Verso: 22 de julho de 2009
86 5.4. O Mtodo de Runge-Kutta
Algoritmo 5.1 Algoritmo de Taylor de ordem k.
Para encontrar uma soluo aproximada do PVI
y

=f (x, y)
y(a) =y
0
sobre o intervalo [a, b]:
1. Escolha um passo h = (b a) /N. Dena
x
n
= a + nh, n = 0, 1, . . . , N.
2. Obtenha as aproximaes y
n
de y (x
n
) a partir da frmula de recorrncia
y
n+1
= y
n
+ hT
k
(x
n
, y
n
) , n = 0, 1, . . . , N 1,
onde T
k
(x
n
, y
n
) est denido em (5.7).
Neste caso, diz-se que o algoritmo de Taylor de ordem k. O algoritmo 5.1 implementa o mtodo de
Taylor.
5.3.1 O mtodo de Euler
Arbitrando k = 1 em (5.8a,b), obtem-se o mtodo de Euler e o seu erro local. Seguindo a representao
apresentada no algoritmo 5.1, a frmula para o mtodo de Euler ca:
y
n+1
=y
n
+ f (x
n
, y
n
) , (5.9a)
E =
1
2
f

(x
n
, y
n
) h
2
, x
n
< < x
n+1
. (5.9b)
Para este mtodo, existe uma outra estimativa de erro que pode ser denominada de erro global ou erro
de convergncia. Trata-se de um limite superior no erro cometido ao se utilizar repetidas vezes este mtodo
com um passo xo h, variando x entre x
0
e algum limite superior x = b. Sendo x
n
= x
0
+ nh, este erro
mensurado como
e
n
= y (x
n
) y
n
,
isto , o erro realizado no processo de discretizao empregado pelo mtodo de Euler. Nesta denio, y
n

o valor aproximado dado pelo mtodo de Euler (Eq. 5.9a), enquanto que y (x
n
) a soluo exata do PVI
no ponto x
n
. Uma estimativa mxima para e
n
dada pelo Teorema (5.3.1) abaixo.
Teorema 5.1
Seja y
n
a soluo aproximada de (5.5) obtida pelo Mtodo de Euler (5.9). Se a soluo exata de (5.5),
y = y(x), possui sua derivada segunda contnua no intervalo [x
0
, b] e se neste intervalo as inegualdades
|f
y
(x, y)| L, |y

(x)| < Y
so satisfeitas para certas constantes positivas L e Y , o erro de convergncia e
n
= y (x
n
) y
n
do Mtodo
de Euler no ponto x
n
= x
0
+ nh tem seu valor mximo dado por
|e
n
|
hY
2L
_
e
(x
n
x
0
)L
1
_
.
O teorema (5.3.1) mostra que o erro O(h), isto , e
n
0 proporcionalmente a h se x = x
n
mantido
xo. Por outro lado, para um h xo, o erro aumenta na ordem e
xL
quando x = x
n
se afasta de x
0
.
5.4 O Mtodo de Runge-Kutta
O Mtodo de Euler no muito til para a soluo de problemas que demandam uma maior acurcia;
a sua utilidade surge quando o programador necessita ter somente uma idia da ordem de grandeza e da
Autor: Rudi Gaelzer IFM/UFPel Verso: 22 de julho de 2009
Captulo 5. Problemas de Valor Inicial [Em Construo] 87
Figura 5.1: Mtodo do ponto mdio ou
Mtodo de Runge-Kutta de segunda ordem.
Acurcia em segunda ordem obtida usando
a derivada no incio do intervalo para encon-
trar uma soluo intermediria no ponto m-
dio do intervalo e, ento, usando a derivada
no ponto mdio ao longo de todo o intervalo.
tendncia da soluo de (5.5). Por outro lado, o algoritmo de Taylor (5.1) para uma ordem k alta tambm
impraticvel, pois necessita do conhecimento das derivadas de ordem k 1 de f (x, y).
O Mtodo de Runge-Kutta foi desenvolvido com o intuito de obter maior acurcia que o Mtodo de Euler
e, ao mesmo tempo, evitar a necessidade de se conhecer derivadas de ordens altas. Para tanto, o mtodo faz
uso da estratgia de calcular os valores de f (x, y) em pontos intermedirios para cada passo da integrao
de (5.5).
A decincia no Mtodo de Euler se deve ao fato de que a frmula (5.9a) avana a soluo por um
intervalo h usando somente informaes somente no incio do intervalo, isto , no ponto x = x
n
. O mtodo
no utiliza nenhuma outra informao sobre a variao de f (x, y) no intervalo [x
n
, x
n+1
]. O mesmo pode
ser dito do algoritmo de Taylor em qualquer ordem.
5.4.1 O Mtodo de Runge-Kutta de segunda ordem ou o Mtodo do ponto
mdio
Numa tentativa de remediar esta decincia, pode-se realizar primeiramente um passo tentativo at o
ponto mdio no intervalo [x
n
, x
n+1
] e ento utilizar os valores de x e y neste ponto mdio para computar o
passo real ao longo de todo o intervalo de comprimento h. Esta sequncia de 2 passos intermedirios para
um passo completo quantitativamente descrito pelo sistema de equaes
k
1
=hf (x
n
, y
n
)
k
2
=hf (x
n
+
h
/2, y
n
+
k
1
/2)
y
n+1
=y
n
+ k
2
+O
_
h
3
_
.
Como indicado no termo de erro, o uso do ponto mdio torna o mtodo acurado em segunda ordem. A gura
5.1 ilustra a aplicao deste mtodo. J o algoritmo 5.2 mostra como este mtodo pode ser implementado
em um programa de computador.
Algoritmo 5.2 O Mtodo de Runge-Kutta de ordem 2.
Dado o PVI
y

= f (x, y) , y(x
0
) = y
0
,
aproximaes y
n
para y (x
n
), sendo x
n
= x
0
+nh para um passo h xo e n = 0, 1, . . . , so obtidas usando-se
a seguinte sequncia de passos:
1. Calcule k
1
dado por
k
1
= hf (x
n
, y
n
) .
2. A partir de k
1
, calcule k
2
dado por
k
2
= hf
_
x
n
+
1
2
h, y
n
+
1
2
k
1
_
.
3. A partir de k
2
, calcule a soluo y
n+1
dada por
y
n+1
= y
n
+ k
2
.
Autor: Rudi Gaelzer IFM/UFPel Verso: 22 de julho de 2009
88 5.5. Sistemas de equaes diferenciais
Figura 5.2: Mtodo de Runge-Kutta de
quarta ordem. Em cada passo a derivada
calculada 4 vezes: uma vez no ponto inicial,
duas vezes no ponto mdio e uma vez no ponto
nal. Destas derivadas o valor nal da soluo
do PVI calculado.
O erro local do Mtodo de Runge-Kutta de ordem 2 O
_
h
3
_
, ao passo que o erro local do Mtodo
de Euler O
_
h
2
_
. Isto signica que possvel usar um passo h com o primeiro mtodo para se obter a
mesma acurcia do segundo. O preo que se paga que para cada passo h o funcional f (x, y) calculado
2 vezes, no incio e no ponto mdio do intervalo. Expresses com erros ainda menores podem ser obtidos
utilizando-se informaes de derivadas de ordens mais altas no ponto mdio. Contudo, em vez de se utilizar
esta complicao adicional, o uso prtico recomenda o emprego do Mtodo de Runge-Kutta de ordem 4
(seo 5.4.2).
5.4.2 O Mtodo de Runge-Kutta de quarta ordem
Talvez o mtodo mais empregado para a soluo de PVIs, o Mtodo de Runge-Kutta de quarta ordem
faz uso das informaes fornecidas por f (x, y) em 3 pontos (ou frmulas) intermedirios antes de calcular
a aproximao para y
n+1
.
Sem demonstrao, as frmulas envolvidas neste mtodo so:
k
1
=hf (x
n
, y
n
) (5.10a)
k
2
=hf (x
n
+
h
/2, y
n
+
k
1
/2) (5.10b)
k
3
=hf (x
n
+
h
/2, y
n
+
k
2
/2) (5.10c)
k
4
=hf (x
n
+ h, y
n
+ k
3
) (5.10d)
y
n+1
=y
n
+
1
6
(k
1
+ 2k
2
+ 2k
3
+ k
4
) +O
_
h
5
_
. (5.10e)
O mtodo de ordem 4 requer 4 clculos de f (x, y) por passo h. Isto signica que este mtodo deve ser
superior que o mtodo de ordem 2 se o valor de h neste caso puder ser, pelo menos, 2 vezes maior que o
valor para o mtodo de ordem 2, para se obter a mesma acurcia. Caso contrrio, melhor usar o algoritmo
5.2 ou algum outro mtodo de soluo de um PVI. A gura 5.2 ilustra a aplicao do mtodo e o algoritmo
5.3 mostra a sua implementao.
5.5 Sistemas de equaes diferenciais
As frmulas (5.10a-e) para a aplicao do Mtodo de Runge-Kutta de quarta ordem supe a existncia
de um PVI simples do tipo (5.5) o qual consiste em uma equao diferencial de primeira ordem (linear ou
no linear) com uma condio inicial simples. Contudo, grande parte dos problemas que surgem em cincias
exatas e naturais envolvem PVIs compostos por uma ou mais equaes diferenciais de segunda ordem ou
ordens mais altas, com um correspondente nmero de condies iniciais. Desejamos ento estender o mtodo
apresentado na seo 5.4.2 (ou qualquer outro) para esta situao mais geral.
Para exemplicar a generalizao do mtodo, vamos considerar o caso de uma ODE de ordem N com N
condies iniciais. A extenso para o caso onde h mais de uma equao diferencial, inclusive de diferentes
ordens, segue diretamente do exemplo apresentado. O PVI a ser considerado pode ser escrito a partir de
(5.1) como
y
(N)
= f
_
x, y(x), y

(x), , y
(N1)
(x)
_
, (5.11a)
juntamente com as condies iniciais
g
0
_
y (x
0
) , y

(x
0
) , . . . , y
(N1)
(x
0
)
_
=a
0
(5.11b)
Autor: Rudi Gaelzer IFM/UFPel Verso: 22 de julho de 2009
Captulo 5. Problemas de Valor Inicial [Em Construo] 89
Algoritmo 5.3 O Mtodo de Runge-Kutta de ordem 4.
Dado o PVI
y

= f (x, y) , y(x
0
) = y
0
,
aproximaes y
n
para y (x
n
), sendo x
n
= x
0
+nh para um passo h xo e n = 0, 1, . . . , so obtidas usando-se
a seguinte sequncia de passos:
1. Calcule k
1
dado por
k
1
= hf (x
n
, y
n
) .
2. A partir de k
1
, calcule k
2
dado por
k
2
= hf
_
x
n
+
1
2
h, y
n
+
1
2
k
1
_
.
3. A partir de k
2
, calcule k
3
dado por
k
3
= hf
_
x
n
+
1
2
h, y
n
+
1
2
k
2
_
.
4. A partir de k
3
, calcule k
4
dado por
k
4
= hf (x
n
+ h, y
n
+ k
3
) .
5. A partir de k
1
, k
2
, k
3
e k
4
, calcule a aproximao y
n+1
dada por
y
n+1
= y
n
+
1
6
(k
1
+ 2k
2
+ 2k
3
+ k
4
) .
g
1
_
y (x
0
) , y

(x
0
) , . . . , y
(N1)
(x
0
)
_
=a
1
(5.11c)
.
.
.
.
.
. (5.11d)
g
N
_
y (x
0
) , y

(x
0
) , . . . , y
(N1)
(x
0
)
_
=a
N
. (5.11e)
Denindo inicialmente y
1
(x) = y(x), podemos escrever:
y

1
(x) = y
2
(x) (5.12a)
y

2
(x) = y
3
(x) (5.12b)
y

3
(x) = y
4
(x) (5.12c)
.
.
.
.
.
.
y

N1
(x) = y
N
(x), (5.12d)
nalmente, fazendo uso de (5.11a),
y

N
(x) = f (x, y
1
(x), y
2
(x), , y
N
(x)) , (5.12e)
com as condies iniciais (5.11be) escritas
g
0
(y
1
(x
0
) , y
2
(x
0
) , . . . , y
N
(x
0
)) =a
0
(5.12f)
g
1
(y
1
(x
0
) , y
2
(x
0
) , . . . , y
N
(x
0
)) =a
1
(5.12g)
.
.
.
.
.
.
g
N
(y
1
(x
0
) , y
2
(x
0
) , . . . , y
N
(x
0
)) =a
N
. (5.12h)
Ou seja, ao invs procurarmos uma forma do mtodo de Runge-Kutta para resolver 1 ODE de ordem N, o
que iremos fazer resolver N equaes de ordem 1.
Autor: Rudi Gaelzer IFM/UFPel Verso: 22 de julho de 2009
90 5.5. Sistemas de equaes diferenciais
Exemplo 5.1. Movimento harmnico amortecido. Suponhamos um corpo de massa m pendurado
do teto por uma mola que exerce uma fora restauradora f
R
= ky, oscilando sob a ao da gravidade,
mas imerso em um uido viscoso tal que a fora de resistncia passagem do corpo seja proporcional ao
quadrado da velocidade do mesmo, f
v
= Cv
2
. Este problema pode ser escrito na forma de um PVI como:
y =g
k
m
y
C
m
y
2
y(0) =y
0
y(0) =v
0
.
Denindo y
1
(t) = y(t) e y
1
(t) = y
2
(t), o PVI pode ser escrito a partir de (5.12) como:
y
1
=y
2
y
2
=g
k
m
y
1

C
m
y
2
2
y
1
(0) =y
0
y
2
(0) =v
0
,
ou seja, em vez de resolvermos 1 equao de 2 ordem, vamos resolver 2 equaes de 1 ordem.
Quando o PVI for composto por mais de uma ODE de diferentes ordens, busca-se reduzir este sistema
sempre a um sistema de primeira ordem. Neste caso, ao invs de somente uma equao de primeira ordem
do tipo (5.12e), teremos um sistema de N equaes do tipo:
y

1
=f
1
(x, y
1
, y
2
, , y
n
) (5.13a)
y

2
=f
2
(x, y
1
, y
2
, , y
n
) (5.13b)
.
.
.
.
.
.
y

N
=f
N
(x, y
1
, y
2
, , y
n
) , (5.13c)
onde neste sistema j esto includas as equaes auxiliares (5.12ad). muitas vezes conveniente pensar
este sistema na forma vetorial,
y

= f (x, y) , (5.13d)
onde y e f so vetores com N componentes cada.
A subrotina 5.1 implementa o Mtodo de Runge-Kutta de quarta ordem dado pelo algoritmo 5.3 em
Fortran 95. Nota-se que a subrotina resolve um sistema de EDOs de primeira ordem do tipo (5.13ac) ou
(5.13d).
Programa 5.1: Resolve um Problema de Valor Inicial usando o Mtodo de Runge-Kutta de quarta ordem.
! SUBROTINA RK4
! Resol ve um Problema de Val or I n i c i a l pel o Metodo de RungeKutta
! de quart a ordem com passo f i x o .
! Dados o vet or y ( : ) que contem as v a r i a v e i s e o vet or das der i vadas
! dydx ( : ) no ponto x , a r ot i na i nvoca a s ubr ot i na de r i v s ( y , x , dydx )
! que sera usada para avancar o vet or das s ol ucoe s ys ai ( : ) at e o
! ponto x + h .
!
! Argumentos de ent rada :
! y : Vetor de forma assumida contendo as s ol uc oe s do PVI no ponto x .
! dydx : Vetor de forma assumida contendo as der i vadas de y no ponto x .
! x : Ponto i n i c i a l do i nt e r v a l o .
! h : Tamanho do passo .
! de r i v s : Subrot i na que c al c ul a as der i vadas dydx no ponto x .
! Argumento de s ai da :
! ys ai : Vetor de forma assumida contendo as s ol uc oes do PVI no ponto x + h .
!
! Autor : Rudi Gael zer , IFM UFPel .
! Data : Jul ho /2009.
! Obs : Baseada na s ubr ot i na RK4 do Numerical Reci pes .
!
Autor: Rudi Gaelzer IFM/UFPel Verso: 22 de julho de 2009
Captulo 5. Problemas de Valor Inicial [Em Construo] 91
subroutine rk4 ( y , dydx , x , h , ysai , de r i vs )
real ( kind= dp) , dimension ( : ) , intent ( in) : : y , dydx
real ( kind= dp) , intent ( in) : : x , h
real ( kind= dp) , dimension ( : ) , intent ( out ) : : ys ai
INTERFACE
subroutine de r i vs ( x , y , dydx)
use Modelos_Computacionais_Dados
real ( kind= dp) , intent ( in) : : x
real ( kind= dp) , dimension ( : ) , intent ( in) : : y
real ( kind= dp) , dimension ( : ) , intent ( out ) : : dydx
end subroutine de r i vs
END INTERFACE
real ( kind= dp) : : h6 , hh , xh
real ( kind= dp) , dimension( si ze ( y ) ) : : dym, dyt , yt
!
cal l veri f i ca_tamanho ( si ze ( y ) , si ze ( dydx ) , si ze ( ys ai ) , rk4 )
hh= h0. 5_dp
h6= h/6. 0_dp
xh= x + hh
yt= y + hhdydx
cal l de r i vs ( xh , yt , dyt )
yt= y + hhdyt
cal l de r i vs ( xh , yt , dym)
yt= y + hdym
dym= dyt + dym
cal l de r i vs ( x+h , yt , dyt )
ys ai= y + h6 ( dydx + dyt + 2. 0_dpdym)
return
end subroutine rk4
Autor: Rudi Gaelzer IFM/UFPel Verso: 22 de julho de 2009

Você também pode gostar