factorialk#
- scipy.special.factorialk(n, k, точный=False, расширить='zero')[источник]#
Мультифакториал n порядка k, n(!!…!).
Это мультифакториал n с пропуском k значений. Например,
factorialk(17, 4) = 17!!!! = 17 * 13 * 9 * 5 * 1
В частности, для любого целого числа
n, у нас естьfactorialk(n, 1) = factorial(n)
factorialk(n, 2) = factorial2(n)
- Параметры:
- nint или float или complex (или array_like таковых)
Входные значения для мультифакториала. Нецелые значения требуют
extend='complex'. По умолчанию возвращаемое значение дляn < 0равен 0.- nint или float или complex (или array_like таковых)
Порядок мультифакториала. Нецелые значения требуют
extend='complex'.- точныйbool, необязательно
Если
exactустановлено в True, вычисляет ответ точно с использованием целочисленной арифметики, иначе использует приближение (быстрее, но даёт числа с плавающей точкой вместо целых). По умолчанию False.- расширитьstring, optional
Один из
'zero'или'complex'; это определяет, как значенияn<0обрабатываются - по умолчанию они равны 0, но можно выбрать комплексное расширение мультифакториала. Это позволяет передавать комплексные значения, не только вnно также и дляk.Предупреждение
Используя
'complex'расширение также изменяет значения мультифакториала на целых числахn != 1 (mod k)на коэффициент, зависящий от обоихkиn % k, см. ниже или [1].
- Возвращает:
- nfint или float или complex или ndarray
Мультифакториал (порядок
k) изn, как целое, вещественное или комплексное (в зависимости отexactиextend). Массивные входные данные возвращаются как массивы.
Примечания
Хотя это менее прямолинейно, чем для двойного факториала, можно вычислить общую аппроксимационную формулу n!(k), изучая
nдля заданного остаткаr < k(таким образомn = m * k + r, соответственно.r = n % k), которые можно объединить во что-то действительное для всех целых значенийn >= 0&k > 0:n!(k) = k ** ((n - r)/k) * gamma(n/k + 1) / gamma(r/k + 1) * max(r, 1)
Это основа приближения, когда
exact=False.В принципе, любой фиксированный выбор
r(игнорируя его отношениеr = n%kton) обеспечило бы подходящее аналитическое продолжение с целыхnв комплексноеz(не только удовлетворяющее функциональному уравнению, но и логарифмически выпуклое, см. теорему Бора-Моллерупа) – фактически, выборrвыше изменяет функцию только на постоянный множитель. Окончательное ограничение, определяющее каноническое продолжение, этоf(1) = 1, что заставляетr = 1(см. также [1]).:z!(k) = k ** ((z - 1)/k) * gamma(z/k + 1) / gamma(1/k + 1)
Ссылки
[1]Комплексное расширение для мультифакториала https://en.wikipedia.org/wiki/Double_factorial#Alternative_extension_of_the_multifactorial
Примеры
>>> 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.])