Skip to content

Nyquist plot with imaginary poles, semi-circles only working after 'trick' #613

Description

@kevindekemele

I'm plotting the Nyquist diagram of a transfer function which has poles on the imaginary axis:


import control
import matplotlib.pyplot as plt
import numpy as np

K = 1

Gp =  control.tf([1], [1,1,0,0,0]) 
Gc = control.tf([K], [1]) 


control.nyquist_plot(Gp*Gc,plot=True,omega_num=1000)
plt.show()

Which results in the following incorrect plot, that does not show infinte semicircles, but something incorrect:
image

Also using indent_direction and indent_radius did not solve this.
The trick I found that makes it work is if I add omega_limits=[0.001,10000] to nyquist_plot:

image

Can you please fix such that the incorrect 'line' does not appear?

Activity

  1. bnavigator commented on Apr 24, 2021

    @bnavigator
    Contributor

    Yes, the algorithm to determine the default omega vector for the system starts with a lower frequency of 0.1, because the lowest non-zero pole of the system is at -1.

    # This code looks at the poles and zeros of all of the systems that
    # we are plotting and sets the frequency range to be one decade above
    # and below the min and max feature frequencies, rounded to the nearest
    # integer. It excludes poles and zeros at the origin. If no features
    # are found, it turns logspace(-1, 1)

    The "trick" to manually define the omega limits is the correct way to override the default omega vector determination.

  2. kevindekemele commented on Apr 25, 2021

    @kevindekemele
    Author

    Perhaps if there is a pole at the origin, the lower limit of the omega vector should be below the indent_radius ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions