Você está na página 1de 47

INTEGRAÇÃO DE EQUAÇÕES

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

• é útil incorporar na sua definição alguns outros fatores na equação, ou


algumas potências da variável independente, com a finalidade de mitigar o
comportamento singular que poderia resultar em overflows ou aumento
de erros de redundância.
• Ideia geral: caso as variáveis originais sejam suaves em uma solução,
enquanto suas variáveis auxiliares estão fazendo mudando bruscamente,
então descubra por que e escolha diferentes variáveis auxiliares.
Introdução
• Problema genérico: reduzir uma EDO para o estudo de um conjunto
de N equações diferenciais de primeira ordem acopladas para as
funções 𝑦𝑖 , 𝑖 = 0, 1, … , 𝑁 − 1
• Forma geral:
Introdução
• O mais importante para determinar como atacar o problema
numericamente é a natureza das condições de contorno do problema.
• As condições de contorno podem ser tão simples como exigir que certas
variáveis tenham certos valores numéricos, ou tão complicadas como um
conjunto de equações algébricas não-lineares entre as variáveis.
• Estas se dividem em duas grandes categorias.
• Problemas de valor inicial (PVI) - todos os 𝑦𝑖 são dados em algum valor inicial 𝑥𝑠 , e
deseja-se encontrar os 𝑦𝑖 em algum ponto final 𝑥𝑓 , ou em alguma lista discreta de
pontos (por exemplo, em intervalos tabulados).
• Problemas de valores de limite de dois pontos - algumas das condições serão
especificadas em 𝑥𝑠 e o restante em 𝑥𝑓 .
Introdução
• Literal implementation of this procedure results in Euler’s method
(equation 17.1.1, below), which is, however, not recommended for any
practical use.

• A ideia subjacente de qualquer rotina para resolver o problema do valor


inicial é sempre esta:
• Reescreve-se os dy e dx em 𝑑𝑦𝑖 𝑥
𝑑𝑥 como passos finitos y e x, e multiplica-se as
equações por x.

• A implementação literal deste procedimento resulta no método de Euler, o


que, no entanto, não é recomendado para qualquer uso prático.
Introdução
• Os três principais tipos de métodos numéricos práticos para resolver
problemas de valor inicial para EDOs são:
• Métodos de Runge-Kutta - propagam uma solução ao longo de um intervalo
combinando a informação de vários passos de Euler (cada uma envolvendo uma
avaliação dos lados direitos de 𝑓) e, em seguida, usando as informações obtidas para
coincidir com uma expansão da série Taylor até alguma ordem superior.

• Extrapolação de Richardson - extrapolam um resultado calculado para o valor que


teria sido obtido se o passo tivesse sido muito menor do que realmente era. Em
particular, a extrapolação para zero passo é o objetivo desejado.

• Métodos preditores-corretores - armazenam a solução ao longo do caminho e usam


esses resultados para extrapolar a solução em um passo adiantado; então corrige-se
a extrapolação usando informações derivadas no novo ponto.
Introdução
• Runge-Kutta costumava ser o que você usava quando
i. você não conhecia nenhuma melhor,
ii. você tinha um problema intransigente onde Bulirsch-Stoer estava falhando,
iii. ou quando você tinha um problema trivial onde a eficiência computacional não era
preocupante.

• Runge-Kutta sucede praticamente sempre; geralmente é o método mais−10 rápido quando


avaliar 𝑓𝑖 é simples e o requisito de precisão não é ultra
−5
rigoroso ≲ 10 , ou, em
geral, quando é necessária precisão moderada ≲ 10 .
• Os métodos preditores-corretores têm uma sobrecarga relativamente alta e, portanto, se
destacam somente quando avaliar 𝑓𝑖 é custoso. No entanto, para muitos problemas
suaves, eles são computacionalmente mais eficientes do que Runge-Kutta.
• O método Bulirsch-Stoer vem substituindo o preditor-corretor em muitas aplicações,
mas é muito cedo para dizer que o preditor-corretor é dominado em todos os casos.
Método de Range-Kutta
• Fórmula para o método de Euler:

