Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Result of the damp function for discrete time systems #646

Closed
@vincentchoqueuse

Description

@vincentchoqueuse

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 dampmethod 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
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions