ESTUDO E IMPLEMENTAÇÃO DE MÉTODOS …static.recantodasletras.com.br/arquivos/5651576.pdf ·...
Transcript of ESTUDO E IMPLEMENTAÇÃO DE MÉTODOS …static.recantodasletras.com.br/arquivos/5651576.pdf ·...
UNIVERSIDADE FEDERAL DO PARÁ.
INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS.
FACULDADE DE MATEMÁTICA.
Giovanni Almeida Marques.
ESTUDO E IMPLEMENTAÇÃO DEMÉTODOS NUMÉRICOS PARA A
SOLUÇÃO DE EQUAÇÕES DIFERENCIAISORDINÁRIAS.
BELÉM - PA
2009
UNIVERSIDADE FEDERAL DO PARÁ
INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS
FACULDADE DE MATEMÁTICA
Giovanni Almeida Marques.
ESTUDO E IMPLEMENTAÇÃO DEMÉTODOS NUMÉRICOS PARA A
SOLUÇÃO DE EQUAÇÕES DIFERENCIAISORDINÁRIAS.
Trabalho de Conclusão de Curso apresentado
como requisito parcial para obtenção do grau
de Bacharel em Matemática pela Faculdade
de Matemática da Universidade Federal do
Pará.
Orientador: Prof. Dr. Manoel Silvino Batalha de Araújo.
BELÉM - PA
2009
CERTIFICADO DE AVALIAÇÃO
GIOVANNI ALMEIDA MARQUES
ESTUDO E IMPLEMENTAÇÃO DE MÉTODOSNUMÉRICOS PARA A SOLUÇÃO DE EQUAÇÕES
DIFERENCIAIS ORDINÁRIAS.
Trabalho de Conclusão de Curso apresentado como requisito parcial para
obtenção do grau de Bacharel em Matemática, pela Faculdade de Matemática
da Universidade Federal do Pará, julgado pela seguinte banca examinadora:
Orientador : Prof.Dr.Manoel Silvino Batalha de Araújo.
Faculdade de Matemática, UFPA
Prof.Dr.
Faculdade de Matemática, UFPA
Prof.Dr.
Faculdade de Matemática, UFPA
DATA DA AVALIAÇÃO: / /
CONCEITO:
Dedicatória
À Deus,pela força e sabedoria,assim
como a minha amada família pelo
incentivo e apoio por estudar
Matemática .
3
Agradecimentos
À Deus, pelo dom da vida e por estar ao meu lado em todos os momentos, me dando
força para superar as dificuldades, me concedendo sabedoria e iluminando sempre meus
caminhos.
Ao professor Silvino, pela amizade, seriedade, paciência e o conhecimento adquirido
mediante a orientação deste trabalho.
À minha família, principalmente a minha mãe Denize e meus avós maternos Carlos (em
memória) e Maria de Lourdes que sempre me apoiaram e acreditaram em meu potencial,
assim como respeitaram minha vontade de vencer todos os obstáculos para chegar neste
instante tão especial que estou vivenciando.
Aos meus colegas de trabalho, que a todo instante me transmitem uma força positiva.
À Darciane, pelo o amor, carinho e atenção doada, além de ser um modelo para mim
de estudo e dedicação.
Ao Léo César, que nos momentos mais difíceis da graduação estivemos juntos nesta
labuta.
À Universidade Federal do Pará por ter aberto portas e por estar me dando agora a
oportunidade de uma profissão.
À direção da Faculdade de Matemática por oferecer um curso de Bacharelado em
Matemática de grande renome em toda região amazônica, me capacitando ter um ótima
qualificação.
À Ana Calandrini e a todos os bolsistas da Faculdade de Matemática pela bela edu-
cação e recepção ao atender minhas solicitações e responder minhas dúvidas em relação ao
funcionamento do curso.
À todos os colegas e amigos que caminharam comigo nesta importante etapa de minha
vida acadêmica.
À todos os professores da Faculdade de Matemática que contribuíram com a minha
formação ao longo destes 5 anos.
À todos que aqui não citados, mas que estiveram ao meu lado e torceram por mim. O
meu muito obrigado!
5
"A Matemática, quando a compreendemos
bem, possui não somente a verdade, mas
também a suprema beleza."
(Bertrand Russel)
Resumo
O presente estudo e implementação de métodos numéricos para a solução de equações
diferenciais ordinárias(E.D.O) tem como objetivo encontrar em um problema de valor ini-
cial,através de procedimentos numéricos soluções aproximadas da solução exata,em um
dado intervalo real,de maneira que a função em estudo seja contínua no mesmo inter-
valo,cuja solução analítica em muitos casos se torna difícil ou inviável.Neste propósito,
trataremos dos métodos de passo simples , como o método de Euler,o método dos três
termos da série de Taylor e método de Runge-Kutta, assim como o método de passos
múltiplos, como o método de Adams e suas fórmulas inversas de diferenciação, como tam-
bém o controle de erros e estabilidade destes métodos e a utilização dos mesmos em sis-
temas de equações de primeira ordem. Nosso objeto de implementação será a linguagem
de programação C que nos permite interagir com alguns dos métodos em questão.
Palavras-chave: E.D.O, Métodos numéricos, Euler, Runge-Kutta.
Conteúdo
Introdução 1
1 Métodos de Passos Simples 3
1.1 O Método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Erro de truncamento local e global no método de Euler . . . . . . . . . . . 11
1.3 Aplicação do Erro de Truncamento Acumulado no Método de Euler . . . . 15
1.4 Os Métodos de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.1 O Método Runge-Kutta de Primeira Ordem. . . . . . . . . . . . . . 21
1.4.2 O Método Runge-Kutta de Segunda Ordem. . . . . . . . . . . . . . 22
1.4.3 O Método Runge-Kutta de Terceira Ordem. . . . . . . . . . . . . . 26
1.4.4 O Método Runge-Kutta de Quarta Ordem. . . . . . . . . . . . . . . 27
2 Métodos de Passos Múltiplos 31
2.1 Método de Adams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.1.1 Método de Adams-Bashforth . . . . . . . . . . . . . . . . . . . . . . 32
2.1.2 Método de Adams-Moulton . . . . . . . . . . . . . . . . . . . . . . 38
A Algoritmos e Implementação dos Métodos numéricos 43
A.1 O Método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Referências Bibliográficas 44
Introdução
O estudo e a implementação de métodos numéricos para a solução de equações diferen-
ciais ordinárias(EDO) é uma ferramenta de grande utilidade para a solução de muitos pro-
blemas, sejam em Matemática ou áreas afins, cujas as técnicas conhecidas de resolução de
equações diferenciais mediante soluções analíticas, como a integração ou os desenvolvimen-
tos em séries de potências não se aplicam ou são de utilização muito complicada ou inviável.
Desta forma, o emprego de métodos numéricos têm a finalidade de conseguir aproximações
numéricas muito acuradas em relação à solução exata de uma equação diferencial.
Estaremos interessados em resolver um problema de valor inicial (PVI) da forma
y′ = f(x, y); y(x0) = y0
em que x0 e y0 são valores conhecidos e f(x, y) é uma função estabelecida. Nosso obje-
tivo é resolver o problema acima utilizando técnicas numéricas, implementadas em uma
linguagem de programação para computadores. Neste trabalho será usado a linguagem de
programação C para a implementação dos métodos clássicos e a comparação da solução
aproximada com a solução exata de uma dada equação diferencial ordinária de primeira
ordem. Além dos programas em C serão utilizados os aplicativos gnuplot ou scilab, que
possibilitarão fazer a análise gráfica de comparação das soluções aproximada e exata , assim
como o controle dos erros e estabilidade de cada método numérico trabalhado.
No capítulo 1, trataremos dos métodos numéricos de passo simples, como o de Eu-
ler,Euler inverso,Euler aprimorado, assim como Runge-Kutta de ordem dois e quatro, com
seus respectivos algoritmos, tabelas de dados e programas estruturados em linguagem de
programação C
1
No capítulo 2, trataremos do método de passos múltiplos, como o de Adams e fórmu-
las inversas de diferenciação,assim como a discussão de erros e estabilidade destes méto-
dos,podendo compará-los em relação aos resultados obtidos nos métodos de passo simples.
Temos no entanto ao longo dos capítulos, a preocupação de demonstrar algumas das
fórmulas matemáticas que regem os métodos numéricos,de forma a deixar mais claro e
coeso o próposito de nosso estudo.
A notação que será usada ao longo do trabalho são as seguintes. A solução exata
do problema de valor inicial dado pelas equações (1.1) e (1.2) será representada por φ ou
y = φ(x), deste modo, o valor da solução exata em xn é φ(xn). Para um dado procedimento
numérico, os símbolos yn e y′n = f(xn, yn) representarão os valores aproximados da solução
exata e de sua derivada no ponto xn. Obviamente, φ(x0) = y0, mas em geral, φ(xn) 6= yn,
para n ≥ 1. De modo análogo, φ′(x0) = y′0, mas em geral, φ′(xn) = f [xn, φ(xn)] não
é igual a y′n = f(xn, yn), para n ≥ 1. Além disso, em toda a discussão, utilizaremos
um espaçamento ou tamanho de passo uniforme h no eixo dos x. Assim, x1 = x0 + h,
x2 = x1 + h = x0 + 2h e, em geral xn = x0 + nh.
2
Capítulo 1
Métodos de Passos Simples
Neste capítulo, nosso objetivo é mostrar métodos que determinam aproximações numéri-
cas para a solução de um problema de valor inicial(P.V.I), no qual requer somente o con-
hecimento das condições iniciais x0 e y0, que será a nossa aproximação numérica inicial
yn, para determinar uma aproximação posterior yn+1 ao longo do intervalo [x0, x0 + nh]
estudado. A seguir, descrevemos dois métodos de passos simples, o método de Euler e o
método de Runge-Kutta. Dentro de cada método, é possível conseguir diferentes graus de
precisão dependendo do número de pontos precedentes que são utilizados em [x0, x0 + nh].
1.1 O Método de Euler
O método de Euler é o método numérico mais elementar de um passo para a resolução de
equações diferenciais ordinárias, porém computacionalmente pouco eficiente. Apesar de ele
ser raramete utilizado na prática, a simplicidade de sua derivação serve para exemplificar
as técnicas envolvidas na construção de alguns métodos mais avançados[4] .
Vamos nos concentrar nos problemas de valor inicial de equações diferenciais de primeira
ordem, constituídos pela equação diferencial
y′ = f(x, y) ; y(x0) = y0
3
Seguiremos o que diz o
Teorema 1.1 Sejam as funções f e fy =∂
∂yf(x, y) contínuas num certo retângulo α <
x < β; γ < y < δ que contém o ponto (x0, y0). Então num certo intervalo x0 − h < x <
x0 + h, contido em α < x < β há uma única solução y = φ(x) do problema de valor
inicial;
y′ = f(x, y)
y(x0) = y0
(1.1)
A primeira tentativa de resolução numérica de uma equação diferencial foi feita por
Euler, aproximadamente em 1768 [3]. Ele usou o que se chama hoje o método da reta
tangente, ou simplesmente método de Euler.
A fórmula do método de Euler pode ser obtida admitindo que f(x, y) em (1.1) seja
suficientemente derivável, e assim pode-se expandir a solução y = φ(x) em série de Taylor
em torno do ponto x = xn, para obter a solução em xn+1 = xn + h. Então,
φ(xn + h) = φ(xn) + φ′(xn)h + φ′′(xn)h2
2!+ φ′′′(xn)
h3
3!+ ... + φ(n)(xn)
hn
n!+ ... (1.2)
ou
φ(xn+1) = φ(xn) + f [xn, φ(xn)]h + φ′′(xn)h2
2!+ φ′′′(xn)
h3
3!+ ... + φ(n)(xn)
hn
n!+ ...
onde
φ′(xn) = f [xn, φ(xn)] (1.3)
e pela regra da cadeia, temos:
φ′′(xn) = fx[xn, φ(xn)] + fy[xn, φ(xn)]φ′(xn) (1.4)
= fx[xn, φ(xn)] + fy[xn, φ(xn)]f [xn, φ(xn)]
4
Se a série de Taylor for truncada depois dos dois primeiros termos, e se φ(xn+1) e φ(xn)
forem substituídas pelos valores aproximados yn+1 e yn, obtemos que:
φ(xn+1) = φ(xn) + f [xn, φ(xn)]h
yn+1 = yn + hf(xn, yn), (n = 0, 1, 2, · · · ) (1.5)
que é a fórmula numérica do método de Euler
Uma outra maneira de se chegar a fórmula recursiva (1.5) é escrever a equação (1.1) no
ponto x = xn na formadφ(xn)
dx= f [xn, φ(xn)] e aproximar por [φ(xn+1)− φ(xn)]/[xn+1 −
xn], e como h = xn+1 − xn, resultando em:
φ(xn+1)− φ(xn)
h∼= f [xn, φ(xn)] (1.6)
Substituindo φ(xn+1) e φ(xn) pelos seus valores aproximados yn+1 e yn, respectivamente,
obtemos novamente a fórmula de Euler
yn+1 = yn + hf(xn, yn)
Uma vez que x0 e y0 são conhecidos, a inclinação ou coeficiente angular da reta tangente
à solução em x = x0, especificamente φ′(x0) = f(x0, y0), também é conhecida. Deste modo,
podemos construir a reta tangente à solução em x0, e então obter um valor aproximado y1
de φ(x1) por meio de um deslocamento ao longo da reta tangente desde de x0 até x1. (fig.
1.1)
Figura 1.1: No método de Euler o valor aproximado da função f é obtido por valores na
reta tangente
Assim,
y1 = y0 + φ′(x0)(x1 − x0) = y0 + f(x0, y0)(x1 − x0) (1.7)
Uma vez que se tenha determinado y1, podemos calcular y′1 = f(x1, y1) e usar este valor
como o coeficiente angular para uma nova aproximação, ao nos deslocarmos de x1 até x2.
5
Obtendo assim,
y2 = y1 + y′1(x2 − x1) = y1 + f(x1, y1)(x2 − x1) (1.8)
Em geral, y1 6= φ(x1) e então, f(x1, y1) 6= f [x1, φ(x1)], que é o coeficiente angular da
solução exata em x1. Continuando desta maneira, usamos o valor de y calculado em cada
passo para determinar o coeficiente angular da aproximação do passo seguinte.
Agora consideremos o seguinte problema de valor inicial
y′ = x− 2xy
y(0) = 1(1.9)
A equação (1.9) é uma equação diferencial ordinária linear de primeira ordem, cuja
solução satisfaz a condição inicial y(0) = 1. Deste modo, obteremos a solução geral e
particular da equação diferencial proposta.
Solução analítica
Sabemos que uma equação diferencial ordinária linear de primeira ordem, tem a forma:
y′ + p(x)y = q(x) (1.10)
onde p(x) e q(x) são funções contínuas dadas, num certo intervalo α < x < β, segundo o
Teorema (1.1).
Assim da eq.(1.11), obtemos o fator integrante:
µ(x) = e∫
p(x)dx (1.11)
e a sua primitiva é:
y(x).e∫
p(x)dx =
∫q(x).e
∫p(x)dxdx + C (1.12)
A constante arbitrária C é usada para satisfazer a condição inicial estabelecida no problema.
Desta maneira, podemos escrever a equação (1.9) na forma da equação (1.10) acima.
y′ + 2xy = x (1.13)
6
onde p(x) = 2x e q(x) = x são funções contínuas no intervalo [0, 1] escolhido.
O fator integrante é:
µ(x) = e∫
2xdx = ex2
(1.14)
e a sua primitiva é:
y(x).ex2
= (
∫x.ex2
dx + C) (1.15)
onde; ∫x.ex2
dx =1
2ex2
+ C (1.16)
utilizando-se a técnica de integração por mudança de variável.
Através da condição inicial (1.9), encontramos que c = 12
e assim,
y = φ(x) =1
2+
1
2e−x2
(1.17)
é a solução particular do problema dado.
Solução numérica
Uma vez que a solução analítica é conhecida, não precisamos de métodos numéricos
para resolver o problema de valor inicial (1.9). Mas por outro lado, a disponibilidade de
uma solução exata facilitará o cálculo da exatidão dos diversos procedimentos numéricos
que serão usados neste problema.
Tomemos como exemplo, a utilização da fórmula de Euler (1.5), com um incremento
h = 0, 1 e seguidamente para h = 0, 05; onde deseja-se calcular um valor aproximado da
solução y = φ(x) em x = 0, 2 para o problema de valor inicial (1.9).
Identificamos inicialmente y′n = f(xn, yn) = xn − 2xnyn, de modo que a fórmula de
Euler (1.5) se escreve como
yn+1 = yn + h.(xn − 2.x.nyn)
Então, para h = 0, 1, utilizando a fórmula do método de Euler, calculamos inicialmente,
y′0 = f(0, 1) = 0− 2.0.1 = 0
7
então,
y1 = y0 + hf(0, 1) = 1 + (0, 1).0 = 1
Na etapa seguinte,
y2 = y1+hf(x1, y1) = 1+(0, 1)f(0, 1; 1) = 1+(0, 1)×(0, 1−2×0, 1×1) = 1+(0, 1)×(−0, 1) = 0, 99.
Isto é uma estimativa do valor de y( 0, 2 ) com x = 0, 2. Entretanto, tomando h = 0, 05,
tornam-se necessárias quatro iterações para chegarmos a x = 0, 2.
Se prosseguirmos com a aproximação do método de Euler, tomando valores menores
de incremento, como h = 0, 2, h = 0, 025 e h = 0, 001, encontraremos soluções que se
aproximam melhor da solução analítica. Porém, com o valor do incremento menor, será
necessário um maior número de iterações pelo método de Euler para obter soluções nos
pontos ao longo do intervalo [0, 1].
A figura 1.2 mostra uma comparação entre a solução analítica da equação 1.5 e os resul-
tados numéricos obtidos com a implementação do método de Euler, cujo código e algoritmo
encontran-se no apêndice A.1. Foram testados os incrementos h= 0,1 , ..... Observa-se que
a medida que o intervalo é refinado, a solução numérica se aproxima da solução analítica.
Entretanto, para valres de h acima de ..... não há uma variação significativa na solução
numérica, o que mostra que, para este problema o valor de h = ... é sufuciente. Na
tabela 1.1 são mostrados os resultados numéricos para diferentes valores do passo h. Estes
resultados estão também demonstrados na figura 1.2.
Graficamente temos, no intervalo [0,1], a solução exata do problema de valor inicial e as
soluções aproximadas com os valores de incremento da tabela acima obtidos pelo método
de Euler.(fig.1.2)
Figura 1.2: Podemos observar as soluções aproximadas em relação à exata.
Percebe-se que a aproximação numérica melhora quando o incremento diminui, pois à
8
Tabela 1.1: Aplicação do método de Euler,na resolução númerica de y′ = x−2xy, y(0) = 1,
com diferentes valores de incremento.x h = 0, 1 h = 0, 05 h = 0, 025 h = 0, 02 h = 0, 001 Sol. exata
0,00 1.0000 1.0000 1.0000 1.0000 1.0000 1,0000
0,10 0.9900 0.9975 0.9937 0.9940 0.9949 0,9950
0,20 0.9704 0.9851 0.9779 0.9784 0.9802 0,9804
0,30 0.9421 0.9635 0.9533 0.9540 0.9568 0,9570
0,40 0.9068 0.9339 0.9213 0.9222 0.9258 0,9261
0,50 0.8661 0.8978 0.8836 0.8848 0.8891 0,8894
0,60 0.8221 0.8571 0.8423 0.8436 0.8485 0,8488
0,70 0.7770 0.8138 0.7991 0.8005 0.8060 0,8063
0,80 0.7327 0.7700 0.7560 0.7576 0.7633 0,7636
0,90 0.6908 0.7272 0.7146 0.7162 0.7221 0,7224
1,00 0.6526 0.6871 0.6762 0.6777 0.6803 0,6839
medida que foi se reduzindo o incremento h pela metade do incremento anterior, como em
h = 0.1, h = 0.05 e h = 0.025, as curvas das soluções aproximadas tendem a se aproximar
da curva da solução analítica, porém a curva da solução aproximada em h = 0.001 foi a
que mais se aproximou da curva da solução analítica. Porém, não chegam a incidir com a
curva da solução analítica do problema inicial, devido haver uma diferença entre a solução
aproximada e a analítica.
Definimos o erro absoluto como
ErrAbs = |exata− aprox.|,
O erro relativo como
ErrRel =|exata− aprox.|
|exata|,
e o erro relativo percentual como
9
Tabela 1.2: Erro relativo no método de Euler, na resolução númerica de y′ = x−2xy, y(0) =
1.Erro
x h = 0, 1 h = 0, 05 h = 0, 025 h = 0, 02 h = 0, 001
0,00 0.0000 0.0000 0.0000 0.0000 0.0000
0,10 0.0050 0.0025 0.0012 0.0010 0.0000
0,20 0.0101 0.0050 0.0025 0.0020 0.0001
0,30 0.0154 0.0076 0.0038 0.0030 0.0001
0,40 0.0208 0.0102 0.0051 0.0040 0.0002
0,50 0.0261 0.0129 0.0064 0.0051 0.0002
0,60 0.0313 0.0154 0.0076 0.0061 0.0003
0,70 0.0362 0.0178 0.0088 0.0070 0.0003
0,80 0.0404 0.0199 0.0099 0.0079 0.0003
0,90 0.0437 0.0215 0.0107 0.0085 0.0004
1,00 0.0457 0.0222 0.0112 0.0090 0.0004
ErrRel(%) =|exata− aprox.|
|exata|× 100 =
erro absoluto
|exata|× 100
Na figura .... temos representação gráfica do erro relativo entros a solução analitica e a
soluçao numérica obtida com a implementação do método de Euler. Observa-se ... ... .. ...
Figura 1.3: Note que o erro relativo se aproxima de zero para h = 0, 001.
Deste modo, o erro relativo no método de Euler diminui à medida que o incremento
tomado diminui.
10
1.2 Erro de truncamento local e global no método de
Euler
Avaliar os erros de um método numérico é uma tarefa importante para verificar a
convergência das soluções aproximadas em relação à exata. Desta forma, descrevamos os
diferentes tipos de erros.
Define-se o valor absoluto da diferença entre o valor exato φ(xn) e a valor aproximado
yn do problema de valor inicial (1.1), como o erro de truncamento local en na etapa
n e dada por:
en = |φ(xn)− yen| (1.18)
isto ocorre devido termos suposto que o processo de aproximação tenha começado somente
nesta etapa, isto é, yn−1 = φ(xn−1), e deste modo os dados são considerados exatos.
Agora, definimos o erro de truncamento global En na etapa n como o valor
absoluto da diferença entre a solução exata e a solução aproximada, e é dada por:
En = |φ(xn)− yn| (1.19)
isto já ocorre devido termos suposto que o processo de aproximação tenha começado
na etapa 0, isto é, o único valor na sequência x0, x1, ..., xn é x0. Em geral, este erro é difícil
de determinar; portanto, geralmente trataremos com o erro de truncamento local.
Desta forma, também podemos falar de erro de arrendondamento Rn, como sendo
a diferença de yn o valor aproximado pelo método numérico dado e Yn o valor realmente
calculado pelo método numérico dado por:
Rn = |yn − Yn| (1.20)
O valor absoluto do erro total no cálculo de φ(xn) é dado por:
|φ(xn)− Yn| = |φ(xn)− yn + yn − Yn| (1.21)
11
Utilizando-se a desigualdade triangular |a + b| ≤ |a| + |b| e aplicando na equação
(1.21),temos:
|φ(xn)− Yn| ≤ |φ(xn)− yn|+ |yn − Yn|
|φ(xn)− Yn| ≤ |En|+ |Rn| (1.22)
O erro total está assim limitado pela soma dos valores absolutos dos erros de trunca-
mento e dos erros de arrendondamento.
A ocorrência destes erros provém de duas causas:
(1) em cada passo, usamos uma fórmula aproximada para determinar yn+1
(2) os dados de entrada, em cada passo, não concordam, em geral, com a solução exata,
pois também, em geral, φ(xn) não é igual a yn. Se admitirmos que os dados de entrada são
corretos, o único erro, quando se avança um passo no processo, novamente ao uso de uma
fórmula aproximada.
Para determinarmos o erro de truncamento local no método de Euler, vamos admitir
que a solução y = φ(x), do problema de valor inicial (1.1), tenha derivada segunda contínua
no intervalo considerado. Para garantir esta hipótese, podemos admitir que f, fx, fy sejam
contínuas no intervalo mencionado. De fato, se f tiver estas propriedades, e se φ for solução
do problema de valor inicial (1.1), então:
φ′(x) = f [x, φ(x)],
e pela regra da cadeia, temos:
φ′′(x) = fx[x, φ(x)] + fy[x, φ(x)]φ′(x)
= fx[x, φ(x)] + fy[x, φ(x)]f [x, φ(x)])
Uma vez que o segundo membro desta equação é contínuo, φ′′ também é contínua.
12
Então, desenvolvendo φ em torno de xn, por uma série de taylor com resto, obtemos:
φ(xn + h) = φ(xn) + φ′(xn)h +1
2φ′′(xn)h2 (1.23)
onde xn é qualquer ponto no intervalo xn < xn < xn + h.
Subtraindo a equação (1.5) da equação (1.23), e observando que φ(xn + h) = φ(xn+1)
e φ′(xn) = f [xn, φ(xn)], temos que:
φ(xn+1)− yn+1 = [φ(xn)− yn] + h[f(xn, φ(xn))− f(xn, yn)] +1
2φ′′(xn)h2 (1.24)
Para calcular o erro de fórmula local, consideramos que os dados no enésimo passo estão
corretos, isto é, yn = φ(xn). Então, obtemos imediatamente da equação (1.24) que o erro
de truncamento local en+1 é:
en+1 = φ(xn+1)− yn+1 =1
2φ′′(xn)h2 (1.25)
Deste modo, o erro de truncamento local para o método de Euler é proporcional ao
quadrado do incremento h e o fator de proporcionalidade depende da segunda derivada da
solução φ. A expressão da equação (1.25) depende de n e em geral é diferente para cada
passo. Um limite uniforme para o erro, válido para um intervalo[a, b], é dado por:
|en| ≤Mh2
2(1.26)
onde M é o máximo de |φ′′(x)| no intervalo [a, b]. Como a equação (1.26) se baseia no
pior caso possível de |φ′′(x)|, pode ser que o erro local seja consideravelmente superestimado
em algumas regiôes do intervalo [a, b]. A equação (1.26) pode ser usada, entre outras coisas,
para escolher um incremento que resulte em um erro de truncamento local que não exceda
um determinado limite de tolerância. Por exemplo: se o erro de truncamento local não for
maior do que ε, a equação (1.26) revela que:
Mh2
2≤ ε =⇒ h ≤
√2ε/M (1.27)
13
A dificuldade primária para com o uso das equações (1.24), (1.26) e (1.27) na estimativa
do erro de fórmula local está na obtenção de uma estimativa precisa de M ou |φ′′(x)|. Seja
como for, essas equações mostram que o erro de truncamento local é proporcional a h2
(note que M é independente de h); deste modo, reduzindo h por um fator de 12, reduzimos
o limite do erro por um fator de 14, e uma redução por um fator de 1
10em h reduz o limite
do erro por um fator de 1100
, (reduzimos h à metade, o erro é reduzido à quarta parte e
assim por diante).
Mais importante, que o erro de truncamento local é o erro de truncamento global En. No
entanto, uma estimativa do erro de truncamento local fornece uma melhor compreensão do
procedimento numérico e um modo de comparar a precisão dos diferentes procedimentos
numéricos. A análise para estimar En é mais difícil que no caso de en. Entretanto, con-
hecendo o erro de truncamento local podemos fazer uma estimativa intuitiva do erro de
truncamento global para um valor fixo x > x0 da seguinte forma. Suponha que damos n
passos para ir de x0 a x =x0 +nh. Em cada passo, o erro é no máximo de Mh2/2; assim, o
erro total nos n passos é no máximo de Mh2/2. Observando que, n = (x− x0)/h, descob-
rimos que o erro de truncamento global para o método de Euler, ao passarmos de x0 para
x, é dado no máximo por:
nMh2
2= (x− x0)
Mh
2(1.28)
Apesar deste argumento não ser totalmente correto por não levar em conta o efeito que
um erro cometido num passo causará nos próximos passos, Entretanto, é possível mostrar
que, em qualquer intervalo finito, o erro de truncamento global ao usarmos o método de
Euler, nunca é maior do que o produto de h por uma constante. Assim, ao irmos de x0 a um
ponto fixado x, o erro de truncamento global pode ser reduzido tomando-se um tamanho
de passo h menor. Se tomarmos h muito pequeno, isto é, se usarmos muitos passos para
irmos de x0 a x, o erro de truncamento acumulado poder-se-á tornar mais importante que
o erro de truncamento global. Na prática, devemos considerar ambas as fontes de erro e
devemos fazer uma escolha "ótima" de h de modo que nenhum dos erros seja muito grande.
14
O método de Euler é considerado como um método de primeira ordem, porque o erro
de truncamento global é proporcional á primeira potência do tamanho do incremento.
1.3 Aplicação do Erro de Truncamento Acumulado no
Método de Euler
Vamos discutir o erro de truncamento acumulado associado ao método de Euler na
resolução do problema de valor inicial
y′ = f(x, y), y(x0) = y0.
Admitindo que as funções f e fy sejam contínuas numa região R do plano xy que inclui
o ponto (x0, y0), pode-se mostrar que existe uma constante L tal que
|f(x, y)− f(x, y)| < L|y − y|
onde (x, y) e (x, y) são dois pontos quaisquer em R com a mesma coordenada x. Além
disso, vamos admitir que fx seja contínua, de modo que a solução φ tem uma derivada
segunda contínua.
(a) Utilizando a equação (1.24), mostrar que
|En+1| ≤ |En|+ h|f [xn, φ(xn)]− f(xn, yn)|+ 1
2h2|φ′′(xn)| ≤ α|En|+ βh2 (1.29)
onde α = 1 + hL e β = max|φ′′(x)|/2 em x0 ≤ x ≤ xn.
(b) Admitindo, sem provas, que se E0 = 0, e que se |En| obedecer a equação(1.29),
então|En| ≤βh2(αn − 1)
(α− 1), para α 6= 1 Mostrar que;
|En| ≤(1− hL)n − 1
Lβh (1.30)
15
A equação (1.30) dá um limite para |En| em termos de h, L, n e β. Observar que para um
h fixo, este limite de erro cresce quando n cresce; isto é, o limite de erro aumenta quando
aumenta a distância ao ponto de partida x0.
(c) Mostrar que 1 + hL)n ≤ enhL e então que;
|En| ≤enhL − 1
Lβh =
e(xn−x0)L − 1
Lβh (1.31)
Para um ponto fixo xn = x0 + nh, (isto é, nh é constante e h = (xn − x0)/n este limite
de erro tem a forma do produto de uma constante por h e se aproxima de zero quando
h → 0.) Observar também que quando nhL = (xn − x0)L for pequeno, o segundo membro
da equação anterior é aproximadamente nh2β = (xn − x0)βh, que foi obtido na equação
(1.28) por um raciocínio intuitivo.
Solução:
(a) Da definição de erro de truncamento acumulado, podemos escrever
En+1 = φ(xn+1)− yn+1,
Deste modo,
|En+1| = |φ(xn+1)− yn+1| = |φ(xn+h)− yn+1| (1.32)
Pela (1.23), temos:
φ(xn + h) = φ(xn) + φ′(xn)h +1
2φ′′(xn)h2
e pela eq.(1.5) temos
yn+1 = yn + hf(xn, yn)
Assim; substituindo a (1.23) e (1.5) em (1.32), temos:
|En+1| = |φ(xn) + φ′(xn)h +1
2φ′′(xn)h2 − [yn + hf(xn, yn)]| (1.33)
16
Substituindo φ′(xn) por f [xn, φ(xn)] na equação anterior;
|En+1| = |φ(xn) + f [xn, φ(xn)]h +1
2φ′′(xn)h2 − [yn + hf(xn, yn)]|
= |φ(xn)− yn + h[f [xn, φ(xn)]− f(xn, yn)] +1
2φ′′(xn)h2| (1.34)
Aplicando a desigualdade triangular, têm-se
|En+1| ≤ |φ(xn)− yn|+ |h[f [xn, φ(xn)]− f(xn, yn)]|+ |12φ′′(xn)h2|
|En+1| ≤ |φ(xn)− yn|+ |h[f [xn, φ(xn)]− f(xn, yn)]|+ |12h2||φ′′(xn)|
|En+1| ≤ |En|+ h|[f [xn, φ(xn)]− f(xn, yn)]|+ 1
2h2|φ′′(xn)| (1.35)
Mas; como φ′′ é contínua e β = max|φ′′(xn)/2| em x0 < xn < xn, então da eq.(1.31)
podemos afirmar que;
|[f [xn, φ(xn)]− f(xn, yn)]| < L|φ(xn)− yn|,
onde é a nossa hipótese que ela seja uma função lipschitziana quando existe uma con-
stante L>0(chamada constante de Lipschitz da função f) tal que
|f(x, y)− f(x, y)| < L|y − y|
seja quais forem (x, y) e (x, y) dois pontos quaisquer em R
Temos, φ(xn) ∼= f [xn, φ(xn)], assim como, yn∼= f(xn, yn) podemos obter:
|En+1| ≤ |En|+ h|[f [xn, φ(xn)]− f(xn, yn)]|+ 1
2h2|φ′′(xn)|
|En+1| ≤ |En|+ hL|φ(xn)− yn|+1
2h2|φ′′(xn)|
|En+1| ≤ |En|+ hL|En|+1
2h2|φ′′(xn)|
17
|En+1| ≤ (1 + hL)|En|+1
2h2|φ′′(xn)|
|En+1| ≤ α|En|+1
2h2|φ′′(xn)|
Logo;
|En+1| ≤ |En|+ h|[f [xn, φ(xn)]− f(xn, yn)]|+ 1
2h2|φ′′(xn)| ≤ α|En|+ βh2
(b) Temos que, α = 1 + hL ⇒ hL = α− 1
Assim, da equação |En| ≤βh2(αn − 1)
(α− 1), onde substituindo o valor de hL obtemos:
|En| ≤βh2(αn − 1)
hL
|En| ≤βh(αn − 1)
L
|En| ≤(1 + hL)n − 1
Lβh
Utilizando, o fato de que é válido a desigualdade (1 + x) ≤ ex,∀x ∈ R e a expansão de
ex = 1 + (x− 0)e0 + (x− 0)2 ex/2!, segundo a série de Taylor,com x0 < x < xn;
Apartir daí, podemos também afirmar que (1 + x)n < (ex)n e tomando x = hL; temos:
(1 + hL)n ≤ (ehL)n
Assim,
ehL = 1 + (hL− 0)e0 + (hL− 0)2 ex/2! ≥ 1 + hL ⇒ 1 + hL ≤ ehL
Então;
(1 + hL)n ≤ (ehL)n, ∀hL > 0
Assim; mostraremos por indução matemática que
18
|En| ≤βh2(αn − 1)
(α− 1)
Sabemos que; E0 = 0 e |En+1| ≤ α|En|+ βh2
Tomando n=0; verifiquemos a equação acima:
|E1| ≤ α|E0|+ βh2
|E1| ≤ βh2 = βh2(α− 1)/α− 1
Tomando n=1; verifiquemos a equação acima:
|E2| ≤ α|E1|+ βh2 ≤ αβh2 + βh2 =
= βh2(α + 1) = βh2(α + 1)(α− 1)/(α− 1) = βh2(α2 − 1)/(α− 1)
Supondo-se, que vale para n = k − 1, temos:
|Ek| ≤ α|Ek−1|+ βh2 ≤ βh2(αk − 1)/(α− 1)
Por hipótese, tomemos para n=k;
|Ek+1| ≤ α|Ek|+ βh2 ≤ αβh2(αk − 1)/(α− 1) + βh2 =
= βh2[(αk+1 − α)/(α− 1)] + 1
= βh2(αk+1 − α + α− 1)/(α− 1)
= βh2(αk+1 − 1)/(α− 1)
Logo, o fato de
|Ek+1| ≤ βh2(αk+1 − 1)/(α− 1) é verdadeiro
Assim;
|En| ≤ βh2(αn − 1)/(α− 1) também é verdadeiro.
(c) Mostrar que (1 + hL)n ≤ enhL, e então que
19
|En| ≤ [enhL − 1/L]βh = [e(xn−x0)L − 1/L]βh
sabemos do item anterior que;
|En| ≤(1 + hL)n − 1
Lβh
Utilizando, o fato de (1 + hL)n ≤ enhL, temos que:
|En| ≤ (1+hL)n−1L
βh ≤ [e(nh)L − 1/L]βh
Porém, xn = x0 + nh ⇒ nh = xn − x0
Assim, substituindo o valor de nh na equação acima, obtemos:
|En| ≤ (1+hL)n−1L
βh ≤ [e(xn−x0)L − 1/L]βh
Quando; h → 0, temos que |En| → 0.
1.4 Os Métodos de Runge-Kutta
O uso dos métodos de Runge-Kutta na resolução de problemas de valor inicial produzem
resultados equivalentes aos obtidos caso a série de Taylor com termos de ordem maior ou
igual a dois fosse usada. A vantagem de sua utilização em relação à série de Taylor está
no fato de que não será necessário o cálculo de derivadas de f(x, y).
Por simplicidade, daqui por diante abrevia-se Runge-Kutta por RK. Todos os métodos
de RK de R estágios têm algoritmo na forma
yn+1 − yn = hφ(xn, yn, h), com k ≥ 0 (1.36)
onde a função φ representa uma aproximação para f(x, y) no intervalo [xn, xn+1].
20
Temos que
φ(x, y, h) =R∑
r=1
crkr (1.37)
k1 = f(x, y)
kr = f
(x + arh, y + h
r−1∑s=1
brsks
), com r = 2, 3, · · · , R
ar =r−1∑s=1
brs, com r = 2, 3, · · · , R
e a função f do método de Taylor calculada no ponto (x, y)
φT (x, y, h) = f(x, y) +h
2!f ′(x, y) +
h2
3!f ′′(x, y) +
h3
4!f ′′′(x, y) +
h4
5!f (iv)(x, y) +
h5
6!f (v)(x, y)+
+ · · ·+ hq−1
q!f (q−1)(x, y) (1.38)
Para obter métodos de RK, devemos determinar as constantes cr, ar e brs, compara-
ndo a expansão da função φ(x, y, h) definida por (1.37) em potências de h, com a função
φT (x, y, h) do método de Taylor, no sentido de se obter métodos de determinda ordem.
Veremos a seguir como fazer isto.
1.4.1 O Método Runge-Kutta de Primeira Ordem.
O método de Euler, segundo a equação (1.5) é um método de série de Taylor de primeira
ordem, onde podemos perceber que é um Método de Runge-Kutta de Primeira Ordem. Ele
se caracteriza por ter um estágio e possui ordem um.
Isto porque tomamos em (1.37), R = 1.
Onde obtemos:
φ(x, y, h) = c1k1, (1.39)
com k1 = f(x, y)
21
Tomando c1 = 1 em (1.39). Portanto:
yn+1 = yn + hf(xn, yn)
1.4.2 O Método Runge-Kutta de Segunda Ordem.
Consideremos, inicialmente, que desejamos obter métodos de Runge-Kutta de dois es-
tágios. Devemos tomar, em (1.37), R = 2. Fazendo isto, obtemos:
φ(x, y, h) = c1k1 + c2k2, (1.40)
k1 = f(x, y),
k2 = f(x + a2h, y + hb21k1),
a2 = b21,
Substituindo os valores de b21 e k1 em k2, segue que:
k2 = f(x + a2h, y + ha2f).
Desenvolvendo k2 em série de Taylor em torno do ponto (x, y), obtemos:
k2 = f(x, y) + (a2h)fx(x, y) + (ha2f)fy(x, y) +(a2h)2
2!fxx(x, y) + (a2h)(ha2f)fxy(x, y)+
+(ha2f)2
2!fyy(x, y) + O(h3). (1.41)
Substituindo o valor de k1 por f e k2 pela expressão (1.41), em (1.40), segue que:
φ(x, y, h) = c1f+c2
[f + (a2h)fx + (a2hf)fy +
(a2h)2
2!fxx + (a2h)2ffxy +
(a2hf)2
2!fyy + O(h3)
]
φ(x, y, h) = (c1 + c2)f + c2a2h(fx + fyf) +(a2h)2
2!c2[fxx + 2ffxy + fyyf
2] + O(h3)
22
onde agrupamos os termos de mesma potência de h. Observe que, na expressão anterior,
f e suas derivadas estão calculadas em (x, y). Denotando por:
F = fx + fyf e G = fxx + 2ffxy + fyyf2 (1.42)
obtemos:
φ(x, y, h) = (c1 + c2)f + c2a2hF +(a2h)2
2!c2G + O(h3) (1.43)
Note que podemos escrever a função φT (x, y, h) em (1.38), com q = 3, como:
φT (x, y, h) = f(x, y) +h
2!f ′(x, y) +
h2
3!f ′′(x, y) + O(h3)
= f +h
2!(fx + fyf) +
h2
3!(fxx + 2fxyf + fyyf
2 + fxfy + f 2y f) + O(h3)
= f +h
2!(fx + fyf) +
h2
3![fxx + 2fxyf + fyyf
2 + fy(fx + fyf)] + O(h3)
Usando (1.42), obtemos:
φT (x, y, h) = f +h
2F +
h2
3![G + fyF ] + O(h3) (1.44)
Para determinarmos métodos de Runge-Kutta de 2 estágios e ordem máxima, compara-
mos (1.43) com (1.44), obtendo:
c1 + c2 = 1
c2a2 = 12
(1.45)
Resolvendo este sistema, iremos obter métodos de Runge-Kutta de ordem 2, pois em
(1.36) temos hφ(x, y, h) e portanto, estamos impondo igualdade até termos da O(h2). Além
disso, como o sistema(1.45) possui duas equações e três incógnitas, ele possui infinitas
soluções e, portanto, podemos afirmar que existem infinitos métodos de Runge-Kutta de 2
estágios e ordem 2.
23
Assim atribuindo um valor para uma das constantes em (1.45), obtemos as outras duas
em função desta. Os Métodos de Runge-Kutta de 2 estágios e ordem 2 mais usados
são obtidos a seguir.
a) Tomando em (1.45), c1 = 1 e c2 = 12. Portanto:
yn+1 = yn + hk2, onde :
k1 = f(xn, yn) (1.46)
k2 = f
(xn +
1
2h, yn +
1
2hk1
)que é conhecido como Método de Euler Modificado., ou simplesmente fórmula do ponto
médio[4].
b) Tomando em (1.45), c1 = 12, c2 = 1
2e a2 = 1 Portanto:
yn+1 = yn +h
2(k1 + k2), onde :
k1 = f(xn, yn) (1.47)
k2 = f(xn + h, yn + hk1)
que é conhecido como Método de Euler Melhorado ou simplesmente fórmula de Heun[4].
Uma fórmula aproximada melhor pode ser obtida se o segundo membro na equação (1.6)
for aproximado com maior exatidão. Uma forma de conseguir esta melhoria é a de substitui-
lo pela média dos seus valores nas duas extremidades do intervalo de integração, ou seja,
por {f [xn, φ(xn)]+f [xn+1, φ(xn+1)]}/2. Além disso, se substituirmos φ(xn) e φ(xn+1) pelos
respectivos valores aproximados yn e yn+1, obteremos, da equação (1.6),
yn+1 = yn +f(xn, yn) + f(xn+1, yn+1)
2× h (1.48)
Uma vez que a incógnita yn+1 aparece como um dos argumentos de f no segundo
membro da equação (1.48), é muitas vezes bastante difícil resolver esta equação em yn+1.
Esta dificuldade pode ser superada pela substituição, no segundo membro da equação
(1.48), de yn+1 pelo valor obtido mediante a fórmula de Euler (1.5).
24
Assim,
yn+1 = yn +f(xn, yn) + f [xn + h, yn + hf(xn, yn)]
2× h
yn+1 = yn +fn + f(xn + h, yn + hfn)
2× h (1.49)
onde xn+1 foi substituído por xn + h
Os valores f(xn, yn) e f(xn+1, yn+1) são aproximações do coeficiente angular da curva
em (xn, y(xn)) e (xn+1, y(xn+1)) e consequentemente, o quocientef(xn, yn) + f(xn+1, y
∗n+1)
2em (1.48) pode ser interpretado como um coeficiente angular médio no intervalo entre xn
e xn+1.
Na figura 1.4 mostramos o caso em que n = 0. Notemos que f(x0, y0) e f(x1, y∗1)
são coeficientes angulares das retas indicadas que passam pelos pontos (x0, y0) e (x1, y∗1),
respectivamente. Tomando uma média desses coeficientes angulares, obtemos o coeficiente
angular das retas tracejadas. Em lugar de avançarmos ao longo da reta de coeficiente
angular m = f(x0, y0) até o ponto com ordenada y∗1 obtido pelo método usual de Euler,
avançamos ao longo da reta por (x0, y0) com coeficiente angular mmed até atingirmos x1.
Pela observação da figura (1.4), parece plausível que y1 constitua uma melhora em relação
a y∗1. De fato, veremos que o método de Euler melhorado é mais preciso do que o método
de Euler.
Podemos também dizer que o valor de
y∗1 = y0 + hf(x0, y0)
prediz um valor de y(x1), enquanto que
y = y +f(x0, y0) + f(x1, y
∗1)
2× h
corrige essa estimativa
Outro fato importante, é que para obtermos métodos de Runge-Kutta de 2 estágios e
ordem 3, é necessário que além de (1.45), tenhamos:
25
Figura 1.4: O Método de Euler melhorado
a22c2
2G =
1
6(G + fyF )
=⇒(
a22c2
2− 1
6
)G =
1
6fyF
A igualdade acima só pode ser satisfeita impondo-se severas condições sobre a função
f e, portanto, não existem métodos de Runge-Kutta de 2 estágios e ordem 3.
1.4.3 O Método Runge-Kutta de Terceira Ordem.
Se desejarmos obter métodos de Runge-Kutta de três estágios, devemos desenvolver
também k3 em série de Taylor, pois os métodos de Runge-Kutta de 3 estágios são obtidos
a partir de:
yn+1 = yn + h(c1k1 + c2k2 + c3k3)
onde k1 e k2 possuem as mesmas expressões do método de dois estágios e
k3 = f(x + ha3, y + hb31k1 + hb32k2)
= f(x + ha3, y + h(a3 − b32)k1 + hb32k2)
desde que a3 = b31 + b32. Devemos então agrupar os termos semelhantes e compará-los
com a φT (x, y, h). Como pode ser observado na seção anterior, a obtenção de métodos de
Runge-Kutta envolve manipulações tediosas, e portanto serão omitidas. Daremos apenas
o sistema obtido quando se compara φ com φT para se obter métodos de Runge-Kutta de
3 estágios e ordem máxima. Assim:
26
c1 + c2 + c3 = 1
c2a2 + c3a3 = 12
c3b32a2 = 16
c2a22 + c3a
23 = 1
3
(1.50)
que é um sistema de quatro equações e seis incógnitas, onde comparamos os termos de
φ e φT até O(h3). Atribuindo valores a duas das variáveis, obtemos as outras quatro em
função destas.
O Método de Runge-Kutta de 3 estágios e ordem 3 mais popular é obtido a
seguir.
Tomando em (1.50), c2 = 23, c3 = 1
6, calcula-se c1 = 1
6, a2 = 1
2, a3 = 1 e b32 = 2, que
fornece o seguinte algoritmo para um método de RK de terceira ordem:
yn+1 = yn +h
6(k1 + 4k2 + k3)
onde:
k1 = f(xn, yn)
k2 = f
(xn +
1
2h, yn +
1
2hk1
)(1.51)
k3 = f(xn + h, yn + 2hk2 − hk1)
1.4.4 O Método Runge-Kutta de Quarta Ordem.
Agora , discutiremos um método também formulado originalmente por Runge e Kutta.
Este método é hoje oficialmente conhecido como método clássico Runge-Kutta de quarta
ordem e quatro estágios, mas muitos autores o chamam simplesmente de método de Runge-
Kutta, pode ser o mais usado, onde possui uma combinação de simplicidade, alta precisão
e economia. Neste método, o erro de truncamento local é proporcional a h5, isto devido a
sua fórmula clássica ser equivalente a uma fórmula de Taylor de cinco termos:
yn+1 = yn + hy′n +h2
2!y′′n +
h3
3!y′′′n +
h4
4!y(iv)
n (1.52)
27
Assim, como desejamos obter métodos de Runge-Kutta de quatro estágios e ordem
máxima, devemos desenvolver também k4 em série de Taylor, sendo que k1, k2 e k3 possuem
as mesmas expressões do método de dois e três estágios e são obtidos apartir de (1.37):
yn+1 = yn + h(c1k1 + c2k2 + c3k3 + c4k4)
onde
φ(x, y, h) = c1k1 + c2k2 + c3k3 + c4k4
e
k4 = f(x + a4h, y + hb41k1 + hb42k2 + hb43k3)
desde que a4 = b41 + b42 + b43. Devemos então agrupar os termos semelhantes na série
de Taylor e compará-los com a φT (x, y, h) em (1.38). Assim obtemos o sistema quando
se compara φ com φT , onde temos 8 equações e 10 incógnitas, em que b21 = a2; b31 =
a3 − b32; b41 = a4 − b42b43,como fizemos para o método RK2.
c1 + c2 + c3 + c4 = 1
c2a2 + c3a3 + c4a4 = 12
c2a22 + c3a
23 + c4a
24 = 1
3
c2a32 + c3a
33 + c4a
34 = 1
4
a2b32c3 + (a2b42 + a3b43)c4 = 16
a2a3b32c3 + a4(a2b42 + a3b43)c4 = 18
a22b32c3 + (a2
2b42 + a23b43)c4 = 1
12
a2b32b43c4 = 124
(1.53)
Cada solução deste sistema define um método de Runge-Kutta com ordem 4. Portanto,
existem muitos métodos de Runge-Kutta de 4 estágios e ordem 4, mais trataremos somente
de um caso particular, sendo este o mais utilizado. Assim, temos:
28
yn+1 = yn +h
6(k1 + 2(k2 + k3) + k4) (1.54)
onde;
k1 = f(xn, yn) (1.55)
k2 = f(xn +1
2h, yn +
1
2hk1)
k3 = f(xn +1
2h, yn +
1
2hk2)
k4 = f(xn + h, yn + hk3)
Desta forma, esta fórmula de Runge-Kutta envolve uma média ponderada dos valores
de f(x, y) tomados em diferentes pontos do intervalo xn ≤ x ≤ xn+1.
Podemos interpretar a soma (k1 +2k2 +2k3 +k4)/6 como um coeficiente angular médio.
Note que k1 é o coeficiente angular na extremidade esquerda do intervalo, k2 é o coeficiente
angular no ponto médio estimado pela fórmula de Euler para ir de xn até xn + h/2,k3
é uma segunda aproximação do coeficiente angular no ponto médio e, finalmente, k4 é o
coeficiente angular em xn +h estimado pela fórmula de Euler e pelo coeficiente angular k3,
indo de xn até xn + h.
Note que é duas ordens de grandeza mais preciso que o método de Euler melhorado e
três ordens de grandeza mais preciso que o método de Euler.
Temos também, que a equação (1.52) difere por termos no desenvolvimento de Taylor
da solução φ por termos que são proporcionais a h5, a álgebra envolvida é bastante extensa.
Deste modo, o erro de truncamento local ao usarmos a equação (1.52) é proporcional a h5
e que, para um intervalo finito, o erro de truncamento global é, no máximo, igual a uma
constante vezes h4.
Note também que, se f não depende de y, então
k1 = f(xn), k2 = k3 = f(xn, h/2), k4 = f(xn + h) (1.56)
e a equação(1.54) é idêntica àquela obtida usando-se a regra de Simpson para avaliar a
integral de y′ = f(x):
29
∫ yn+1
yn
dy =
∫ xn+h
xn
f(x) dx
ou
yn+1 − yn =h
6[f(xn) + 4f(xn + h/2) + f(xn + h)]
O fato de a regra de Simpson possuir um erro proporcional a h5 está de acordo com o
comentário anterior sobre o erro de truncamento de Runge-Kutta de ordem 4.
30
Capítulo 2
Métodos de Passos Múltiplos
O foco deste capítulo é mostrar métodos que se utilizam das aproximações numéricas
obtidas em um dos métodos de passos simples, para se determinar a aproximação seguinte
ao longo do intervalo [x0, x0 + nh] estudado, onde estes métodos são ditos não-iniciáveis,
o que dificulta o seu uso, mas que que será compensada por possuir uma maior precisão
à solução analítica do problema de valor inicial (1.1), quando comparados aos métodos
numéricos estudados anteriormente ao longo deste trabalho. Dizemos que um método de
passo múltiplo é de passo s se a cada passo ele usar s valores, ou seja, a aproximação yn+1 é
calculada usando-se valores yn, yn−1, yn−2, · · · , yn−(s+1), isto é, onde se faz necessário dados
de outros pontos anteriores, além do ponto prévio a se determinar.
Um método de Passo Múltiplo é definido pela seguinte relação:
k∑j=0
αjyn+j = hk∑
j=0
βjfn+j (2.1)
onde αj e βj são constantes arbitrárias independentes de n, com αk 6= 0 e α0 e β0 não
ambos nulos.
Dizemos que o método (2.1) é explícito se βk = 0, e implícito se βk 6= 0
31
2.1 Método de Adams
Este método é obtido pela solução do problema de valor inicial (1.1), através da técnica
de integração numérica.
Considerando y = φ(x) solução de (1.1) e φ′(x) = f [x, φ(x)], desta forma, integrando-se
de xn a xn+1, obtemos:
∫ xn+1
xn
φ′(x) dt =
∫ xn+1
xn
f [x, φ(x)] dx
Aplicando o 1◦ Teorema Fundamental do Cálculo no 1◦ membro da igualdade,temos
que:
φ(x) |xn+1xn
=
∫ xn+1
xn
f [x, φ(x)] dx
φ(xn+1)− φ(xn) =
∫ xn+1
xn
f [x, φ(x)] dx (2.2)
φ(xn+1) = φ(xn) +
∫ xn+1
xn
f [x, φ(x)] dx
A idéia do método de Adams é aproximar φ′(x) por um polinômio Pk(x) de grau k− 1
e usar o polinômio para determinar a integral do lado direito de (2.2)
A seguir, descrevemos dois métodos de passos múltiplos, o método de Adams-Bashforth
e o método de Adams-Moulton, onde esses são determinados, conforme os coeficientes de
Pk(x), dependendo do número de pontos precedentes que são utilizados em [x0, x0 + nh].
2.1.1 Método de Adams-Bashforth
Método de Adams-Bashforth de primeira ordem
Para que possamos obter a fórmula de Adams-Bashforth de primeira ordem,utilizamos
o polinômio P1(x) = fn de grau zero, como uma aproximação de φ′ na equação (2.2) ,que
tem a forma P1(x) = Bx0 = B. Utilizemos os pontos (xn, yn) e (xn−1, yn−1), resultando
que P1(xn) = f(xn, yn) e P1(xn−1) = f(xn−1, yn−1).
32
Veja que estamos usando a notação, fj para f(xj, yj) para qualquer inteiro j e B, onde
estes deverão satisfazer às equações:
B = fn (2.3)
B = fn−1
Substituindo φ′(x) por P1(x) e calculando a integral da equação (2.2), encontramos:
φ(xn+1 − φ(xn) =
∫ xn+1
xn
B dx (2.4)
φ(xn+1 − φ(xn) = B[x]xn+1xn
φ(xn+1 − φ(xn) = B(xn+1 − xn)
mas, temos que B = fn e h = xn+1 − xn
Então,
φ(xn+1 − φ(xn) = hfn
Porém,substituindo φ(xn+1) e φ(xn) por yn+1 e yn, tem-se que :
yn+1 − yn = hfn
yn+1 = yn + hfn
Assim, obtemos a fórmula numérica do método de Adams-Bashforth de primeira ordem,
que também corresponde a fórmula do método de Euler, obtida no primeiro capítulo deste
trabalho.
Método de Adams-Bashforth de segunda ordem
Suponha que agora, queremos usar apenas os pontos (xn, yn)e(xn−1, yn−1). Neste caso,
o polinômio Pk(x) é de primeiro grau e tem a forma P2(x) = Ax + B. Como P2 é uma
aproximação de φ′, fazemos P2(xn) = f(xn, yn) e P2(xn−1) = f(xn−1, yn−1). Se chamarmos
f(xj, yj) de fj para qualquer inteiro j, A e B deverão satisfazer às equações;
33
Axn + B = fn (2.5)
Axn−1 + B = fn−1
Para resolver o sistema acima,temos que primeiramente subtrair a primeira equação em
relação à segunda no sistema(2.5), e assim encontramos:
A(xn − xn−1) = fn − fn−1 (2.6)
A =fn − fn−1
xn − xn−1
mas
xn − xn−1 = h
, e assim
A =fn − fn−1
h
Agora, na primeira equação de (2.5),encontremos o valor de B:
B = fn − Axn
B = fn −(
fn − fn−1
xn − xn−1
)× xn
B = fn −fnxn + fn−1xn
xn − xn−1
B =fnxn − fnxn−1 − fnxn + fn−1xn
xn − xn−1
onde xn − xn−1 = h
B =fn−1xn − fnxn−1
h
Assim o valor de A e B são:
A =fn − fn−1
h, B =
fn−1xn − fnxn−1
h
34
Substituindo φ′(x) por P2(x) e calculando a integral da equação (2.2 , encontramos:
φ(xn+1 − φ(xn) =
∫ xn+1
xn
Ax + B dx (2.7)
φ(xn+1 − φ(xn) = A[x2]xn+1xn
+ B[x]xn+1xn
φ(xn+1 − φ(xn) =A
2(x2
n+1 − x2n) + B(xn+1 − xn)
Finalmente, substituímos φ(xn+1) e φ(xn) por yn+1 e yn, respectivamente, e executamos
algumas simplificações algébricas, para um incremento h constante, obtemos:
yn+1 − yn =fn − fn−1
2h(x2
n+1 − x2n) +
fn−1xn − fnxn−1
h(xn+1 − xn) (2.8)
yn+1 − yn =fn − fn−1
2h(xn+1 − xn)(xn+1 + xn) +
fn−1xn − fnxn−1
h(xn+1 − xn)
mas, h = xn+1 − xn
yn+1 − yn =fn − fn−1
2h(xn+1 + xn)× h +
fn−1xn − fnxn−1
h× h
yn+1 − yn =fn − fn−1
2(xn+1 + xn) + (fn−1xn − fnxn−1)
mas, xn+1 = xn + h e xn−1 = xn − h
yn+1 − yn =fn − fn−1
2(xn + h + xn) + (fn−1xn − fn(xn − h))
yn+1 − yn =fn − fn−1
2(2xn + h) + (fn−1xn − xnfn + hfn)
yn+1 − yn = xnfn − xnfn−1 +h
2(fn − fn−1) + xnfn−1 − xnfn + hfn
yn+1 − yn = xnfn − xnfn−1 +h
2(fn − fn−1) + xnfn−1 − xnfn + hfn
yn+1 − yn =h
2fn −
h
2fn−1 + hfn
yn+1 = yn +3
2hfn −
1
2hfn−1
A equação é a fórmula de Adams-Bashforth de segunda ordem. Trata-se de uma fór-
mula explícita para calcular o valor de yn+1 a partir dos valores de yn e yn−1. O erro de
truncamento local é proporcional a h3.
35
Método de Adams-Bashforth de quarta ordem
Fórmulas de Adams mais precisas podem ser obtidas seguindo os passos descritos an-
teriormente, mas usando um polinômio de grau mais elevado e portanto um número maior
de pontos. Suponha, por exemplo, que seja usado um polinômio P4(x) de terceiro grau. Os
coeficientes são determinados a partir dos quatro pontos (xn, yn), (xn−1, yn−1), (xn−2, yn−2)
e (xn−3, yn−3). Substituindo φ′(x) por este polinômio da equação (2) , calculando a integral
e simplificando o resultado, obtemos a fórmula de Adams-Bashforth de quarta ordem. Mais
demonstraremos esta fórmula por integração númerica, a seguir.
Primeiramente, aproximamos f(x, y(x)) pelo polinômio de grau m, pm(x) que interpola
f(x, y) em xn, xn−1, ..., xn−m e então
y(xn+1) ≈ y(xn) +
∫ xn+1
xn
pm(x)dx
Escolhemos m = 3, a função f(x, y(x)) será aproximada pelo polinômio p3(x) que inter-
pola nos pontos (xn, yn), (xn−1, yn−1), (xn−2, yn−2), (xn−3, yn−3), chamando fn−j = f(xn−j, yn−j), j =
0, 1, 2, 3, teremos:
f(x, y(x)) = y′(x) ∼= p3(x) = L−3(x)fn−3 + L−2(x)fn−2 + L−1(x)fn−1 + L0(x)fn
onde, para xj+1 − xj = h
L−3(x) =[(x− xn−2)(x− xn−1)(x− xn)]
(−h)(−2h)(−3h)=
=−1
6h3[(x− xn−2)(x− xn−1)(x− xn)]
L−2(x) =[(x− xn−3)(x− xn−1)(x− xn)]
(h)(−h)(−2h)=
=1
2h3[(x− xn−3)(x− xn−1)(x− xn)]
L−1(x) =[(x− xn−3)(x− xn−2)(x− xn)]
(2h)(h)(−h)=
36
=−1
2h3[(x− xn−3)(x− xn−2)(x− xn)]
L0(x) =[(x− xn−3)(x− xn−2)(x− xn−1)]
(3h)(2h)(h)=
=1
6h3[(x− xn−3)(x− xn−2)(x− xn−1)]
Fazendo a mudança de variáveisx− xn
h= s, temos dx = hds e x = hs + xn. Então,
x−xn−3 = (s+3)h, x−xn−2 = (s+2)h, x−xn−1 = (s+1)h e x−xn = sh donde teremos:
L−3(x) =−1
6(s + 2)(s + 1)s =
−1
6(s3 + 3s2 + 2s)
L−2(x) =1
2(s + 3)(s + 1)s =
1
2(s3 + 4s2 + 3s)
L−1(x) =−1
2(s + 3)(s + 2)s =
−1
2(s3 + 5s2 + 6s)
L0(x) =1
6(s + 3)(s + 2)s =
1
6(s3 + 6s2 + 11s + 6)
Assim,
∫ xn+1
xn
f(x, y(x))dx ∼=∫ xn+1
xn
p3(x)dx =−h
6fn−3
∫ 1
0
(s3+3s2+2s)ds+h
2fn−2
∫ 1
0
(s3+4s2+3s)ds−
−h
2fn−1
∫ 1
0
(s3 + 5s2 + 6s)ds +h
6fn
∫ 1
0
(s3 + 6s2 + 11s + 6)ds
=−h
6fn−3(
1
4+ 1 + 1) +
h
2fn−2(
1
4+
4
3+
3
2)− h
2fn−1(
1
4+
5
3+ 3) +
h
6fn(
1
4+ 2 +
11
2+ 6)
=−9h
24fn−3 +
37h
24fn−2 −
−59h
24fn−1 +
55h
24fn
Assim, o método de passo múltiplo por nós escolhido,
37
y(xn+1) ∼= y(xn) +
∫ xn+1
xn
f(x, y(x))dx
é
yn+1 = yn + (h/24)(55fn − 59fn−1 + 37fn−2 − 9fn−3) (2.9)
que é um método de passo múltiplo explícito pois, para o cálculo de yn+1 usaremos yn,
yn−1, yn−2 e yn−3, onde yn+1 tem forma explícita em função dos outros yk, k = n− 1, n−
2, n− 3.
O erro de truncamento local da fórmula de quarta ordem é proporcional a h5.
2.1.2 Método de Adams-Moulton
Método de Adams-Moulton de segunda ordem
Uma pequena modificação na dedução das fórmulas de Adams-Bashforth resulta em
outro conjunto de fórmulas denominadas fórmulas de Adams-Moulton. Para compreender-
mos a diferença, vamos voltar ao caso de segunda ordem. Usamos novamente um polinômio
de primeiro grau Q2(x) = α(x) + β, mas determinamos os coeficientes usando os pontos
(xn, yn) e (xn+1, yn+1).
Assim, α e β devem satisfazer ao sistema de equações:
αxn + β = fn (2.10)
αxn+1 + β = fn+1
e portanto, subtraindo a segunda equação da primeira no sistema(2.10), temos:
fn+1 − fn = α(xn+1 − xn)
com h = xn+1 − xn
α =fn+1 − fn
xn+1 − xn
38
α =fn+1 − fn
h
Isolando o valor de β na primeira equação de (2.10), temos:
β = fn − αxn
β = fn −(
fn+1 − fn
xn+1 − xn
)xn
com h = xn+1 − xn
β =fnxn+1 − fnxn − fn+1xn + fnxn
h
β =fnxn+1 − fn+1xn
h
Assim,
α =fn+1 − fn
h, β =
fnxn+1 − fn+1xn
h
Substituindo φ′(x) por Q2(x) na equação (2.2) e simplificando, obtemos:
φ(xn+1 − φ(xn) =
∫ xn+1
xn
Q2(x) dx (2.11)
φ(xn+1 − φ(xn) =
∫ xn+1
xn
(αx + β) dx
φ(xn+1 − φ(xn) =α
2[x2]xn+1
xn+ β[x]xn+1
xn
φ(xn+1 − φ(xn) =α
2(x2
n+1 − x2n) + β(xn+1 − xn)
Finalmente, substituímos φ(xn+1) e φ(xn) por yn+1 e yn, respectivamente, e executamos
algumas simplificações algébricas, para um incremento h constante, obtemos:
yn+1 − yn =fn+1 − fn
2h[x2
n+1 − x2n] +
fnxn+1 − fn+1xn
h(xn+1 − xn) (2.12)
39
mas, h = xn+1 − xn
logo,
yn+1 − yn =fn+1 − fn
2h(xn+1 − xn)(xn+1 + xn) +
fnxn+1 − fn+1xn
h× h
yn+1 − yn =fn+1 − fn
2(xn+1 + xn) + (fnxn+1 − fn+1xn)
como,xn = xn+1 − h
entanto,
yn+1 − yn =fn+1 − fn
2(xn+1 + xn+1 − h) + fnxn+1 − fn+1xn+1 + fn+1h
yn+1 − yn =fn+1 − fn
2(2xn+1 − h) + fnxn+1 − fn+1xn+1 + fn+1h
yn+1 − yn = (xn+1fn+1 − xn+1fn)− h
2(fn+1 − fn)(fnxn+1 − fn+1xn+1 + fn+1h)
yn+1 − yn = −h
2fn+1 +
h
2fn + hfn+1
Concluímos que:
yn+1 = yn +1
2hfn +
1
2hf(xn+1, yn+1)
que é a fórmula de Adams-Moulton de segunda ordem. Escrevemos f(xn+1, yn+1) no
último termo para enfatizar que a fórmula de Adams-Moulton é implícita, já que a incógnita
yn+1 aparece nos dois membros da equação. o erro de truncamento local para a fórmula de
Adams-Moulton de segunda ordem é proporcional a h3.
Método de Adams-Moulton de quarta ordem
Fórmulas mais precisas podem ser obtidas recorrendo-se a polinômios de grau mais
elevado.
40
Sua dedução matemática é semelhante ao que vimos no método de Adams-bashforth
de quarta ordem, pois também trabalhamos com quatro pontos, e portanto m=2, já que tra-
balhamos nos pontos xn+1, xn, · · · , xn−m, isto é, tomemos (xn+1yn+1), (xnyn)(xn−1yn−1)(xn−2yn−2)
da mesma forma como fizemos anteriormente:
yn+1 = yn +
∫ Xn+1
xn
p3(x)dx
= yn +
∫ xn+1
xn
[L−2(x)fn−2 + L−1(x)fn−1 + L0(x)fn + L1(x)fn+1]
onde
L−2(x) =[(x− xn−1)(x− xn)(x− xn+1)]
(−3h)(−2h)(−h)=
=−1
6h3[(x− xn−1)(x− xn)(x− xn+1)]
L−1(x) =[(x− xn−2)(x− xn)(x− xn+1)]
(h)(−h)(−2h)=
=1
2h3[(x− xn−2)(x− xn)(x− xn+1)]
L0(x) =[(x− xn−2)(x− xn−1)(x− xn+1)]
(2h)(h)(−h)=
=−1
2h3[(x− xn−2)(x− xn−1)(x− xn+1)]
L1(x) =[(x− xn−2)(x− xn−1)(x− xn)]
(3h)(2h)(h)=
=1
6h3[(x− xn−2)(x− xn−1)(x− xn)]
Fazendo a mudança x−xn
h= s, obtemos de maneira análoga
L−2(x) =−1
6(s3 − s)
41
L−1(x) =1
2(s3 + s2 − 2s)
L0(x) =−1
2(s3 + 2s2 − s− 2)
L1(x) =1
6(s3 + 3s2 + 2s)
Assim,
yn+1 = yn −h
6fn−2
∫ 1
0
(s3 − s)ds +h
2fn−1
∫ 1
0
(s3 + s2 − 2s)ds−
−h
2fn
∫ 1
0
(s3 + 2s2 − s− 2)ds +h
6fn+1
∫ 1
0
(s3 + 3s2 + 2s)ds
Donde:
yn+1 = yn + (h/24)(9fn+1 + 19fn − 5fn−1 + fn−2) (2.13)
que é um método de passo múltiplo implícito pois, no cálculo de yn+1 aparece fn+1 =
f(xn+1, yn+1), ou seja, a fórmula não é explicíta para yn+1 e ele aparece em f(xn+1, yn+1)
no segundo membro.
A fórmula de Adams-Moulton de quarta ordem possui erro de truncamento local é
proporcional a h5
Ela juntamente com a fórmula numérica de Adams-Bashforth de quarta ordem são
utilizados como um método de previsão-correção nos métodos de passos múltiplos.
42
Apêndice A
Algoritmos e Implementação dos
Métodos numéricos
A.1 O Método de Euler
Algoritmo Euler
Etapa 1. Defina uma função f(x, y) para estudo, suas condições iniciais x0 e y0.
Etapa 2. No intervalo em que se deseja estudar, determine os pontos x0 < x1 < ... <
xn = x0 + nh com um incremento h = (x0+nh)−x0
nentre eles.
Etapa 3. Calcule a aproximação x1 de φ(x1) usando a fórmula descrita pelo método
x1 = x0 + hf(x0, y0)
Etapa 4. Agora, calcule a aproximação x2 de φ(x2) usando novamente a fórmula descrita
pelo método
x2 = x1 + hf(x1, y1)
Etapa 5. Continue o processo e obtenha as aproximações x3, x4, ..., xn usando sucessi-
vamente a fórmula xn+1 = xn + hf(xn, yn) ao longo do intervalo [x0, x0 + nh].
43
Bibliografia
[1] ALBRECHT, Peter.Análise numérica: um curso moderno.[Rio de Janeiro]:Livros Téc-
nicos e Científicos,[1973]
[2] BARROSO,Leônidas Conceição.Cálculo numérico: com aplicações. 2. ed.[São
Paulo]:Ed.Harbra,1987
[3] BOYCE, William E.; DIPRIMA, Richard C.Equações diferenciais elementares e prob-
lemas de valores de contorno. 7. ed. [Rio de Janeiro]: Livros Técnicos e Científicos,
[C2002]. 416 p. ISBN 8521613121 (broch.)
[4] BURDEN, R. L and Faires, J. D. - Análise Numérica - Tompson, 2003
[5] CUMINATO, José Alberto and Junior,Messias Meneguette - Discretização de
Equações Diferenciais Parciais - USP, 2006
[6] CUNHA, M.Cristina C. Métodos numéricos. 2a ed. rev.ampl. [Campinas]: Ed.da UNI-
CAMP,[2003]. 276p. ISBN 852680636X (broch.)
[7] DIACU,Florin. Introdução a equações diferenciais-Teoria e Aplicações.[Rio de
Janeiro]:LTC,[2004]. ISBN 85-216-1403-9.
[8] FRANCO,Neide Bertoldi.Cálculo Numérico[São Paulo]:Pearson Hall,[2006].
ISBN 85-7605-087-0.
44
[9] RUGGIERO, Márcia Aparecida Gomes; LOPES, Vera Lúcia da Rocha.Cálculo
numérico:aspectos teóricos e computacionais. 2. ed. São Paulo: Makron Books; Pear-
son Education do Brasil,[1997]. 406p. ISBN 8534602042 (broch.)
[10] SCHILDT, Herbert. C completo e total. 3. ed. rev. atual. São Paulo: Makron Books;
McGraw-Hill, [c1997]. 1 Disquete ISBN 8534605955 (broch.)
[11] SPERANDIO,Décio;MENDES,João Teixeira;SILVA,Luiz Henry Monken e .Cálculo
Numérico:características matemáticas e computacionais dos métodos numéricos.[São
Paulo]:Pearson Prentice Hall,[2003]. ISBN 85-87918-74-5.
[12] Conteúdo da apostila disponível no site do Curso de Linguagem C da UFMG- Uni-
versidade Federal de Minas Gerais. (http://www.ead.eee.ufmg.br/cursos/C/).
[13] ZILL,Dennis G.;CULLEN,Michael R.Equações Diferenciais-Vol.2[São Paulo]:Pearson
Education do Brasil,[2001]. ISBN 85-346-1141-6.
45