• Solução de 𝑥𝑛 para 𝑥𝑛+1 ≡ 𝑥𝑛 + ℎ.


• A fórmula é não assimétrica; O erro do passo
é apenas uma potência2 de h menor do que a
correção, ou seja, O ℎ adicionado à
equação
• Não é recomendado para uso prático, pois:
i. O método não é muito preciso quando
comparado a outros métodos mais
sofisticados executados a um tamanho de
passo equivalente,
ii. E nem é muito estável
Método de Range-Kutta
• Runge-Kutta de segunda ordem
ou método do ponto médio.
Método de Range-Kutta
• O método Runge-Kutta de quarta
ordem requer quatro avaliações do
lado direito por passo h

• É superior ao método do ponto


médio, se pelo menos duas vezes o
passo maior for possível com a mesma
precisão.
Método de Range-Kutta
• Alta ordem nem sempre significa alta precisão.
• Métodos Runge-Kutta mais novos são muito mais eficientes, e os
métodos Bulirsch-Stoer ou preditor-corretor podem ser ainda mais
eficientes para problemas em que uma precisão muito alta é um
requisito.
Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• Sua finalidade é conseguir alguma precisão predeterminada na
solução com um esforço computacional mínimo ao fazer mudanças
frequentes em seus passos.
• Sua implementação requer que o algoritmo de passo troque
informações sobre seu desempenho, sendo o mais importante, uma
estimativa de seu erro de truncamento.
Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• Com o Runge-Kutta de quarta ordem, a técnica mais direta, de longe,
é o de passo dobrado
• Toma-se cada passo duas vezes, uma vez como um passo completo,
então, independentemente, como dois meio-passos
• Cada um dos três passos separados do Runge-Kutta no procedimento
requer 4 avaliações, mas as seqüências simples e duplas
compartilham um ponto de partida, então o total é 11.
• Isso deve ser comparado não a 4, mas a 8 (as duas meias- etapas), uma vez
que - o controle de medidas de lado de lado - estamos conseguindo a
precisão do tamanho menor (meio). O custo indireto é, portanto, um fator de
1.375.
Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• Digamos que a solução exata para um avanço de x para x + 2h por y(x + 2h) e as duas soluções aproximadas
por 𝑦1 (um passo 2h) e y2 (dois passos cada de tamanho h). Uma vez que o método básico é a quarta
ordem, a solução verdadeira e as duas aproximações numéricas são relacionadas por

• 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.

• Métodos de ordem 5 requerem 6 avaliações de função, a ordem 6 requer 7, a


ordem 7 requer 9, a ordem 8 requer 11.
• Sabe-se que, para a ordem M ≥ 8, são necessárias pelo menos avaliações M +
3.
• O método mais bem construído explicitamente construído até agora é a
ordem 10, com 17 avaliações.
Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• No entanto, em última análise, não deve se usar
−3
o método Runge-Kutta de quinta ordem,
à exceção de requisitos de baixa precisão (10 ) ou problemas triviais.
• Sua forma geral é

• A fórmula embutida de quarta ordem é

• e, portanto, a estimativa de erro é


Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• Os valores particulares das várias constantes
que são favorecidas foram encontradas por
Dormand e Prince, que dão um método mais
eficiente do que os valores originais de
Fehlberg, com melhores propriedades de
erro.
• O método Dormand-Prince precisa de seis
avaliações de função por etapa, mas a tabela
ao lado mostra sete
• A idéia é usar 𝑦𝑛+1 para fornecer uma sétima
etapa. Porque 𝑓(𝑥𝑛 + ℎ, 𝑦𝑛+1 ) deve ser
avaliado de qualquer forma para iniciar o
próximo passo, isso não custa nada (a menos
que o passo seja rejeitado porque o erro é
muito grande).
• Este truque é chamado de FSAL (primeiros-
iguais-aos-últimos).
Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• what our error is, we need to consider how to keep it within desired bounds. We require
• O que nosso erro é, precisamos considerar como mantê-lo dentro dos limites desejados. Exige-se

