stirling2#
- scipy.special.stirling2(N, K, *, точный=False)[источник]#
Генерация числа(ел) Стирлинга второго рода.
Числа Стирлинга второго рода подсчитывают количество способов разбить множество из N элементов на K непустых подмножеств.
Значения, возвращаемые этой функцией, вычисляются с использованием динамического программирования, которое избегает избыточных вычислений между подзадачами в решении. Для ввода типа массива эта реализация также избегает избыточных вычислений между различными расчётами чисел Стирлинга.
Числа иногда обозначаются
\[{N \brace{K}}\]см. [1] подробности. Это часто выражается вербально как “N подмножество K”.
- Параметры:
- Nint, ndarray
Количество элементов.
- Kint, ndarray
Количество непустых взятых подмножеств.
- точныйbool, необязательно
Использует динамическое программирование (DP) с числами с плавающей запятой для малых массивов и аппроксимацию второго порядка Темме для больших элементов N и K который позволяет обменивать скорость на точность. См. [2] для описания. Аппроксимация Темме используется для значений
n>50Максимальная ошибка от ДП имеет максимальную относительную ошибку4.5*10^-16дляn<=50и максимальная ошибка из аппроксимации Темме имеет максимальную относительную ошибку5*10^-5для51 <= n < 70и9*10^-6для70 <= n < 101. Обратите внимание, что эти максимальные относительные ошибки будут уменьшаться дальше по мере n увеличивается.
- Возвращает:
- valint, float, ndarray
Количество разделов.
Смотрите также
combКоличество сочетаний из N по k.
Примечания
Если N < 0 или K < 0, то возвращается 0.
Если K > N, то возвращается 0.
Тип вывода всегда будет int или ndarray из object. Вход должен содержать либо numpy, либо python целые числа, иначе вызывается TypeError.
Ссылки
[1]R. L. Graham, D. E. Knuth и O. Patashnik, «Конкретная математика: Основа информатики», Addison-Wesley Publishing Company, Бостон, 1989. Глава 6, страница 258.
[2]Temme, Nico M. “Asymptotic estimates of Stirling numbers.” Studies in Applied Mathematics 89.3 (1993): 233-243.
Примеры
>>> import numpy as np >>> from scipy.special import stirling2 >>> k = np.array([3, -1, 3]) >>> n = np.array([10, 10, 9]) >>> stirling2(n, k) array([9330.0, 0.0, 3025.0])