@@ -172,7 +172,7 @@ def _default_gains(num, den, xlim, ylim):
172172 mymat = _RLSortRoots (mymat )
173173 distance_points = np .abs (np .diff (mymat , axis = 0 ))
174174 indexes_too_far = np .where (distance_points > tolerance )
175- new_gains = np .hstack ((np .logspace ( np . log10 ( kvect [- 1 ]), np . log10 ( kvect [- 1 ]* 200 ) , 10 )))
175+ new_gains = np .hstack ((np .linspace ( kvect [- 1 ], kvect [- 1 ]* 200 , 10 )))
176176 new_points = _RLFindRoots (num , den , new_gains [1 :10 ])
177177 kvect = np .append (kvect , new_gains [1 :10 ])
178178 mymat = np .concatenate ((mymat , new_points ), axis = 0 )
@@ -192,6 +192,9 @@ def _break_points(num, den):
192192 idx = k_break >= 0 # only positives gains
193193 k_break = k_break [idx ]
194194 real_break_pts = real_break_pts [idx ]
195+ if len (k_break ) == 0 :
196+ k_break = [0 ]
197+ real_break_pts = den .roots
195198 return k_break , real_break_pts
196199
197200
@@ -219,6 +222,8 @@ def _k_max(num, den, real_break_points, k_break_points):
219222 asymp_angles = (2 * np .arange (0 , asymp_number )- 1 ) * np .pi / asymp_number
220223 farthest_points = asymp_center + distance_max * np .exp (asymp_angles * 1j ) # farthest points over asymptotes
221224 kmax_asymp = - den (farthest_points ) / num (farthest_points )
225+ if kmax_asymp == 0 :
226+ kmax_asymp = [den .coeffs [0 ]/ num .coeffs [0 ]* 3 ]
222227 else :
223228 farthest_points = 2 * np .max (np .abs (important_points ))
224229 kmax_asymp = - den (farthest_points ) / num (farthest_points )
0 commit comments