Jakie techniki aproksymacji istnieją dla funkcji pierwiastka kwadratowego?

17

Muszę zaimplementować aproksymację do odwrotności xx , tj. Kwadratowej funkcji super-root (ssrt). Na przykład ssrt(2))1,56 oznacza, że 1,561,562) . 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. ln(x)/W.(ln(x)) ). Wikipedia podaje tę samą formułę , a także równoważny miW.(ln(x)) . Biorąc pod uwagę, że istnieje uzasadniona ilość informacji na temat obliczania W.(x) [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.ln(x)

Mam jednak dwa pytania:

  1. Czy gdzieś opublikowano techniki przybliżania specyficzne dla tej funkcji?
  2. 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.ssrt(x)

-

  1. 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
  2. Cyfrowa biblioteka funkcji matematycznych . http://dlmf.nist.gov/4.13
  3. Crenshaw, Jack W. (2000), Math Toolkit for Real-Time Programming.
  4. Hart, John F. (1978), Computer Approximations.
  5. 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
  6. 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 na[3)]ssrt(x)[5]W.(x)to 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ę.[6]W.(x)

Datageist
źródło
2
Zapytałem o to na Meta, ponieważ pole komentarzy nie jest przeznaczone do długich dyskusji. Proszę zasugerować, jak powinniśmy poradzić sobie z tymi pytaniami tutaj: Czy pytania dotyczące analizy numerycznej są tematyczne?
@datageist - Początkowy wniosek z meta pytania brzmiał: jeśli chcesz użyć tej analizy numerycznej do przetwarzania danych DSP, to jest na temat. Jeśli nie, to nie. Jak to się ma do DSP?
Kevin Vermeer
2
@Kevin Pojawił się w kontekście opracowywania efektu dźwiękowego.
Datageist
1
Ilekroć muszę napisać procedurę dla funkcji Lamberta, zwykle używam przybliżeń podanych w tym artykule, a następnie szlifuję za pomocą Newtona-Raphsona, Halleya lub jakiejkolwiek innej metody iteracyjnej. Możesz dostosować to podejście do odwracania ...xx

Odpowiedzi:

6

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.

ylny=lnx

y=sol(x,y)=milnxy

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ę.yxx

Następnie wypróbowałem podejście podobne do iteracyjnego pierwiastka kwadratowego Newtona:

y=yprevious+y2=y+elnxy2

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).

xxmin=(1e)1e

y0=ln(x)+1

Pomyślałem więc, że może jest lepsze rozwiązanie:

y=(1a)×y+a×g(x,y)ax

Potem znalazłem coś interesującego.

yyy=xy2=g(x,y+ϵ)=eln(x)y+ϵy2yϵ×(ln(y))y1=y+ϵϵy2=g(x,y1)(y2)-y)ϵ×(-ln(y))=(y1-y)×(-ln(y))

yy=y2)+ln(y)×y11+ln(y)ln(y1)ln(y)

y[n+1]=sol(x,y[n])+ln(y[n])×y[n]1+ln(y[n])=miln(x)y[n]+ln(y[n])×y[n]1+ln(y[n])

y=1+ln(x)

(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.)

Jason S.
źródło