Método de Newton
Objetivos de Aprendizagem
- Deduzir a iteração de Newton a partir do polinômio de Taylor de grau 1 e escrevê-la como iteração de ponto fixo.
- Enunciar o teorema de convergência local com todas as hipóteses e provar a relação de erro .
- Medir a ordem de convergência a partir dos erros de uma execução real em float64 e localizar a iteração em que o arredondamento encerra a medição.
- Quebrar cada hipótese por vez (suavidade, raiz simples, bom chute inicial, derivada não nula ao longo do caminho) e prever o que a execução faz.
- Explicar por que os buscadores de raízes das bibliotecas protegem a ideia de Newton com um intervalo que contém a raiz.
Contexto e Motivação
sequences-and-convergence rodou a iteração de Newton para e mostrou os erros , , : o expoente quase dobra a cada passo. Aquela lição provou que a sequência converge e observou os dígitos dobrando. Esta explica por que eles dobram e diz quando isso vale.
Os dois buscadores de raízes anteriores definem a comparação. bisection-and-convergence-rate corta um intervalo ao meio a cada passo para qualquer contínua com troca de sinal. fixed-point-iteration reduz o erro por um fator perto de . O método de Newton escolhe uma para a qual esse fator é zero na raiz. O preço é uma derivada a cada passo e a perda da garantia da bisseção: Newton pode divergir, ciclar para sempre ou cair numa raiz longe da desejada.
Teoria Central
A iteração a partir da reta tangente
Perto de um chute atual , troque pelo seu polinômio de Taylor de grau 1 (veja taylor-and-maclaurin-series-with-error-bounds), que é a reta tangente, e ache o zero dessa reta:
Cada iteração custa uma avaliação de e uma de . A lição de Taylor chama o polinômio de grau 2 de modelo local por trás do método de Newton para minimização. Trata-se desta mesma iteração aplicada à equação , porque a reta tangente de é a derivada do modelo quadrático de .
Newton como iteração de ponto fixo
A iteração é com . Onde , os pontos fixos de são exatamente as raízes de . Derivando,
então em qualquer raiz com . Um fator de contração zero é o motivo de a convergência superar toda taxa linear.
O teorema de convergência local
Escreva .
Hipóteses. é raiz de . Em , é duas vezes continuamente derivável e não tem zero. Com , vale também .
Conclusão. Para todo os iterados ficam em , e . Se nenhum é zero, então
Prova. O teorema de Taylor com resto de Lagrange, expandido em e avaliado em , dá um entre os dois com
Dividindo por e usando , vem
Logo , o que mantém os iterados em e leva o erro a zero. Então e tendem a , e a continuidade de e dá o limite.
O teorema é suficiente e local. Ele nada diz sobre pontos de partida fora de , e "quadrática" quer dizer pelo menos quadrática: se o limite é e a ordem pode ser maior. Para em o passo é , e a partir de os erros são , , , com indo , , .
Raízes múltiplas
Se com , suave e , então e o teorema não se aplica. Calculando o limite de obtém-se , então Newton ainda é uma contração perto de , mas só linear, com razão numa raiz dupla. Quando é conhecido, o passo torna essa derivada zero de novo.
Critérios de parada
Perto de uma raiz simples , então o tamanho do passo estima o erro de , não o de , que é bem menor. O resíduo é um erro reverso: resolve exatamente . Convertê-lo em erro direto exige dividir por , o que falha em funções planas. Para em o resíduo é e o erro é . Veja conditioning-and-numerical-stability para essa distinção. Um laço robusto testa o passo e o resíduo e ainda limita o número de iterações, porque nenhum dos dois testes dispara num ciclo.
Exemplos Resolvidos
Exemplo 1: a equação de Kepler, com a ordem medida
A propagação de órbitas resolve para a anomalia excêntrica . Tome , , de modo que e , e comece em . Uma execução em float64, com erros medidos contra a raiz calculada com 80 dígitos, :
textk x_k e_k e_k/e_{k-1}^2 p_k 0 1.0 -2.881e-01 1 1.3012752012180726 1.318e-02 0.1588 2 1.288118592417824 2.728e-05 0.1569 2.004 3 1.2880913133288192 1.170e-10 0.1572 2.000 4 1.2880913132118377 -1.177e-17
Aqui é a ordem observada. Ela concorda com o do teorema, e a razão concorda com . Em a teoria prevê , mas os floats perto de distam entre si. O erro de truncamento caiu abaixo do erro de arredondamento, é o float mais próximo de , o calculado é exatamente , e a razão e deixam de significar algo. Quatro iterações, oito avaliações.
O teorema se aplica com folga. Em toda parte e , então e qualquer serve. Uma varredura de 20.001 pontos de partida a até de convergiu em no máximo 7 iterações cada. scipy.optimize.newton(f, 1.0, fprime=df, tol=1e-12) devolve o mesmo float em 4 iterações.
Exemplo 2: dividir usando só multiplicação
Para a iteração se simplifica em , sem nenhuma divisão. Ela ainda tem uma lei exata de erro: . Logo converge se e somente se , isto é, . Respostas globais assim são raras. Com e :
textx0 = 0.10 0.13 0.1417 0.142848 0.1428571422 (razao |e_k|/e_{k-1}^2 = 7.0000) x0 = 0.28 0.0112 0.0215 0.0398 0.0685 0.1042 0.1324 0.1421 x0 = 0.29 -0.0087 -0.0179 -0.0381 -0.0864 -0.2250 -0.8044 -6.1387
A primeira linha mostra a constante prevista . A segunda começa dentro da região, então converge, mas os primeiros passos não têm nada de quadráticos. A terceira começa adiante e dispara para .
Exemplo 3: perder suavidade reduz a ordem
Tome . A raiz é simples e é contínua com , mas é ilimitada perto de , então . Para o iterado seguinte se simplifica em , o que prevê ordem com constante . A partir de :
textk e_k e_k/e_{k-1}^(3/2) p_k 2 8.728e-03 0.3474 1.296 4 3.288e-06 0.4862 1.468 6 8.105e-14 0.5000 1.500 8 6.196e-31 0.5000 1.500
Tire mais suavidade e a convergência também vai embora. Com , cuja derivada é ilimitada na raiz, todo passo é exatamente , e alterna entre e para sempre.
Exemplo 4: uma raiz dupla, e onde o arredondamento a interrompe
tem raiz dupla em . A partir de a razão dá , , , e já se assentou em em , o valor previsto . A ordem observada é . Pior: mais iterações não resolvem. Com f = x**3 - 3*x + 2 e df = 3*x**2 - 3, o erro chega a cerca de em , fica errático e congela em em . Esse valor exato pouco significa: grafias como x*x*x ou 3*x*x mudam cada avaliação em cerca de 1 ulp, e em oito grafias de e o congelamento variou de a . Perto da raiz , e quando encosta no ruído de arredondamento de da avaliação da cúbica, devolve ruído. Isso acontece em , mais ou menos a raiz quadrada da precisão da máquina, e vem do condicionamento do problema, não de Newton. A forma de escrever importa bem mais: (x-1)**2*(x+2) não tem esse cancelamento. Com df = 2*(x-1)*(x+2) + (x-1)**2 ela chega exatamente a em , e outras grafias de param a 1 ulp de um ou dois passos antes.
Com conhecido, o passo modificado na forma fatorada dá erros , , , e depois , com chegando a . Na forma expandida o mesmo passo, com o código acima, chega a e depois salta de volta para , enquanto x*x*x para em : agora o ruído está no numerador de um passo grande, e os últimos dígitos dependem da grafia.
Exemplo 5: pontos de partida e regiões planas
Nos quatro primeiros casos existe uma raiz simples e a culpa é só do ponto de partida.
- Kepler com excentricidade alta. Com , , a raiz é . A partir de , e o primeiro passo cai em . A execução visita então , e antes de convergir, depois de 19 iterações. A partir de ela desce monotonicamente em 7 iterações. Aqui o teorema cobre só cerca de , então os dois pontos ficam fora dele. O ponto funciona por outro motivo: entre e , e , então as retas tangentes ficam abaixo do gráfico e os iterados não ultrapassam .
- Um ciclo que atrai. a partir de dá exatamente. Não é um único ponto azarado: cai no mesmo ciclo, e de 4001 pontos igualmente espaçados em , 1437 terminam nele. Os outros chegam à raiz real .
- Divergência. Para , pontos de módulo abaixo de convergem e os maiores divergem: chega a , enquanto dá , , , , .
- Uma derivada que se anula. em divide por zero. Em a tangente é quase horizontal, o primeiro passo cai em e a execução converge para , não para a raiz mais próxima .
- Sem raiz real. a partir de nunca se estabiliza; os iterados vagueiam e chegam a em 60 iterações.
Exemplo 6: o que as bibliotecas fazem
No problema com , scipy.optimize.newton com fprime e tol=1e-12 reproduz as execuções acima: 19 iterações a partir de e 7 a partir de . scipy.optimize.brentq no intervalo com xtol=1e-12 dispensa derivada e bom chute, usa 12 avaliações de e devolve um valor a menos de de . Um intervalo com troca de sinal não se perde, e por isso um projeto comum dá um passo de Newton quando ele fica dentro do intervalo e um passo de bisseção quando não fica. Em dimensões a divisão vira um sistema linear com a jacobiana a cada passo, um dos motivos de lu-decomposition-and-partial-pivoting importar aqui.
Equívocos Comuns e Armadilhas
- "O método de Newton sempre converge quadraticamente." A garantia é local: raiz simples, função , ponto de partida próximo. Os Exemplos 3, 4 e 5 quebram essas hipóteses uma por vez.
- "Quadrático desde o primeiro passo." A ordem é um limite. No Exemplo 2 com os primeiros passos são lentos, e no Exemplo 5 os primeiros passos se afastam da raiz.
- "Os dígitos dobram até a resposta ficar exata." Dobram até o erro de truncamento encontrar o de arredondamento, o que levou quatro passos no Exemplo 1.
- "Uma raiz dupla lenta só precisa de mais iterações." O Exemplo 4 para de melhorar perto de na forma expandida, não importa quanto rode.
- "O do teorema é onde Newton funciona." É onde a prova funciona. O ponto do Exemplo 5 está fora dele e converge mesmo assim.
- "Um pequeno significa que está perto da raiz." Em , um resíduo de vem com um erro de .
- "Usa menos iterações, logo é mais barato." Cada iteração avalia e .
secant-method-and-order-of-convergencefaz a comparação por avaliação.
Resumo
O método de Newton resolve a reta tangente a cada passo: . Como iteração de ponto fixo, tem numa raiz simples. O teorema de Taylor transforma isso em , então para com perto de e um ponto de partida próximo o bastante, o erro é elevado ao quadrado a cada passo, com constante limite . Uma execução real mostra isso como uma razão que se assenta e , até o arredondamento assumir. Cada hipótese importa: sem a ordem caiu para ou a execução ciclou, com a convergência ficou linear e empacou perto de , e com um ponto de partida ruim a execução divergiu, ciclou ou achou uma raiz distante. Quando há um intervalo com troca de sinal, brentq troca velocidade por garantia.
Documentation Links
- Driscoll and Braun: Fundamentals of Numerical Computation, 4.3 Newton's method
- Driscoll and Braun: Fundamentals of Numerical Computation, 4.2 Fixed-point iteration
- Demanet (2012): MIT 18.330 Introduction to Numerical Analysis, Chapter 4: Nonlinear equations
- Johnson (2015): MIT 18.335J Introduction to Numerical Methods, Square Roots via Newton's Method
- SciPy documentation: scipy.optimize.newton
- SciPy documentation: scipy.optimize.brentq