scipy.signal.

unique_roots#

scipy.signal.unique_roots(p, tol=0.001, rtype='min')[источник]#

Определение уникальных корней и их кратностей из списка корней.

Параметры:
parray_like

Список корней.

tolfloat, опционально

Допуск для того, чтобы два корня считались равными с точки зрения расстояния между ними. По умолчанию 1e-3. См. примечания о деталях группировки корней.

rtype{‘max’, ‘maximum’, ‘min’, ‘minimum’, ‘avg’, ‘mean’}, опционально

Как определить возвращаемый корень, если несколько корней находятся в пределах tol друг друга.

  • ‘max’, ‘maximum’: выбрать максимальный из этих корней

  • ‘min’, ‘minimum’: выбрать минимальный из этих корней

  • ‘avg’, ‘mean’: взять среднее этих корней

При нахождении минимума или максимума среди комплексных корней они сравниваются сначала по действительной части, а затем по мнимой части.

Возвращает:
уникальныйndarray

Список уникальных корней.

кратностьndarray

Кратность каждого корня.

Примечания

Если у нас есть 3 корня a, b и c, так что a близко к b и b близко к c (расстояние меньше, чем tol), то это не обязательно означает, что a близко к c. Это означает, что группировка корней не уникальна. В этой функции мы используем «жадную» группировку, проходя по корням в порядке, в котором они даны во входных данных p.

Эта служебная функция не специфична для корней, но может использоваться для любой последовательности значений, для которой необходимо определить уникальность и кратность. Для более общей процедуры см. numpy.unique.

Примеры

>>> from scipy import signal
>>> vals = [0, 1.3, 1.31, 2.8, 1.25, 2.2, 10.3]
>>> uniq, mult = signal.unique_roots(vals, tol=2e-2, rtype='avg')

Проверьте, какие корни имеют кратность больше 1:

>>> uniq[mult > 1]
array([ 1.305])