scipy.special.

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])