• Onde

• atol é a tolerância de erro absoluto e rtol é a tolerância de erro relativa.


• Além disso, enquanto atol e rtol podem ser diferentes para cada componente de y, estes serão
levados como constantes. Então, define-se

• e aceita-se o passo se err ≤ 1, caso contrário, é rejeitado.


Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• Qual é a relação entre o erro escalado err e h?

• Deixe 𝑒𝑟𝑟0 denotar o erro desejado, que é 1 em uma integração


eficiente.
• Se 𝑒𝑟𝑟1 for maior que 1 em magnitude, a equação diz o quanto para
diminuir o stepize quando repetimos o passo atual (falho). Se 𝑒𝑟𝑟1 for
menor do que 1, por outro lado, então, a equação diz o quanto se
pode aumentar com segurança o stepize para o próximo passo.
Controle Adaptativo de Tamanho de Passo
para Range-Kutta
• Os critérios de erro mencionados até agora são "locais", na medida em que
ligam o erro de cada passo individualmente. Em algumas aplicações, você
pode ser excepcionalmente sensível sobre um acúmulo de erros "globais",
do início ao fim da integração e, no pior caso, onde todos os erros são
presumidos para serem adicionados com o mesmo sinal.
• Quanto menor o stepsize h, mais etapas entre os valores inicial e final de x.
Nesse caso, você pode querer definir uma escala proporcional a h,
normalmente para algo como

• 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)

• A experiência mostra que não é aconselhável deixar o stepsize


aumentar ou diminuir muito rápido e não permitir que o stepsize
aumente de forma alguma se o passo anterior for rejeitado.
Controle de Tamanho de Passo PI
• Uma situação em que o controlador de tamanho de passo acima tem
dificuldade é quando o stepsize está sendo limitado pelas
propriedades de estabilidade do método de integração, em vez da
precisão das etapas individuais.
• O stepsize aumenta lentamente à medida que são aceitos passos
sucessivos, até que o método se torne instável.
• Problemas semelhantes podem ocorrer quando a solução para a
equação diferencial entra em uma região com um comportamento
drasticamente diferente em relação à região anterior
Controle de Tamanho de Passo PI
• A maneira mais eficaz de fazer isso vem das ideias da teoria do
controle.
• A rotina de integração e a equação diferencial desempenham o papel do
processo.
• O tamanho de passo h é a entrada e a estimativa de erro err é a saída.
• O controlador é o algoritmo de controle de passos. Ele tenta manter o erro na
tolerância prescrita, variando o stepsize.
• O controlador de stepize padrão ℎ𝑛+1 , quando expresso na linguagem da
teoria do controle, é conhecido como controlador integrativo (I), com ln h
como variável de controle discreta. Isso significa que a variável de controle é
obtida ao "integrar" o sinal de erro de controle.
• Na teoria do controle, o controle mais estável pode ser conseguido
adicionando um termo adicional proporcional ao erro de controle (P).
Controle de Tamanho de Passo PI
• Em vez de ℎ𝑛+1 , o algoritmo resultante toma a forma simples

• Normalmente 𝛼 e 𝛽 devem ser dimensionado como 1/𝑘, onde k é o


expoente de h em err (𝑘 = 5 para um método de quinta ordem). O
ajuste 𝛼 = 1/𝑘, 𝛽 = 0 recupera o controlador clássico ℎ𝑛+1 . 𝛽 não-
nulo melhora a estabilidade, mas perde alguma eficiência para partes
"fáceis" da solução. Pode-se ajustar bem em:
Saída Densa
• E se você quiser saída nos valores que você especifica?
• A opção mais simples é apenas integrar de um ponto de saída desejado para o próximo, mas isso é ineficiente

• 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,

• e exige-se os polinômios 𝑏𝑖 𝜃 para aproximarem a solução verdadeira da ordem requerida


Saída Densa
• O método da saída densa simplifica os problemas em que você não
conhece antecipadamente a maneira de se integrar. Você deseja
localizar a posição 𝑥𝑐 onde alguma condição está satisfeita.
• Escreve-se a condição como encontrar o zero de alguma função:

