

Hi everyone,
I am a Controls Engineer who used to use Matlab quite frequently at the University to analyze, among other things, system's stability. I am now reading again some theoretical books on control theory to refresh my mind again with some of the theories and concepts I haven't used for a while.
But since I became a python programmer and enthusiast, I am doing this review while using SciPy to program some tests and examples. And I am really enjoying using SciPy to code some of my scripts. Although I just started using it, I can't stress enough how much fun and how useful the scipy.signal package is.
But, during my theory review I came upon the Root Locus Analysis and, to my disappointment, I didn't find support for it on the scipy.signal package. Is anyone aware if there is someone working on implementing Root Locus analysis into the scipy.signal package?
I know that there is another python package called "control" which has support for many control analysis tools, including Root Locus analysis, but I would like to avoid installing yet another package into my python environment. Especially because installing the "control" python package isn't that straightforward and requires a bunch of other packages/libraries. Yours sincerely,
Fábio Thomaz Molinar
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser


Hi everyone,
I am a Controls Engineer who used to use Matlab quite frequently at the University to analyze, among other things, system's stability. I am now reading again some theoretical books on control theory to refresh my mind again with some of the theories and concepts I haven't used for a while.
But since I became a python programmer and enthusiast, I am doing this review while using SciPy to program some tests and examples. And I am really enjoying using SciPy to code some of my scripts. Although I just started using it, I can't stress enough how much fun and how useful the scipy.signal package is.
But, during my theory review I came upon the Root Locus Analysis and, to my disappointment, I didn't find support for it on the scipy.signal package. Is anyone aware if there is someone working on implementing Root Locus analysis into the scipy.signal package?
Not that I am aware of.
I know that there is another python package called "control" which has support for many control analysis tools, including Root Locus analysis, but I would like to avoid installing yet another package into my python environment. Especially because installing the "control" python package isn't that straightforward and requires a bunch of other packages/libraries.
pythoncontrol may be your best bet. If you're on Windows yes, the Slycot dependency will be very hard to install. On other platforms it should be easy, especially if you use conda (condaforge packages for macOS and Linux are available).
Cheers,
Ralf
Yours sincerely,
Fábio Thomaz Molinar
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser


slycot now builds on Windows using scikitbuild, so not as painful anymore. Binaries will eventually be on condaforge too.
Jason
Hi everyone,
I am a Controls Engineer who used to use Matlab quite frequently at the University to analyze, among other things, system's stability. I am now reading again some theoretical books on control theory to refresh my mind again with some of the theories and concepts I haven't used for a while.
But since I became a python programmer and enthusiast, I am doing this review while using SciPy to program some tests and examples. And I am really enjoying using SciPy to code some of my scripts. Although I just started using it, I can't stress enough how much fun and how useful the scipy.signal package is.
But, during my theory review I came upon the Root Locus Analysis and, to my disappointment, I didn't find support for it on the scipy.signal package. Is anyone aware if there is someone working on implementing Root Locus analysis into the scipy.signal package?
Not that I am aware of.
I know that there is another python package called "control" which has support for many control analysis tools, including Root Locus analysis, but I would like to avoid installing yet another package into my python environment. Especially because installing the "control" python package isn't that straightforward and requires a bunch of other packages/libraries.
pythoncontrol may be your best bet. If you're on Windows yes, the Slycot dependency will be very hard to install. On other platforms it should be easy, especially if you use conda (condaforge packages for macOS and Linux are available).
Cheers,
Ralf
Yours sincerely,
Fábio Thomaz Molinar
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser


Also of note for control design:
Neither solves the problem at hand, but broader awareness can only help.
Best Regards Joe
slycot now builds on Windows using scikitbuild, so not as painful anymore. Binaries will eventually be on condaforge too.
Jason
Hi everyone,
I am a Controls Engineer who used to use Matlab quite frequently at the University to analyze, among other things, system's stability. I am now reading again some theoretical books on control theory to refresh my mind again with some of the theories
and concepts I haven't used for a while.
But since I became a python programmer and enthusiast, I am doing this review while using SciPy to program some tests and examples. And I am really enjoying using SciPy to code some of my scripts. Although I just started using it, I can't stress
enough how much fun and how useful the scipy.signal package is.
But, during my theory review I came upon the Root Locus Analysis and, to my disappointment, I didn't find support for it on the scipy.signal package.
Is anyone aware if there is someone working on implementing
Root Locus analysis into the scipy.signal package?
Not that I am aware of.
I know that there is another python package called "control" which has support for many control analysis tools, including Root Locus analysis, but I would like to avoid installing yet another package into my python environment. Especially because
installing the "control" python package isn't that straightforward and requires a bunch of other packages/libraries.
pythoncontrol may be your best bet. If you're on Windows yes, the Slycot dependency will be very hard to install. On other platforms it should be easy, especially if you use conda (condaforge packages for macOS and Linux are available).
Cheers,
Ralf
Yours sincerely,
Fábio Thomaz Molinar
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser
_______________________________________________
SciPyUser mailing list
[hidden email]
https://urldefense.proofpoint.com/v2/url?u=https3A__mail.python.org_mailman_listinfo_scipy2Duser&d=DwICAg&c=3buyMx9JlH1z22L_G5pM28wz_Ru6WjhVHwovpeS0Gk&r=rEyLMZFJ7eh_1iNO7KnqQcXbAnZbNOjKNJqN1v2jbrM&m=TSDmw5C_pMHHU9XEr6WBjtatVCGV9jkt9tsMicXuEpo&s=33DJzkrwfGzpaW0uDpzZXxBUuaZGPrW8YtSyVdWZM&e=
Professor & Chair
~~~~~~~~~~~~~~~~~~~~~~~~
(+1) 9377755040
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser


