Muszę zaimplementować aproksymację do odwrotności , tj. Kwadratowej funkcji super-root (ssrt). Na przykład oznacza, że . Nie interesuje mnie żadna konkretna dokładność / głębia bitowa, ponieważ rozumiem, jakie są moje opcje w przeciwieństwie do prostszych podejść wykorzystujących serie mocy.
Wolfram Alpha daje ładne symboliczne rozwiązanie w kategoriach funkcji W Lamberta (tj. ). Wikipedia podaje tę samą formułę , a także równoważny . Biorąc pod uwagę, że istnieje uzasadniona ilość informacji na temat obliczania [1] [2], technicznie rzecz biorąc, wszystko jest potrzebne, aby coś zaimplementowaćdla różnych wymagań. Znam co najmniej dwie książki, które szczegółowo opisują przybliżenie [3] [4], więc jest nawet dużo miejsca na optymalizację z tego kierunku.
Mam jednak dwa pytania:
- Czy gdzieś opublikowano techniki przybliżania specyficzne dla tej funkcji?
- Czy występuje pod inną nazwą oprócz „pierwiastka kwadratowego”, który nieco ułatwiłby wyszukiwanie referencji?
Wikipedia / Google ujawniło kilka odnośników poświęconych bardziej ogólnym funkcjom „tetracji”, które obejmują jako szczególny przypadek, ale większość z nich wydaje się bardziej nastawiona na badanie / definiowanie ogólnych przypadków.
-
- Corless, R .; Gonnet, G .; Zając, D .; Jeffrey, D .; Knuth, Donald (1996), „On the Lambert W function” http://www.apmaths.uwo.ca/~djeffrey/Offprints/W-adv-cm.pdf
- Cyfrowa biblioteka funkcji matematycznych . http://dlmf.nist.gov/4.13
- Crenshaw, Jack W. (2000), Math Toolkit for Real-Time Programming.
- Hart, John F. (1978), Computer Approximations.
- Chapeau-Blondeau, F. i Monir, A. (2002). Numeryczna ocena funkcji Lamberta W i zastosowania do generowania uogólnionego szumu Gaussa z wykładnikiem 1/2. Transakcje IEEE dotyczące przetwarzania sygnałów 50, 2160-2165. http://www.istia.univ-angers.fr/~chapeau/papers/lambertw.pdf
- Minero, Paul. Szybkie Przybliżony Lambert W . http://www.machinedlearnings.com/2011/07/fast-approximate-lambert-w.html
-
Aktualizacja
Po wykonaniu niektórych więcej badań w ciągu ostatnich kilku dni, wciąż nie znalazłem rodzaj hands-on „Crenshaw stylu” Leczenie s s r t ( x ), miałem nadzieję, ale nie znaleźliśmy nowy referencje warte udokumentowania tutaj. Na stronie trzeciej w [ 5 ] znajduje się sekcja zatytułowana „Szybka aproksymacja”, która szczegółowo opisuje przybliżenie W ( x ) w kontekście generowania szumu. Co ciekawe, gęstość prawdopodobieństwa „szumu Gaussa z wykładnikiem 1/2” [w pracy] wygląda uderzająco podobnie do histogramu w odpowiedzi Kellenjba nato pytanie o wykrywanie obcinania sygnału .
Ponadto link podany przez rwong w komentarzach jest świetnym źródłem do faktycznej implementacji W ( x ) , a nawet prowadzi do projektu autora na licencji BSD o nazwie fastapprox , który obejmuje opisaną implementację.
źródło
Odpowiedzi:
Niektóre numeryczne dźgnięcia w ciemności dały następujące do iteracyjnego podejścia:
Szukamy rozwiązania y = f (x) gdzie y ^ y = x.
Wartość jest stałym punktem powyższego równania i wydaje się, że empirycznie wydaje się zbieżna dla niektórych wartości x , ale dla większych wartości x oscyluje lub rozbiega się.y x x
Następnie wypróbowałem podejście podobne do iteracyjnego pierwiastka kwadratowego Newtona:
gdzie y * ma reprezentować nieprzekraczającą, ale optymistyczną odpowiedź, która zachowuje dokładność, jeśli zgadniesz dokładną wartość początkową (w pierwiastku kwadratowym y 2 = x, to y * = x / y).
Pomyślałem więc, że może jest lepsze rozwiązanie:
Potem znalazłem coś interesującego.
(Ktoś prawdopodobnie mógłby wykazać, że jest to w jakiś sposób równoważne Newtonowi-Raphsonowi, ale myślę, że jest to poza moimi możliwościami.)
źródło