𝑔 𝑥, 𝑦𝑖 𝑥 =0

• E se monitora 𝑔 na rotina de saída. Quando 𝑔 muda de sinal entre


dois passos, usa a rotina de saída densa para fornecer valores de
função à sua rotina de busca de raiz favorita.
Extrapolação de Richardson e o Método
Bulirsch-Stoer
• As técnicas nesta seção são para equações diferenciais contendo funções
suaves.
• Com apenas três ressalvas, o método Bulirsch-Stoer é a maneira mais
conhecida de obter soluções de alta precisão para equações diferenciais
ordinárias com esforço computacional mínimo
1) Se você tiver um problema não suave, volte para o Runge-Kutta com uma escolha
adaptativa de tamanho de passo.
2) As técnicas nesta seção não são particularmente boas para equações diferenciais
que têm pontos singulares dentro do intervalo de integração. Runge-Kutta com
adaptação de tamanho de passo às vezes pode efetuar isso; em geral, existem
técnicas especiais disponíveis para tais problemas.
3) Pode haver alguns problemas que são ambos muito suaves e têm lados direitos
que são muito custosos de se avaliar, para os quais, os métodos preditores-
corretores são os métodos de escolha.
Extrapolação de Richardson e o Método
Bulirsch-Stoer
• Três idéias-chave envolvem esses
métodos:
• A primeira é a abordagem diferida de
Richardson ao limite
• A idéia é considerar a resposta final de
um cálculo numérico como sendo uma
função analítica de um parâmetro
ajustável como o stepsize h.
• A função analítica pode ser sondada pelo
cálculo de vários valores de h, com
nenhum deles necessariamente pequeno
o suficiente para produzir a precisão
desejada.
• Ao saber o suficiente sobre a função, é
feito o ajuste a alguma forma analítica
para depois avaliá-la no ponto ℎ = 0
Extrapolação de Richardson e o Método
Bulirsch-Stoer
• A segunda idéia tem a ver com o tipo de função apropriada usada. ->
extrapolação de função racional
• Envolve quebrar os grilhões da série de potência e seu raio de convergência limitado,
apenas para a distância do primeiro pólo no plano complexo. Os ajustes da função
racional podem deixar boas aproximações às funções analíticas, mesmo após os
vários termos em potência de h todos terem magnitudes comparáveis.
• Em outras palavras, h pode ser tão grande para tornar a noção total da "ordem" do
método sem sentido - e o método ainda pode funcionar normalmente.

• De qualquer forma, adotaremos a extrapolação polinomial como padrão.


Extrapolação de Richardson e o Método
Bulirsch-Stoer
• A terceira idéia é usar um método de integração cuja função de erro
seja estritamente par, permitindo que a função racional ou a
aproximação polinomial seja em termos da variável ℎ2 em vez de
apenas h.
• A junção dessas idéias é o método Bulirsch-Stoer.
• Um único passo de Bulirsch-Stoer nos leva de x para x + H, onde H
está a uma, supostamente, distância bastante grande – não
totalmente infinitesimal, consistindo de muitos subpassos do método
do ponto médio modificado, que são então extrapolado para o
tamanho de passo zero.
Método do Ponto Médio Modificado
• O método de ponto médio modificado avança um vetor de variáveis dependentes y(x) de um ponto x para
um ponto x + H por uma seqüência de n subpassos de tamanho h,

ℎ = 𝐻/𝑛

• 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.

• Preciso à quarta ordem e o mesmo que o Runge-Kutta de quarta


ordem, mas requerindo apenas cerca de 1.5 avaliações derivadas por
passo h em vez das quatro avaliações do Runge-Kutta.
Método de Bulirsch-Stoer
• Considere tentar cruzar o intervalo H usando o método do ponto médio
modificado com valores crescentes de n, o número de subpassos.
Diferentes abordagens foram feitas:
• Bulirsch e Stoer
• Deuflhard

• 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

• O controle de erro é implementado exigindo 𝑒𝑟𝑟𝑘 ≤ 1.


