zagadnienie numeryczne z obliczania logx

Odpowiedz Nowy wątek
2018-05-15 03:01
wil
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?

edytowany 3x, ostatnio: wil, 2018-05-15 03:03

Pozostało 580 znaków

2018-05-15 08:51
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.

Pozostało 580 znaków

2018-05-15 09:54
0

Mam mocne wrażenie, że tutaj pierwszy rzut oka jest bezużyteczny. A w kwestii tematu, oto dowód:
https://math.stackexchange.co[...]hod-has-quadratic-convergence

Pozostało 580 znaków

2018-05-15 10:10
0

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

Pozostało 580 znaków

2018-05-15 20:20
wil
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?

edytowany 3x, ostatnio: wil, 2018-05-15 20:23
A dlaczego wybrałeś taką metodę na obliczanie exp?. Bo jeśli exp będzie dokładne co do epsilon maszynowego, to już w 6 iteracji dostaję wynik zgodny z wbudowaną funkcją (co do 50 cyfr dziesiętnych). - enedil 2018-05-15 23:38

Pozostało 580 znaków

2018-05-15 23:12
0

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

Z ciekawości, ale poza tym jakoś nie wiem, czy @wil wszystko dobrze przekazał z tego tajemniczego źródła... - koszalek-opalek 2018-05-15 23:58
W tym kwestia, że tutaj nie ma źródła, są tylko obliczenia na konkretnych danych. - enedil 2018-05-16 02:27
Ale @wil napisał o jakichś źródłach: "Znalazłem taką dość dziwną metodę..." - koszalek-opalek 2018-05-16 02:28
Metoda jest standardowa, opisana na Wikipedii pod hasłem Newton Rapson - enedil 2018-05-16 07:09
@enedil: Wiem, ja jednak @wil'a pytam o źródło tego, co napisał. :) - koszalek-opalek 2018-05-16 07:56

Pozostało 580 znaków

2018-05-18 19:45
wil
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.

edytowany 2x, ostatnio: wil, 2018-05-18 19:49
@wil: No ale jest to źródło, czy nie? - koszalek-opalek 2018-05-19 19:21
A co ma nie być? Biblioteka do obliczeń na poczwórnej precyzji, czyli do około 32 cyfr. - wil 2018-05-19 23:47

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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