unique_roots#
- scipy.signal.unique_roots(p, tol=0.001, rtype='min')[source]#
- Determine unique roots and their multiplicities from a list of roots. - Parameters:
- parray_like
- The list of roots. 
- tolfloat, optional
- The tolerance for two roots to be considered equal in terms of the distance between them. Default is 1e-3. Refer to Notes about the details on roots grouping. 
- rtype{‘max’, ‘maximum’, ‘min’, ‘minimum’, ‘avg’, ‘mean’}, optional
- How to determine the returned root if multiple roots are within tol of each other. - ‘max’, ‘maximum’: pick the maximum of those roots 
- ‘min’, ‘minimum’: pick the minimum of those roots 
- ‘avg’, ‘mean’: take the average of those roots 
 - When finding minimum or maximum among complex roots they are compared first by the real part and then by the imaginary part. 
 
- Returns:
- uniquendarray
- The list of unique roots. 
- multiplicityndarray
- The multiplicity of each root. 
 
 - Notes - If we have 3 roots - a,- band- c, such that- ais close to- band- bis close to- c(distance is less than tol), then it doesn’t necessarily mean that- ais close to- c. It means that roots grouping is not unique. In this function we use “greedy” grouping going through the roots in the order they are given in the input p.- This utility function is not specific to roots but can be used for any sequence of values for which uniqueness and multiplicity has to be determined. For a more general routine, see - numpy.unique.- Examples - >>> 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') - Check which roots have multiplicity larger than 1: - >>> uniq[mult > 1] array([ 1.305])