• Agora, 𝑇𝑘𝑘 é de ordem 2k + 2 e 𝑇𝑘,𝑘−1 é de ordem 2k, que é, portanto, a ordem de 𝑒𝑟𝑟𝑘 . Em
outras palavras,

• Uma estimativa simples de um novo passo 𝐻𝑘 para obter convergência em uma coluna fixa k seria

• S1 e S2 são fatores de segurança menores que um.


Algoritmo de Controle de Tamanho de Passo
para Bulirsch-Stoer
• Suponha que 𝐴𝑘 seja o trabalho para obter a linha k do quadro de extrapolação.
• Assuma que o trabalho é dominado pelo custo de avaliação das funções que definem os lados
diretos das equações diferenciais. Para subdivisões 𝑛𝑘 em H

• 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

• Defina o stepsize correspondente 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

• e, portanto, que 𝑒𝑟𝑟𝑘+1 será maior que um, se aproximadamente

• Se esta condição estiver satisfeita, rejeite o passo e reinicie com o 𝑘𝑛𝑜𝑣𝑜 e


𝐻𝑛𝑜𝑣𝑜 escolhido de acordo com a condição anterior.
Algoritmo de Controle de Tamanho de Passo
para Bulirsch-Stoer
• Se 𝑒𝑟𝑟𝑘−1 da condição anterior não • Se 𝑒𝑟𝑟𝑘 > 1, verifique se pode
estiver satisfeito, calcule a próxima esperar convergência na próxima
linha do quadro (para o valor alvo linha. De forma análoga a 𝑒𝑟𝑟𝑘−1
de k) e veja se a convergência é do slide anterior, verifique se
alcançada para a coluna k. Assim,
se 𝑒𝑟𝑟𝑘+1 ≤ 1, aceite o passo e
continue com

• Se esta condição estiver satisfeita,


rejeite o passo e reinicie com o
conhecido e Hnew escolhido de
• Defina o stepize correspondente acordo com o 𝑘𝑛𝑜𝑣𝑜 e 𝐻𝑛𝑜𝑣𝑜 à
como esquerda
Algoritmo de Controle de Tamanho de Passo
para Bulirsch-Stoer
• Se 𝑒𝑟𝑟𝑘−1 não estiver satisfeito, computa e linha k • Se 𝑒𝑟𝑟𝑘+1 > 1, rejeite o passo. Reinicie com 𝑘𝑛𝑜𝑣𝑜 e
+ 1 do quadro. Se 𝑒𝑟𝑟𝑘+1 ≤ 1, aceite a etapa. 𝐻𝑛𝑜𝑣𝑜 escolhido de acordo com o slide anterior.
Defina o novo alvo com a seguinte condição: • Dois refinamentos importantes para esta estratégia são:
• Depois que um passo é rejeitado, a ordem e stepsize não
podem aumentar.
• 𝐻𝑛𝑜𝑣𝑜 calculado a partir da equação (16.4.5) não pode
mudar muito rapidamente em um passo. É restrito por

• O stepize é definido como em o 𝐻𝑛𝑜𝑣𝑜 do slide


anterior.
• Os valores padrão dos parâmetros são 𝑆3 = 0,02, 𝑆4 = 4.
• Para o primeiro passo, o alvo k é estimado
grosseiramente a partir da precisão solicitada, mas o
passo é aceito se o erro for pequeno o suficiente para
qualquer k menor.
• Para o último passo, o stepize é diminuído para ser o
comprimento do intervalo de integração restante, de
modo que um aumento semelhante na janela de
pedido é permitido.
Saída Densa
• O passo H básico de Bulirsch-Stoer geralmente é muito maior do que
nos métodos Runge-Kutta devido às altas ordens invocadas, de modo
que uma opção de saída densa é ainda mais importante.
• A idéia é fazer a interpolação Hermite usando a função e valores da
derivada no início e no final do passo.
• O erro da interpolação Hermite precisa ser monitorado. Se for muito
grande, o passo é rejeitado e os passos reduzidos adequadamente.