Closed
Description
Hi,
This is my first contribution on GitHub ;)
Problem
The method damp()
seems to return a wrong result for discrete systems with negative poles
import control as ctl
H = ctl.tf([1],[1,0.2],1)
H.damp()
Result : RuntimeWarning: invalid value encountered in log
Investigation
The problem seems to come from the type of the poles
variable in the damp
method of the LTI object
if isdtime(self, strict=True):
splane_poles = np.log(poles)/self.dt
else:
splane_poles = poles
wn = absolute(splane_poles)
Z = -real(splane_poles)/wn
return wn, Z, poles
Solution
The poles
variable must be cast to a numpy complex type as follows
if isdtime(self, strict=True)
splane_poles = np.log(poles.astype(complex))/self.dt
...