gamma-function

___ answer15455055 ___

Als eine Alternative zu den anderen Antworten hier, hier ist eine viel einfachere Approximation für die Gamma-Funktion, die 2007 von Gergő Nemes vorgeschlagen wurde. (Siehe die Wikipedia-Seite auf Stirling-Annäherung ).

Dies kann direkt in JavaScript in einer einzigen Zeile implementiert werden:

%Vor%

Sie können dies in Aktion auf jsFiddle sehen.

Dies ist bis zu 8 Ziffern für z & gt; 8, aber es ist immer noch genau auf eine Handvoll Ziffern für kleinere z . Es ist nicht ganz so genau wie die Lanczos-Approximation, aber es ist einfacher und auch etwas schneller .

Beachten Sie, dass die Gamma-Funktion und die Fakultät-Funktion leicht unterschiedlich sind. Die Fakultät Funktion kann in Bezug auf die Gamma-Funktion definiert werden:

%Vor%     
___ answer15454784 ___

Ich könnte eine bestehende Lösung gefunden haben ... Es ist eine Implementierung der Lanczos-Methode, ich fand sie in der schwedischen Wikipedia ( Ссылка ). Es wurde in Python geschrieben und sagt bis zu 15 Dezimalstellen korrekt aus. Ich portierte es auf js, kreuzte einige zufällige Werte gegen ( Ссылка ).

Ссылка

%Vor%

(und natürlich unterstützt es keine imaginären Zahlen, da js nicht)

    
___ answer15454866 ___

Dies ist kein triviales Problem. Für die Gammafunktion gibt es keine einfache Formel in geschlossener Form. Es gibt jedoch einige numerische Näherungswerte, die Ihren Anforderungen entsprechen sollten.

Die folgende Antwort verwendet eine Technik namens Lanczos-Approximation . Die Formel lautet wie folgt:

wobei g eine willkürlich gewählte Konstante ist, die steuert, wie genau die Approximation sein wird. Für größere g ist die Approximation genauer. A g (z) ist so definiert:

Der schwierigste Teil ist das Finden von A g (z), seit p n wird auch mit einer komplizierten Formel definiert, die von g abhängt .

Ich kann den folgenden Code nicht zu sehr anerkennen, da ich gerade einen Port des Python-Programms auf der Wikipedia-Seite schreibe.

%Vor%

und natürlich nach Definition der Gamma-Funktion:

%Vor%

Sie können dies in Aktion auf jsFiddle sehen.

    
___ qstnhdr ___ Wie erstellt man eine Funktion, die die Fakultät für Zahlen mit Dezimalzahlen berechnet? ___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ qstntxt ___

Wie kann ich eine Funktion erstellen, die die faktorielle Funktion (oder die Gammafunktion ) von Dezimalzahlen in JavaScript berechnet? Zum Beispiel, wie könnte ich %code% berechnen?

    
___ tag123math ___ Mathematik ist das Studium von Quantität, Struktur, Raum und Veränderung. Alle mathematischen Fragen auf dieser Website sollten programmbezogen sein. ___ answer32532131 ___

Nur zur Vervollständigung von @apelsinapa, um die Berechnung für eine ganze Zahl zu korrigieren (wir haben bei der Eingabe einer ganzen Zahl keine ganzzahlige Lösung erhalten).

@ apelsinapas großartige Lösung:

%Vor%

Und um eine korrekte Antwort für Integer zu erhalten:

%Vor%     
___ answer27760174 ___

Hier ist eine Version, die ich vor ein paar Jahren geschrieben habe ... ein bisschen chaotisch, aber getestet:)

%Vor%

Die Funktionen gamma und gammaLn sind dann:

%Vor%

: -)

    
___ tag123gammafunktion ___ Alles im Zusammenhang mit der mathematischen Gammafunktion, auch bekannt als generalisierte faktorielle Funktion. ___ answer41881766 ___

Wenn Sie nur nach der Funktion suchen, um faktorielle Zahlen von reellen Zahlen zu berechnen, brauchen Sie nur diesen Code aus der Lanczos-Näherung:

%Vor%

Funktioniert hervorragend für negative Zahlen zusätzlich zu Dezimalzahlen.

    
___ tag123factorial ___ In der Mathematik ist die Fakultät einer nicht negativen ganzen Zahl n, die mit n bezeichnet wird, das Produkt aller positiven ganzen Zahlen kleiner oder gleich n. ___
6
Antworten

Wie erstellt man eine Funktion, die die Fakultät für Zahlen mit Dezimalzahlen berechnet?

Wie kann ich eine Funktion erstellen, die die faktorielle Funktion (oder die Gammafunktion ) von Dezimalzahlen in JavaScript berechnet? Zum Beispiel, wie könnte ich 2.33! berechnen?     
16.03.2013, 20:10