Bernardo, valeu mesmo.Não fui eu quem formulou a pergunta, muito interessante por sinal. Escrevo para parabenizá-lo, acima de tudo pela sua atenção, da a questão formulada pelo denisson .Tudo muito detalhado,legal mesmo.Todos aprendemos. Um abraço paulo Barclay --- Em dom, 5/4/09, Bernardo Freitas Paulo da Costa <bernardo...@gmail.com> escreveu:
De: Bernardo Freitas Paulo da Costa <bernardo...@gmail.com> Assunto: [obm-l] Re: [obm-l] Método De Newton Para: obm-l@mat.puc-rio.br Data: Domingo, 5 de Abril de 2009, 7:48 2009/4/5 Denisson <denisso...@gmail.com>: > Estava relendo sobre o método de newton e a demonstração fala que numa > vizinhança suficientemente próxima da raiz o método converge. Implementei o > algoritmo em um computador e o polinômio x^2 + 3x + 2 por exemplo de raizes > -1 e -2 ao tomar uma aproximação inicial de valor 100000 ele encontra a raiz > -1. Pergunto o que caracteriza exatamente esse intervalo "suficientemente > próximo". Bom, isso é realmente um "problema" da demonstração (e provavelmente de todas as demonstrações que dizem "suficientemente pequeno" ou "suficientemente grande"). Mas acho que não tem jeito melhor de fazer. Deixa eu explicar o que eu quero dizer: Se você leu a demonstração, o cara precisa de duas hipóteses sobre os valores da derivada de f (uma para f', outra para f'', se a memória não falha), para garantir que "o próximo ponto" está mais próximo da raiz do que o "atual". Para isso, o cara usa a continuidade de f, f' e f'', o que é um método bastante geral para obter que a função não varia muito, mas em compensação, o resultado que ele dá é somente o "suficientemente pequeno" que você encontrou, e ainda por cima, a continuidade não te dá o tamanho desse intervalo. Assim, ele diz apenas suficientemente pequeno, existe, e o matemático está contente. Agora, você quer implementar o algoritmo, e gostaria que saber quando ele funciona. Muito bem, basta reler a demonstração e ver quais são *exatamente* as hipóteses que a prova exige para a convergência. Se você lembra do algoritmo de escolha do próximo ponto, temos a_{n+1} = a_n - f(a_n) / f'(a_n), e a gente testa a convergência usando o único critério disponível, ou seja, o de Cauchy, e para isso temos que tentar calcular (a_{n+2} - a_{n+1}) / (a_{n+1} - a_n) e ver se dá um comportamento de série geométrica. Com a fórmula, isso quer dizer que é pra calcular f(a_{n+1}) / f(a_n) * f'(a_n) / f'(a_{n+1}). Agora, use uma aproximação de segunda ordem para a função perto de a_n, ou seja, diga que f(a_n + x) = f(a_n) + f'(a_n)x + f''(a_n)x^2/2 + erro pequenininho, e vamos estimar f(a_{n+1}) / f(a_n). Pela definição do a_{n+1} (lembre da reta tangente batendo no zero !), a distância do a_{n+1} ao a_n é tal que os dois primeiros termos de taylor desaparecem, resta portanto só o último, que vale f''(a_n)/2 * (a_{n+1} - a_n)^2 = f''(a_n)/2 * f(a_n)^2 / f'(a_n)^2. Assim, o quociente a gente pode estimar com f(a_{n+1}) / f(a_n) ~= f''(a_n)/2 * f(a_n) / f'(a_n)^2. Daí, resta estimar o quociente das derivadas, e se eu não me engano, a demonstração simplesmente exige que a f' esteja no intervalo [a, A], com 0 < a < A, e portanto o quociente é no máximo A/a que é limitado. Daí, se você começar suficientemente perto, o erro é menor do que f(a_n) * (f''(a_n)/2 / f'(a_n)^2) * A/a e isso tudo será menor do que 1 (pro critério de Cauchy, lembra ?) bastando que a f''(a_n) seja limitada, e que f(a_n) seja muuuuuuuuuuuito pequeno (ou seja, isso é o "suficientemente perto" da raiz em questão). Bom, isso é o primeiro passo. Agora, vamos ver o teu exemplo ! Você pegou um polinômio do segundo grau para testar, portanto, só pra início de conversa, a f''(x) é limitada *na reta toda* ! O que já é uma boa mão na roda na hora de fazer o algoritmo convergir. Se você refizer as contas que eu dei, simplificando quando puder, vai dar pra ver que o quociente entre as diferenças sucessivas (o que a gente tem que calcular no critério de Cauchy) é f(a_n) * f''(a_n) / 2( f'(a_n) * f'(a_{n+1}) = Constante * f(a_n) / ( f'(a_n) f'(a_{n+1} ) . Desenvolvendo mais uma vez por Taylor (no denominador agora, a gente quase nunca usa isso na prova porque não precisa, mas no teu caso é legal ver no que dá), a gente obtém um treco que é aproximadamente (veja que, na verdade, é exatamente, porque a aproximação de Taylor de ordem 2 de um polinômio de ordem dois é *exata* !) f(a_n) * f''(a_n) / 2 ( f'(a_n) ^2 - f(a_n)*f''(a_n) ) e substituindo o polinômio, você vai ver que dá sempre menor do que 1, exceto quando você começa entre as raízes. Isso tem também uma explicação geométrica : como a função é convexa, o método sempre aproxima quando você está depois das raízes (esse é um excelente exercício pra você ver que você entendeu direitinho o método !), mas pode se afastar quando você começa entre. Aliás, a melhor maneira de tentar começar a solução é justamente fazer o desenho ! > O segundo ponto, o que acontece no método quando você toma como aproximação > inicial exatamente a média entre duas raizes? Ele vai convergir pra algum > valor? No computador deu erro mas não tenho certeza ainda se foi erro de > programação :P Bom, é um erro dos dois :) Veja bem, lembra da demonstração, que a gente pedia para a f' estar num intervalo longe do zero (para poder estimar um quociente ?) Pois é, a gente também precisa que a derivada seja diferente de zero para poder simplesmente calcular o próximo passo da iteração (qualquer coisa, dê uma olhada de volta na fórmula para lembrar !). Ora, numa função do segundo grau, começando no ponto médio das raízes, a derivada é zero, portanto, você não pode nem dar o primeiro passo !!! Daí, como você não verificou a hipótese matemática ( f' != 0) o programa se encarregou de xingar você por tentar dividir por zero :))) O que mostra que é importante verificar todas as hipóteses antes de começar a fazer as contas, porque senão o resultado pode ficar sem sentido nenhum. Ah, se você quiser um exemplo de coisas que não funcionam, tente calcular as raízes de x(x-1)(x+1) usando o método e começando num "ponto ruim", x = 0.44721359549995793928183473374625 Repare que eu escolhi um ponto entre as três raízes, porque um ponto fora delas daria (pela mesma idéia do convexo que eu falei antes, tem a ver com a monotonicidade de f') sempre convergente pra raíz mais próxima ! > Obrigado > -- > Denisson Qualquer dúvida, é só falar ! -- Bernardo Freitas Paulo da Costa ========================================================================= Instruções para entrar na lista, sair da lista e usar a lista em http://www.mat.puc-rio.br/~obmlistas/obm-l.html ========================================================================= Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com