Welche Approximationstechniken gibt es für die Quadrat-Superwurzelfunktion?

17

Ich muss eine Annäherung an die Inverse von implementieren , dh die Quadrat- Superwurzel-Funktion (ssrt). Zum Beispiel bedeutet s s r t ( 2 ) 1,56 , dass 1,56 1,562 ist . Ich bin nicht so sehr an einer bestimmten Genauigkeit / Bittiefe interessiert wie am Verständnis meiner Optionen im Gegensatz zu einfacheren Ansätzen mit Potenzreihen.xxssrt(2)1.561.561.562

Wolfram Alpha gibt eine schöne symbolische Lösung in Bezug auf die Lambert W - Funktion (dh ). Wikipedia gibt die gleiche Formel sowie das Äquivalent e W ( ln ( x ) ) an . Angesichts der Tatsache, dass es eine angemessene Menge an Informationen zur Berechnung von W ( x ) [1] [2] gibt, ist dies technisch alles, was zur Implementierung von etwas erforderlich istln(x)/W(ln(x))eW(ln(x))W(x)für eine Vielzahl von Anforderungen. Ich kenne mindestens zwei Bücher, die sich eingehend mit der Annäherung von [3] [4] befassen. Daher gibt es auch genügend Raum, um diese Richtung zu optimieren.ln(x)

Ich habe jedoch zwei Fragen:

  1. Wurden für diese Funktion spezifische Approximationstechniken irgendwo veröffentlicht?
  2. Gibt es einen anderen Namen als "Quadratische Superwurzel", der die Suche nach Referenzen etwas erleichtert?

Wikipedia / Google hat einige Verweise auf allgemeinere „tetration“ Funktionen gewidmet ist aufgedreht , die einschließen als Sonderfall, aber die meisten von ihnen scheinen mehr darauf ausgerichtet werden , um die Erkundung / Festlegung der allgemeinen Fälle.ssrt(x)

-

  1. Corless, R .; Gonnet, G .; Hare, D .; Jeffrey, D .; Knuth, Donald (1996), "Über die Lambert W-Funktion" http://www.apmaths.uwo.ca/~djeffrey/Offprints/W-adv-cm.pdf
  2. Digitale Bibliothek mathematischer Funktionen . http://dlmf.nist.gov/4.13
  3. Crenshaw, Jack W. (2000), Math Toolkit für Echtzeitprogrammierung.
  4. Hart, John F. (1978), Computer Approximations.
  5. Chapeau-Blondeau, F. und Monir, A. (2002). Numerische Auswertung der Lambert W-Funktion und Anwendung zur Erzeugung von verallgemeinertem Gaußschen Rauschen mit Exponent 1/2. IEEE-Transaktionen zur Signalverarbeitung 50, 2160-2165. http://www.istia.univ-angers.fr/~chapeau/papers/lambertw.pdf
  6. Minero, Paul. Schnell Ungefähre Lambert W . http://www.machinedlearnings.com/2011/07/fast-approximate-lambert-w.html

-

Aktualisieren

Etwas mehr Forschung in den letzten paar Tage nachdem ich, ich habe die Art von Hands-on „Crenshaw Stil“ noch nicht gefunden Behandlung von s s r t ( x ) ich gehofft hatte, aber ich habe einen neuen finden Referenz hier dokumentieren. Auf Seite drei in [ 5 ] gibt es einen Abschnitt mit dem Titel "Fast Approximation", in dem die Approximation von W ( x ) im Kontext der Rauscherzeugung sehr detailliert beschrieben wird . Interessanterweise ähnelt die Wahrscheinlichkeitsdichte des "Gaußschen Rauschens mit Exponent 1/2" auffallend dem Histogramm in Kellenjbs Antwort auf[3]ssrt(x)[5]W(x)Diese Frage zum Erkennen von Signalbeschneidungen .

Darüber hinaus ist der von rwong in den Kommentaren angegebene Link eine hervorragende Ressource für die tatsächliche Implementierung von W ( x ) , und er verweist sogar auf das BSD-lizenzierte Projekt des Autors namens fastapprox , das die beschriebene Implementierung enthält.[6]W(x)

Datageist
quelle
2
Ich habe bei Meta danach gefragt, da das Kommentarfeld nicht für längere Diskussionen gedacht ist. Bitte schlagen Sie hier vor, wie wir mit diesen Fragen umgehen sollen: Sind Fragen zur numerischen Analyse zum Thema?
@datageist - Die erste Schlussfolgerung aus der Meta-Frage lautete: Wenn Sie diese numerische Analyse zur Verarbeitung von DSP-Daten verwenden möchten, ist sie themenbezogen. Wenn nicht, dann nicht. Wie hängt das mit DSP zusammen?
Kevin Vermeer
2
@ Kevin Es entstand im Rahmen der Entwicklung eines Audioeffekts.
Datageist
1
xx

Antworten:

6

Einige numerische Stiche im Dunkeln ergaben Folgendes für einen iterativen Ansatz:

Wir suchen nach der Lösung y = f (x) mit y ^ y = x.

ylny=lnx

y=g(x,y)=elnxy

yxx

Dann habe ich einen Ansatz ausprobiert, der Newtons iterativer Quadratwurzel ähnelt:

y=yprevious+y2=y+elnxy2

Dabei soll y * eine nicht konvergierende, aber optimistische Antwort darstellen, die die Genauigkeit beibehält, wenn Sie zufällig einen genauen Anfangswert erraten (in der Quadratwurzel y 2 = x ist es y * = x / y).

xxmin=(1e)1e

y0=ln(x)+1

Also dachte ich mir, dass es vielleicht eine besser konvergierende Lösung gibt:

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

Dann habe ich etwas Interessantes gefunden.

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

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

y[n+1]=g(x,y[n])+ln(y[n])×y[n]1+ln(y[n])=eln(x)y[n]+ln(y[n])×y[n]1+ln(y[n])

y=1+ln(x)

(Jemand könnte wahrscheinlich zeigen, dass dies in irgendeiner Weise Newton-Raphson entspricht, aber ich denke, es übersteigt meine Möglichkeiten.)

Jason S
quelle