[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: a^b e b^a
On Thu, 27 May 1999, Fabio Dias wrote:
> Eu não sei se a fórmula de Newton funciona para funções que não são
polinomiais, mas fazendo por ele, eu obtive 1.7649219145, que funcionou.
[para resolver 5^x = x^5 no intervalo 1 < x < 2]
O método de Newton nada tem de especial para polinômios.
Para quem não sabe, o método de Newton propõe-se a encontrar
(uma aproximação muito boa de) uma raiz de f(x) = 0
da seguinte forma. Se x_0 é uma raiz grosseiramente aproximada
definimos recursivamente uma sequencia x_n por
x_{n+1} = x_n - (f(x_n)/f'(x_n))
A sequencia tende rapidamente para a raiz se x_0 estiver suficientemente
próximo da raiz. Para ver isto, veja que estamos iterando a função
g(x) = x - (f(x)/f'(x))
Os pontos fixos de g, i.e., soluções de g(x) = x,
são as raizes de f, como pode-se ver facilmente pela fórmula.
Mais ainda, nestes pontos fixos temos g'(x) = 0 pois
g'(x) = (f(x) f''(x))/(f'(x) f'(x))
Assim, temos uma convergência muito rápida, com o número de casas
decimais corretas duplicando a cada iteração. Veja para o problema
do Wagner as 10 primeiras iterações (com 60 casas decimais):
x_0 = 2.0
x_1 = 1.82396160314087762035186760956148376126446776010871910021313
x_2 = 1.76981155757272173159279927307535682266855941536716810195031
x_3 = 1.76495898315579714441445821159899552833657258847387122230610
x_4 = 1.76492191667642673997881594197180150375264581556217610599180
x_5 = 1.76492191452577588999855009694526714223465227445279979234980
x_6 = 1.76492191452577588275872359091145918341369327187630142639407
x_7 = 1.76492191452577588275872359091145910137010325929468380899538
x_8 = 1.76492191452577588275872359091145910137010325929468380899537
x_9 = 1.76492191452577588275872359091145910137010325929468380899537
x_10= 1.76492191452577588275872359091145910137010325929468380899537
Observe que as 60 casas já estavam essencialmente fixas em x_7.
Idem começando com x_0 = 1:
x_0 = 1.0
x_1 = -.31268499001775746780337724911043641120235781634885335468944
x_2 = -.969348945031818065611907439335846882303667916572262328362349
x_3 = -.707852893388296541096661556859958415031031829219070422866367
x_4 = -.035339794721569226020881456270237795338901025119189258387864
x_5 = -.656677952529219026913567601052316658353912970705735753309353
x_6 = .611144574844926302627002097430914009338957075692438555595247
x_7 = -.106725277909310153684948662830341872765813825977681926435996
x_8 = -.728367939324361140849946676702971380538306949251068564612048
x_9 = -.162097899325002229686980684385095803985250612037988093366303
x_10= -.785258126350405280951472908980617587480914273676236765772256
Neste caso visivelmente começamos longe demais da solução... por
curiosidade continuei a calcular iteradas e obtive
x_31 = 5.00000395070353994529512164951654054061897169734623343627173
x_32 = 5.00000000002292504610552261815694719165221733820527317523875
x_33 = 5.00000000000000000000077194161396618534093751775323781710474
x_34 = 5.00000000000000000000000000000000000000000087525162394699554
x_35 = 5.00000000000000000000000000000000000000000000000000000000000
x_36 = 5.00000000000000000000000000000000000000000000000000000000000
Aliás, aqui estão os comandos maple utilizados:
> f := x -> x^5 - 5^x; fp := x -> 5 * x^4 - log(5) * 5^x;
> g := x -> evalf(x - f(x)/fp(x),60);
> x := 2.0;
> for i to 10 do x := g(x); od;
[]s, N.
http://www.mat.puc-rio.br/~nicolau