zagadnienie numeryczne z obliczania logx

0

Znalazłem taką dość dziwną metodę obliczania logarytmu z zadanej liczby a.

Autor zapisuje najpierw równanie:

f(x) = exp(x) - a

którego zerem jest faktycznie: x = log(a);

autor następnie proponuje to wyliczyć za pomocą metody Newtona, czyli wedle schematu:

x -> x - f/f'

co w tym przypadku daje wzór:

x -> x + a.exp(-x) - 1

dalej twierdzi, że mając x z przybliżeniem n cyfr, w jednym kroku otrzyma 2n-cyfr, wyliczając exp(x) z dokładnością zaledwie n-cyfr?
Prawda to czy blef?

0

Czy kropka po a oznacza u Ciebie mnożenie? Czy co?

A merytorycznie: na pierwszy rzut oka ma to trochę sensu, bo exp jest funkcją wykładniczą (oczywiście:)), więc n cyfr argumentu przekłada się na n*e (e to podstawa logarytmu naturalnego) cyfr wyniku -- więc i z dokładnością chyba może być podobnie. A że e to trochę ponad dwa, to wychodzi mu dwa razy więcej cyfr dokładnych niż w x, bo zaokrągla w dół... :)

Ale to tylko pierwszy rzut oka.

0

Mam mocne wrażenie, że tutaj pierwszy rzut oka jest bezużyteczny. A w kwestii tematu, oto dowód:
https://math.stackexchange.com/questions/786453/proof-that-newton-raphson-method-has-quadratic-convergence

0

A, czyli to nie ma nic wspólnego z konkretną funkcją, nie? Zawsze będzie tak (dwa razy więcej cyfr)?

0
koszalek-opalek napisał(a):

A, czyli to nie ma nic wspólnego z konkretną funkcją, nie? Zawsze będzie tak (dwa razy więcej cyfr)?

Raczej mało sensowne.

##ln2 = 0.69, biorę tylko dwie cyfry.

i teraz chcemy to podwoić - otrzymać 4 cyfry, używając schematu Newtona, czyli:

##x = 0.69 + 2*exp(-0.69) - 1;
gdzie ten exp wyliczamy także z dokładnością 2 cyfr, co daje: exp(-0.69) = 0.50

podstawiając do wzoru:
##x = 0.69 + 2*0.5 - 1 = 0.69;
czyli nic nie wyliczyliśmy, niestety!

Tu należy wyliczać ten exp z dokładnością aż 4 cyfr, bo dopiero wtedy otrzymamy postęp:
exp(-0.69) = 0.5016

##x = 0.69 + 2*0.5016 - 1 = 0.6932;

jednak: ln2 = 0.69314718... co zaokrąglone do 4 cyfr daje: 0.6931,

więc metoda chyba wymaga faktycznie większej dokładności obliczeń samych tych korekt, aby podwajać produkować poprawne wyniki;
prawdopodobnie aż nieskończenie dokładne - zgodne z teorią.

Wniosek: metoda Newtona ma zbieżność 2, ale pod warunkiem nieskończenie dokładnych obliczeń, co jest absurdalne.

W związku z tym mamy zagadkę: jaką ma zbieżność metoda rzędu 2, przy obliczeniach ze skończoną precyzją, czyli w praktyce?

0

@wil: A może weź podaj źródło, gdzie to znalazłeś? :)

0
koszalek-opalek napisał(a):

@wil: A może weź podaj źródło, gdzie to znalazłeś? :)

być może autor się tylko przejęzyczył z tą precyzją, bo teraz widzę że w kodzie exp jest liczone na quad...

w praktyce nie używa się takich skeczy, więc log(x) jest liczony raczej z szeregów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1