Escolar Documentos
Profissional Documentos
Cultura Documentos
(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