Método de Euler e Erro Local vs Global
Objetivos de Aprendizagem
- Definir o erro de truncamento local do método de Euler e reconhecer as duas convenções em uso.
- Enunciar o teorema do erro global com suas hipóteses e explicar por que ordem 2 por passo vira ordem 1 no total.
- Medir as duas ordens numa tabela e mostrar a ordem global caindo quando é ilimitada.
- Ler o resultado de Euler como a solução exata de uma equação próxima, que é o seu erro reverso.
- Deduzir a condição de estabilidade , incluindo complexo, e mostrar um passo real em que Euler explode.
- Reconhecer stiffness e ver o que um passo implícito muda.
- Separar truncamento de arredondamento quando o passo fica muito pequeno.
Contexto e Motivação
A lição differential-equations-and-initial-value-problems apresentou a atualização , viu o erro num tempo fixo cair pela metade com e viu a iteração de gradiente descendente falhar para . Eram observações. Esta lição traz os motivos, em três perguntas.
Por que o método é de primeira ordem se um passo parece de segunda? Quando a cota de erro clássica é útil, e quando é absurdamente pessimista? E por que uma solução perfeitamente suave e lenta pode exigir um passo minúsculo? As mesmas três perguntas voltam em todo resolvedor, inclusive nos de runge-kutta-methods.
Teoria Central
Erro de truncamento local
O erro de truncamento local mede um passo que parte da solução exata:
Se , o teorema de Taylor com dá para algum dentro do passo. Como ao longo da solução, basta para isso.
As convenções variam. Alguns livros, entre eles Fundamentals of Numerical Computation, definem o erro de truncamento como o resíduo por unidade de passo, , que é em Euler. Outros usam o próprio , que é . Os dois descrevem o mesmo método, então confira qual deles a fonte usa. Esta lição usa .
Do local ao global
O erro global é . Subtraia o método da definição de :
Teorema. Suponha que seja contínua e lipschitziana em com constante em , que a solução seja com em e que . Então, para ,
A prova toma valores absolutos, , desenrola a recorrência numa soma geométrica e usa .
Acontecem duas coisas separadas. Cerca de passos injetam cada um, o que perde uma potência de . E o fator deixa os erros antigos crescerem enquanto viajam, e daí vem a exponencial. Logo o erro global não é simplesmente a soma dos erros locais, como mostra o Exemplo 2.
Um erro inicial acrescenta . Se cada passo também comete um arredondamento de no máximo , o termo vira : a parte de truncamento encolhe com , e a de arredondamento cresce.
Erro direto e erro reverso
Nos termos de conditioning-and-numerical-stability, é um erro direto. Para há também uma afirmação reversa limpa. Com , o de Euler é a solução exata em de
O método resolve exatamente uma equação próxima, e essa proximidade é . Com e , . Num tempo , o erro direto relativo é . Quando não existe real, o que é o primeiro sinal do próximo tópico.
Estabilidade
Aplique Euler a com : com . As iteradas ficam limitadas exatamente quando , um disco de raio 1 centrado em . Essa é a região de estabilidade. Ela é uma propriedade do método aplicado a uma equação-teste, e para não linear ou para um sistema vale pelos autovalores do jacobiano, como guia local.
- real: a condição é . O limite do gradiente descendente para é este caso, com exatamente na fronteira: limitado, mas sem convergir.
- imaginário: para todo . O disco só toca o eixo imaginário na origem, então nenhum passo é estável para uma oscilação sem amortecimento.
Stiffness
Um problema é stiff (rígido) quando a estabilidade, e não a precisão, dita o passo. É questão de grau, não uma propriedade de sim ou não. A forma típica é uma solução lenta com um modo rápido que já decaiu. O modo rápido não importa mais para a resposta, mas continua fixando e, portanto, .
O Euler implícito (backward Euler), , tem , logo é estável para todo quando . Continua sendo de ordem 1. O preço é resolver uma equação a cada passo, um sistema linear num problema linear.
Exemplos Resolvidos
Exemplo 1: um passo à mão
Tome , , cuja solução é . Com , Euler dá , enquanto . Assim . A previsão é , pois vale 1 em .
Exemplo 2: ordens local e global, medidas
No mesmo problema até , a tabela mostra o maior erro local entre todos os passos, a soma dos erros locais absolutos e o erro global em .
textn h max|l| ordem soma|l| |e_n| ordem 10 0.20000 5.314e-02 2.895e-01 1.482e-01 20 0.10000 1.354e-02 1.97 1.468e-01 7.467e-02 0.99 40 0.05000 3.397e-03 1.99 7.354e-02 3.746e-02 1.00 80 0.02500 8.491e-04 2.00 3.683e-02 1.876e-02 1.00 160 0.01250 2.124e-04 2.00 1.843e-02 9.386e-03 1.00 320 0.00625 5.309e-05 2.00 9.217e-03 4.695e-03 1.00 640 0.00313 1.327e-05 2.00 4.609e-03 2.348e-03 1.00
Ordem local 2, ordem global 1, como diz o teorema. O erro global é cerca de metade da soma dos erros locais: troca de sinal perto de , então os erros locais se cancelam em parte, e cada um deles é depois carregado pelo fluxo. Com e (o máximo de em , em ), a cota em é , cerca de 12 vezes o erro verdadeiro.
Exemplo 3: quando a cota é útil
Tome e , . O teorema tem nos dois casos, mas os fluxos são opostos.
texty' = y (crescente) y' = -y (decrescente) T |e_n| erro rel. cota |e_n| erro rel. cota 1 1.35e-02 0.0050 2.3e-02 1.85e-03 0.0050 8.6e-03 5 3.64e+00 0.025 1.1e+02 1.67e-04 0.025 7.4e-01 10 1.07e+03 0.048 2.4e+06 2.23e-06 0.049 1.1e+02 20 4.59e+07 0.095 1.2e+15 1.97e-10 0.096 2.4e+06
No caso crescente a exponencial é real: o erro absoluto cresce junto com a solução, embora a cota já esteja grande demais em . No caso decrescente, a cota diz quando o erro é . Ela não enxerga o fluxo contraindo, porque uma constante de Lipschitz não tem sinal. Os erros relativos batem com a estimativa do erro reverso , que é em . Para , , de acordo com a tabela.
Exemplo 4: um problema stiff e uma explosão real
Considere , . A solução exata é , como a substituição confirma, e as soluções próximas são . A solução varia numa escala da ordem de 1, mas , então Euler precisa de , ou seja, passos para chegar a . Erros em :
textn h 1-1000h Euler explícito Euler implícito 10 0.10000 -99.000 4.52e+15 2.84e-05 100 0.01000 -9.000 1.33e+90 2.72e-06 400 0.00250 -1.500 3.42e+64 6.77e-07 476 0.00210 -1.101 7.62e+13 5.69e-07 490 0.00204 -1.041 3.33e+02 5.53e-07 500 0.00200 -1.000 4.59e-07 5.42e-07 1000 0.00100 +0.000 2.70e-07 2.71e-07 2000 0.00050 +0.500 1.35e-07 1.35e-07
A condição inicial é exata e é suave, e mesmo assim dá : o erro de truncamento local de cada passo alimenta um modo amplificado por a cada passo. O limiar é abrupto. Depois de estáveis, Euler explícito e implícito têm mais ou menos a mesma precisão aqui (compare ), então o limite de passo não tem a ver com precisão. Euler implícito já consegue com , onde o explícito não tem salvação.
Exemplo 5: energia numa mola simulada
Simulações físicas integram osciladores, e é o mais simples: , , com autovalores . Euler multiplica a energia por exatamente a cada passo, então a energia cresce para todo :
texth T energia depois de T (início 1) (1+h^2)^(T/h) 0.1 10 2.7048 2.7048 0.01 10 1.1052 1.1052 0.1 100 20959.2 20959.2 0.01 100 2.7181 2.7181
Uma mola nessa simulação ganha energia do nada. Uma mudança pequena corrige a deriva: atualize primeiro e depois . Esse Euler semi-implícito (simplético) mantém a energia entre e até com , e continua sendo de primeira ordem.
Exemplo 6: quando a ordem cai
O teorema pede limitada. Tome , , com solução , logo . Aqui e são ilimitadas em , embora o método nunca avalie ali. Cada linha quadruplica :
textn |e_n| ordem 100 1.410e-01 400 7.177e-02 0.49 1600 3.620e-02 0.49 6400 1.818e-02 0.50
A ordem é . Uma falha mais branda não prejudica Euler. Tome até e depois, integrando até . Um passo por execução atravessa o salto, com erro local em vez de . É um único passo ruim, então os erros oscilam, mas a ordem ajustada sobre , , ainda é . O ajuste varia com essas escolhas: outros tempos finais, ou a ordem de sinais inversa, dão valores de a .
A unicidade também importa. Para com , o caso de differential-equations-and-initial-value-problems, Euler fica em para todo , porque . Essa é uma solução válida, e é outra, que nenhum tamanho de passo encontra. Partindo de , 1000 passos chegam a em , contra o exato para esse início. O teorema não se aplica: não é lipschitziana em .
Exemplo 7: o arredondamento assume
Para , , até , compare o mesmo laço em float32 e float64. A estimativa de truncamento é .
textn erro float32 erro float64 truncamento 1000 1.840e-04 1.840e-04 1.839e-04 10000 1.889e-05 1.839e-05 1.839e-05 30000 6.041e-06 6.131e-06 6.131e-06 100000 4.264e-07 1.839e-06 1.839e-06 300000 3.506e-05 6.131e-07 6.131e-07 1000000 2.565e-05 1.839e-07 1.839e-07
Até o float32 acompanha o truncamento. Depois quem decide é o arredondamento, não . O valor em é cancelamento por sorte, não um ganho real, e mais passos pioram o resultado. Em float64 a linha do truncamento continua pelo menos até (). Com a taxa de primeira ordem de Euler, chegar a essa precisão custa dez milhões de passos, que é o motivo prático de runge-kutta-methods.
Equívocos Comuns e Armadilhas
- "Erro local significa resposta com precisão de segunda ordem." Os passos se somam: a ordem global é 1.
- "O erro global é a soma dos erros locais." Os erros são carregados e escalados pelo fluxo. No Exemplo 2 a soma é o dobro do erro, e no Exemplo 3 os problemas decrescentes esquecem erros antigos.
- "A cota prevê o erro." Ela é um pior caso. Em soluções decrescentes pode errar por 16 ordens de grandeza.
- "Solução suave permite passo grande." A precisão permitiria, a estabilidade não. O Exemplo 4 é .
- "Passo estável é passo preciso." Em não existe estável, e em com as iteradas ficam limitadas, mas trocam de sinal.
- "Métodos implícitos são mais precisos." Euler implícito tem a mesma ordem e, no Exemplo 4, o mesmo erro em . O que ele ganha é estabilidade.
- " menor é sempre melhor." Exemplo 7.
Resumo
O método de Euler comete um erro local de por passo. Se é lipschitziana e é limitada, o erro global é , com um fator que descreve o crescimento no pior caso e pode ser grande demais quando o fluxo contrai. As duas ordens foram medidas ( e ), e a ordem global caiu para com ilimitada. Para o método resolve exatamente uma equação próxima, com erro reverso . A estabilidade exige , o que elimina todo numa oscilação pura e força num problema cuja solução é : em o resultado foi . Problemas stiff assim pedem passos implícitos. O arredondamento impõe um piso, e em float32 ele chega por volta de .
Documentation Links
- Driscoll & Braun: Fundamentals of Numerical Computation, 6.2 Euler's method
- Driscoll & Braun: Fundamentals of Numerical Computation, 11.3 Absolute stability
- Driscoll & Braun: Fundamentals of Numerical Computation, 11.4 Stiffness
- Demanet (2012): MIT OCW 18.330, Chapter 5, Methods for ordinary differential equations
- SciPy: scipy.integrate.solve_ivp