I am the author of the first package that Joseph linked to (thank you for mentioning it). I don't know which version but it is now available in pythoncontrol package 0.8.1 I don't have Slycot and seemingly it is not needed for this functionality
import control as cnt G = cnt.rss(5) cnt.root_locus(Gc, Plot=True);
would give you a decent Root Locus plot (note the final semicolon). Some clickability is introduced but I didn't use it yet.
Having said that, here is some rant; I have actually thought about this for a while and decided that there is nothing that this analysis brings in and is an artifact of the past only used to pester students. What root locus analysis does is to find out when a particular gain value causes a SISO system to go unstable under static gain feedback. Kind of a routhhurwitz in a for loop. There can only be a single gain as a parameter and the system is strictly SISO. Hence the application scope is severely limited and cripples the curiosity of the interested students. Also it really doesn't give much of an insight. Instead consider the following homebaked plot inside an IPython notebook. I only spent about 15 minutes for this hence there is so much that can be polished but I hope it demonstrates the idea
%matplotlib inline import numpy as np import matplotlib.pyplot as plt from ipywidgets import interactive from ipywidgets import FloatSlider from IPython.display import display
# You don't really need harold for this, scipy.signal, pythoncontrol is also fine
# We just need two polynomials representing num and den
# For state models it is a bit more tedious but still simple
from harold import Transfer, haroldpolyadd G = Transfer([1, 2, 3, 1], [1, 1, 3, 5, 4])
def rlocus_demo(K=1): # polyadd is here only because it takes care of addition of different lengths
r = np.roots(haroldpolyadd(G.den[0], K*G.num[0])) print(r) # plt.scatter(roots.real, roots.imag) plt.xlim((r.real.min()1,r.real.max()+1)) plt.ylim((r.imag.min()1,r.imag.max()+1)) plt.scatter(r.real, r.imag) plt.ylabel('Imaginary') plt.xlabel('Real') plt.grid()
K_slider = FloatSlider(min=1, max=50, step=0.2, value=1) w=interactive(rlocus_demo,K=K_slider) display(w)
Paste it in a notebook cell and you have an interactive pzmap. Just by interacting with the slider we see things swap around from stable to unstable etc. and later towards the end suddenly you get a pair coinciding. Then you start to question things about why. You can take it from here to make other incredible things, adding more parameters with sliders, other plants, checking the effect of delays etc. Thus it is the concept of simultaneous pole motion and not the plot type itself that matters. Unfortunately this message is lost some time ago and we are stuck with plots of the 1950s (matlab has a big role in this unfortunately). Root locus curves were a big thing when we didn't have computing power at our disposal but hardly ever applies today. I guess it is not going away out of the curriculum anytime soon.
I'll add this to my todo list and ping when I add that. </rant>
Best, ilhan
On Fri, Mar 8, 2019 at 10:43 PM Slater, Joseph C. < [hidden email]> wrote:
Also of note for control design:
Neither solves the problem at hand, but broader awareness can only help.
Best Regards Joe
slycot now builds on Windows using scikitbuild, so not as painful anymore. Binaries will eventually be on condaforge too.
Jason
Hi everyone,
I am a Controls Engineer who used to use Matlab quite frequently at the University to analyze, among other things, system's stability. I am now reading again some theoretical books on control theory to refresh my mind again with some of the theories
and concepts I haven't used for a while.
But since I became a python programmer and enthusiast, I am doing this review while using SciPy to program some tests and examples. And I am really enjoying using SciPy to code some of my scripts. Although I just started using it, I can't stress
enough how much fun and how useful the scipy.signal package is.
But, during my theory review I came upon the Root Locus Analysis and, to my disappointment, I didn't find support for it on the scipy.signal package.
Is anyone aware if there is someone working on implementing
Root Locus analysis into the scipy.signal package?
Not that I am aware of.
I know that there is another python package called "control" which has support for many control analysis tools, including Root Locus analysis, but I would like to avoid installing yet another package into my python environment. Especially because
installing the "control" python package isn't that straightforward and requires a bunch of other packages/libraries.
pythoncontrol may be your best bet. If you're on Windows yes, the Slycot dependency will be very hard to install. On other platforms it should be easy, especially if you use conda (condaforge packages for macOS and Linux are available).
Cheers,
Ralf
Yours sincerely,
Fábio Thomaz Molinar
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser
_______________________________________________
SciPyUser mailing list
[hidden email]
https://urldefense.proofpoint.com/v2/url?u=https3A__mail.python.org_mailman_listinfo_scipy2Duser&d=DwICAg&c=3buyMx9JlH1z22L_G5pM28wz_Ru6WjhVHwovpeS0Gk&r=rEyLMZFJ7eh_1iNO7KnqQcXbAnZbNOjKNJqN1v2jbrM&m=TSDmw5C_pMHHU9XEr6WBjtatVCGV9jkt9tsMicXuEpo&s=33DJzkrwfGzpaW0uDpzZXxBUuaZGPrW8YtSyVdWZM&e=
Professor & Chair
~~~~~~~~~~~~~~~~~~~~~~~~
(+1) 9377755040
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser
_______________________________________________
SciPyUser mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/scipyuser

