scipy.signal.

unique_roots#

scipy.signal.unique_roots(p, tol=0.001, rtype='min')[源代码]#

从根列表确定唯一根及其重数。

参数:
p类数组

根的列表。

tol浮点数,可选

两个根被认为是相等的容差,以它们之间的距离来衡量。默认值为 1e-3。有关根分组的详细信息,请参阅注释。

rtype{‘max’, ‘maximum’, ‘min’, ‘minimum’, ‘avg’, ‘mean’}, 可选

如果多个根在彼此的 tol 范围内,如何确定返回的根。

  • ‘max’, ‘maximum’: 选择这些根中的最大值

  • ‘min’, ‘minimum’: 选择这些根中的最小值

  • ‘avg’, ‘mean’: 取这些根的平均值

当在复数根中寻找最小值或最大值时,它们首先按实部进行比较,然后按虚部进行比较。

返回:
uniquendarray

唯一根的列表。

multiplicityndarray

每个根的重数。

注释

如果我们有 3 个根 abc,使得 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])