欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python工程控制论画图示李亚普洛夫稳定性

程序员文章站 2022-06-15 18:23:34
系统状态轨迹图,图一是不稳定系统,图二是稳定系统。python代码from scipy.integrate import odeintfrom pylab import *def deriv(y,t): # 返回值是y和y的导数组成的数组 # return array([y[0]+3*y[1], -5*y[0]+2*y[1]]) # return array([4*y[0] - 2 * y[1], y[0] - 3 * y[1]]) # ret....

系统状态轨迹图,图一是不稳定系统,图二是稳定系统。

python工程控制论画图示李亚普洛夫稳定性

python工程控制论画图示李亚普洛夫稳定性

python代码

from scipy.integrate import odeint
from pylab import *

def deriv(y,t):        # 返回值是y和y的导数组成的数组
    # return array([y[0]+3*y[1], -5*y[0]+2*y[1]])
    # return array([4*y[0] - 2 * y[1], y[0] - 3 * y[1]])
    # return array([y[1], -y[0] - y[1]])
    return array([y[1]+y[0]*(2-y[0]**2-y[1]**2),-y[0]+y[1]*(2-y[0]**2-y[1]**2)])

time = linspace(0.0,50.0,1000)

figure()
for i in range(20):
    theta = i * pi / 10
    yinit = array([3*cos(theta), 3*sin(theta)])
    y = odeint(deriv,yinit,time)
    plot(y[:, 0], y[:, 1], linewidth=0.3)
    # quiver(y[:,0],y[:,1],gradient(y[:,0]),gradient(y[:,1]))

for i in range(20):
    theta = i * pi / 10
    yinit = array([0.03*cos(theta), 3*sin(theta)])
    y = odeint(deriv,yinit,time)
    plot(y[:, 0], y[:, 1], linewidth=0.3)
    # quiver(y[:,0],y[:,1],gradient(y[:,0]),gradient(y[:,1]))

show()

总结

以前做控制理论仿真,首选都是matlab,现在工作用python,发现python真是无所不能,科学计算的能力也不遑多让matlab。不过就事论事,matlab轨迹图画的还是比python漂亮一点。

本文地址:https://blog.csdn.net/u012410628/article/details/108839301

相关标签: 控制理论 python