factorialk#
- scipy.special.factorialk(n, k, exact=False, extend='zero')[Quelle]#
Multifaktoriell von n der Ordnung k, n(!!…!).
Dies ist das Multifaktoriell von n unter Auslassung von k Werten. Zum Beispiel:
factorialk(17, 4) = 17!!!! = 17 * 13 * 9 * 5 * 1
Insbesondere gilt für jede ganze Zahl
n:factorialk(n, 1) = factorial(n)
factorialk(n, 2) = factorial2(n)
- Parameter:
- nint oder float oder complex (oder array_like davon)
Eingabewerte für das Multifaktoriell. Nicht-ganzzahlige Werte erfordern
extend='complex'. Standardmäßig ist der Rückgabewert fürn < 00.- nint oder float oder complex (oder array_like davon)
Ordnung des Multifaktoriells. Nicht-ganzzahlige Werte erfordern
extend='complex'.- exactbool, optional
Wenn
exactauf True gesetzt ist, wird die Antwort exakt mit ganzzahliger Arithmetik berechnet, andernfalls wird eine Approximation verwendet (schneller, liefert aber Floats statt ganzer Zahlen). Standard ist False.- extendstring, optional
Einer von
'zero'oder'complex'; dies bestimmt, wie Werten<0behandelt werden – standardmäßig sind sie 0, aber es ist möglich, die komplexe Erweiterung des Multifaktoriells zu nutzen. Dies ermöglicht die Übergabe komplexer Werte, nicht nur ann, sondern auch ank.Warnung
Die Verwendung der
'complex'-Erweiterung ändert auch die Werte des Multifaktoriells bei ganzen Zahlenn != 1 (mod k)um einen Faktor, der sowohl vonkals auch vonn % kabhängt, siehe unten oder [1].
- Rückgabe:
- nfint oder float oder complex oder ndarray
Multifaktoriell (Ordnung
k) vonn, als ganze Zahl, Float oder komplex (abhängig vonexactundextend). Array-Eingaben werden als Arrays zurückgegeben.
Hinweise
Obwohl weniger geradlinig als beim Doppelfaktoriell, ist es möglich, eine allgemeine Näherungsformel für n!(k) zu berechnen, indem man
nfür einen gegebenen Restr < kstudiert (alson = m * k + rbzw.r = n % k), die zu etwas zusammengefügt werden kann, das für alle ganzzahligen Werten >= 0&k > 0gültig ist.n!(k) = k ** ((n - r)/k) * gamma(n/k + 1) / gamma(r/k + 1) * max(r, 1)
Dies ist die Grundlage der Näherung, wenn
exact=False.Grundsätzlich würde jede feste Wahl von
r(unter Ignorierung seiner Beziehungr = n%kzun) eine geeignete analytische Fortsetzung von ganzzahligennzu komplexenzliefern (die nicht nur die Funktionsgleichung erfüllt, sondern auch logarithmisch konvex ist, vgl. Bohr-Mollerup-Theorem) – tatsächlich ändert die obige Wahl vonrdie Funktion nur um einen konstanten Faktor. Die endgültige Bedingung, die die kanonische Fortsetzung bestimmt, istf(1) = 1, wasr = 1erzwingt (siehe auch [1]).z!(k) = k ** ((z - 1)/k) * gamma(z/k + 1) / gamma(1/k + 1)
Referenzen
[1]Komplexe Erweiterung des Multifaktoriells https://en.wikipedia.org/wiki/Double_factorial#Alternative_extension_of_the_multifactorial
Beispiele
>>> from scipy.special import factorialk >>> factorialk(5, k=1, exact=True) 120 >>> factorialk(5, k=3, exact=True) 10 >>> factorialk([5, 7, 9], k=3, exact=True) array([ 10, 28, 162]) >>> factorialk([5, 7, 9], k=3, exact=False) array([ 10., 28., 162.])