Escolar Documentos
Profissional Documentos
Cultura Documentos
DIFERENCIAIS ORDINÁRIAS
Capítulo 17 – Bruno de Alencar Carneiro
Sumário
• 17.0 – Introdução
• 17.1 – Método de Runge-Kutta
• 17.2 – Controle Adaptativo de Tamanho de Passo para Runge-Kutta
• 17.3 – Extrapolação de Richardson e o Método de Bulirsch-Stoer
Introdução
• Problemas envolvendo equações diferenciais ordinárias (EDOs)
• estudo de conjuntos de equações diferenciais de primeira ordem
• A expansão da série de Taylor indica que φ é um número cuja ordem de magnitude é 𝑦 5 (𝑥)/5!
• A diferença entre as duas estimativas numéricas é um indicador conveniente de erro de truncamento,
∆ ≡ 𝑦2 − 𝑦1
• É essa diferença que deve-se buscar para manter um grau de precisão desejado, ajustando h
Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• Ao ignorar termos de ordem ℎ6 e superiores, pode-se resolver as
duas equações de 𝑦(𝑥 + 2ℎ) para melhorar a estimativa numérica
da solução verdadeira
• Pode ser preciso à quinta ordem, mas não há como monitorar seu
erro de truncamento. Pois, ordem mais elevada nem sempre é maior
precisão!
• devemos usar Δ como estimativa de erro e relevar qualquer ganho de
precisão adicional derivado de acima. -> extrapolação local
Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• A duplicação de passos foi superada por
um algoritmo de ajuste de passos mais
eficiente baseado em fórmulas Runge-
Kutta incorporadas, por Merson e
popularizado em um método de Fehlberg
• para ordens M superiores a quatro, são
necessárias mais de M avaliações de
funções.
• Fehlberg descobriu um método de quinta
ordem com seis avaliações de função,
onde outra combinação das seis funções
dá um método de quarta ordem.
• A diferença entre as duas estimativas de
𝑦 (𝑥 + ℎ) pode então ser usada como uma
estimativa do erro de truncamento para
ajustar o stepize.
Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• Por um lado, a questão geral de quantas avaliações de função são
necessárias para um método Runge-Kutta de uma determinada
ordem ainda está aberta.
• Onde
• Isso impõe uma precisão fracionada não nos valores de y, mas nos
incrementos desses valores em cada etapa.
Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• O controle de erro que tenta restringir o erro global ao definir o fator de escala
proporcional a h é chamado de "erro por unidade de passo", ao contrário do método
"erro por passo" original.
• Por uma questão de princípio, o controle do erro global ao controlar o erro local é muito
difícil. O erro global em qualquer ponto é a soma do erro global até o início do último
passo mais o erro local dessa etapa.
• Essa natureza cumulativa do erro global significa que depende de coisas que nem sempre
podem ser controladas, como propriedades de estabilidade da equação diferencial.
• É recomendável o método direto de "erro por passo" na maioria dos casos. Se você
deseja estimar o erro global da sua solução, é necessário integrar novamente com uma
tolerância reduzida e usar a mudança na solução como uma estimativa do erro global.
• Isso funciona se o controlador de tamanho de passo produz erros aproximadamente
proporcionais à tolerância, o que nem sempre é garantido.
Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• Como as estimativas de erro não são exatas, mas apenas precisas
para a ordem principal em h, é aconselhável colocar um fator de
segurança S que seja um pouco menor do que a unidade.
• ℎ0 (com 𝑒𝑟𝑟0 = 1 e os subscritos 1 → n e 0 → n + 1)
• Métodos de alta qualidade costumeiramente dão grandes passos para soluções suaves, de modo
que o problema é especialmente agudo neste caso.
• A solução é encontrar um método de interpolação que use informações produzidas durante a
integração e seja de uma ordem comparável à ordem do método para que a precisão total da
solução seja preservada. -> método de saída densa.
• No entanto, o interesse está em métodos de integração com uma ordem superior a três, então
são necessárias fórmulas de saída densa de ordem superior. A abordagem geral para os métodos
Runge-Kutta é considerar os coeficientes 𝑏𝑖 em 𝑦𝑛+1 como polinômios em vez de constantes. Isso
define uma solução contínua,
𝑔 𝑥, 𝑦𝑖 𝑥 =0
ℎ = 𝐻/𝑛
• Em princípio, pode-se usar o método do ponto intermediário modificado à sua própria maneira como
integrador da EDO. Na prática, o método encontra sua aplicação mais importante como parte da técnica
mais poderosa de Bulirsch-Stoer.
• As fórmulas para o método são
• Os z são aproximações intermediárias que percorrem passos de h, enquanto que 𝑦𝑛 é a aproximação final
para 𝑦(𝑥 + 𝐻). O método é basicamente um método de "diferença centrada" ou "ponto médio", exceto nos
primeiros e últimos pontos.
Método do Ponto Médio Modificado
• O método do ponto intermediário modificado é um método de segunda ordem,
como 𝑦𝑛+1 , mas com a vantagem de exigir (assintoticamente para grandes n)
apenas uma derivada por passo h em vez dos dois exigidos pelo Runge-Kutta de
segunda ordem.
• A utilidade do método de ponto médio modificado para a técnica de Bulirsch-
Stoer deriva de um resultado "profundo" sobre as equações de 𝑦(𝑥 + 𝐻).
• O erro de 𝑦(𝑥 + 𝐻), expresso como uma série de potência em h, contém apenas potências
pares de h,
• onde H é mantido constante, mas h muda ao variar n. A importância desta série de potência
par é que, se combinarmos passos para eliminar termos de erro de ordem superior, pode-se
ganhar duas ordens por vez.
Método do Ponto Médio Modificado
• suponha que n seja par e 𝑦𝑛 = 2 para indicar o resultado da aplicação
de h e y(x + H) com a metade dos passos, 𝑛 → 𝑛 = 2.
• Para cada passo, não sabemos de antemão o quão longe dessa seqüência
iremos. Depois de cada n sucessivo é tentado, faz-se uma extrapolação
polinomial.
• Essa extrapolação fornece valores extrapolados e estimativas de erro. Se os
erros não forem satisfatórios, aumenta-se n. Se forem satisfatórios,
passamos para o próximo passo e começamos de novo com n = 2.
Método de Bulirsch-Stoer
• Deve haver algum limite superior,
além do qual conclui-se que há algum
obstáculo no nosso caminho no
intervalo H, de modo que devemos
reduzir H ao invés de só subdividí-lo
de maneira mais fina. Além disso, a
perda de precisão se ajusta na escolha
de uma subdivisão muito fina.
• Cada novo resultado da seqüência de
integrações de ponto médio
modificado permite que um quadro
como o da direita (relembrando o
capítulo de Interpolação) seja
estendido por um conjunto adicional
de diagonais.
Método de Bulirsch-Stoer
• Aqui 𝑇𝑘0 = 𝑦𝑘 , onde 𝑦𝑘 é y(𝑥𝑛 + 𝐻) calculado com o stepsize ℎ𝑘 = 𝐻/𝑛 2 𝑘
.O
algoritmo de Neville, a equação (3.2.3), com P substituído por T, 𝑥𝑖 = ℎ𝑖 e x = 0,
podem ser escritos como
• Cada novo passo inicial ℎ𝑖 inicia uma nova linha no quadro e, em seguida, a
extrapolação polinomial preenche o resto da linha.
• Cada novo elemento no quadro vem dos dois elementos mais próximos na coluna
anterior. Elementos na mesma coluna têm a mesma ordem, e 𝑇𝑘𝑘 , o último
elemento em cada linha, é a aproximação de ordem superior com esse stepsize.
• A diferença entre os dois últimos elementos em uma linha é tomada como a
estimativa de erro (conservativa).
Algoritmo de Controle de Tamanho de Passo
para Bulirsch-Stoer
• Os elementos no quadro são, na verdade, vetores correspondentes ao vetor y de variáveis
dependentes
• Uma estimativa simples de um novo passo 𝐻𝑘 para obter convergência em uma coluna fixa k seria
• O trabalho por unidade de passo para obter a coluna k é, portanto, o índice de coluna ideal é
aquele que minimiza o 𝑊𝑘 .
• A estratégia é definir um alvo k para o próximo passo e, em seguida, escolher o tamanho de passo
de 𝐻𝑘 para tentar obter convergência (ou seja, 𝑒𝑟𝑟𝑘 ≤ 1) para esse valor de k no próximo passo.
• Na prática, é calculado o quadro de extrapolação linha por linha, mas apenas em um teste da
convergência dentro de uma janela de ordem entre k - 1 e k + 1.
• Se for necessário ir além do k + 1 para obter convergência, seu modelo local de comportamento
de convergência não é, obviamente, muito bom e você precisa cortar o passo e restabelecê-lo.
Algoritmo de Controle de Tamanho de Passo
para Bulirsch-Stoer
• Aqui estão os passos:
• Teste a convergência na coluna k-1: se 𝑒𝑟𝑟𝑘−1 ≤ 1, aceite 𝑇𝑘−1,𝑘−1 . Defina o novo alvo como
• A idéia por trás da última fórmula é que não se pode configurar o 𝐻𝑛𝑜𝑣𝑜 = 𝐻𝑘 porque está
parando a integração na linha k-1, então não se computa 𝐻𝑘 . No entanto, uma vez que k é
supostamente otimizado, 𝑊𝑘 ≈ 𝑊𝑘−1 , que dá a última fórmula para 𝐻𝑛𝑜𝑣𝑜 .
Algoritmo de Controle de Tamanho de Passo
para Bulirsch-Stoer
• Se 𝑒𝑟𝑟𝑘−1 > 1: verifique se você pode esperar convergência pela linha k+1
estimando o que 𝑒𝑟𝑟𝑘+1 será. Supondo que esteja no regime assintótico,
pode-se mostrar que