罗斯—霍尔维茨判断系统稳定性
Description
信号与系统里面对系统的稳定性进行判断
如图,为各个系数的计算方式
然而在计算高阶系统时过于复杂,因此编写了一个软件计算高阶系统的稳定。
定理
罗斯判据
系统稳定的充分必要条件
1、系统闭环特征方程各项系数均为正,也就是a(0),a(1),a(2)…全部为正。
2、系统的罗斯阵列表的第一列各元素均为正。
Input
从高阶到低阶,从左向右输入系数
比如s^4 +s^3 +2s^2+2s+3=0
输入1 1 2 2 3 即可
Output
得到计算的罗斯阵列表
Sample
代码
from sympy import *
import tkinter
app = tkinter.Tk()
app.title("系统稳定性输入判断")
app.geometry("600x600")
tkinter.Label(app,text="系统特征方程(输入系数 空格分开):").grid(row=0,column=0)
entry = tkinter.Entry(app)
entry.grid(row=1,column=0,padx=80,pady=10)
# 美化输入框
entry['background'] = 'white' # 设置背景色为白色
entry['foreground'] = 'black' # 设置文本颜色为黑色
entry['font'] = ('Arial', 14) # 设置字体为Arial,字号为14
entry['borderwidth'] = 1 # 设置边框宽度为5像素
entry['relief'] = 'solid' # 设置边框样式为实线
def cul():
ε = symbols("ε")
flag = False
input_list = list(map(int,entry.get().split(" ")))
length =len(input_list)
if length%2!=0:
input_list.append(0)
s = dict()
s[length] = input_list[::2]
s[length-1] = input_list[1::2]
if length==3 or length==4:
s[length].append(0)
s[length-1].append(0)
for i in range(length-2,-1,-1):
s[i] = []
list_length = max(len(s[i+1])-1,2)
for l in range(list_length):
x = ((s[i + 1][0]) * Rational(s[i + 2][l + 1]) - Rational(s[i + 1][l + 1]) * (s[i + 2][0])) / ((s[i + 1][0]))
if x==0 and l==0:
s[i].append(ε)
flag = true
else:
s[i].append(x)
if list_length==2:
s[i].append(0)
string = ""
for i in range(length,0,-1):
for v in s[i]:
string +=str(v)+" "
string+="\n"
if flag:
string += "若有ε表示无穷小量"
output_label.config(text=string)
tkinter.Label(app,text="仅限三阶以上系统使用:(点击右边按钮计算)").grid(row=2,column=0)
tkinter.Button(app,text="罗斯-霍维茨阵列计算",width=20,command=cul)\
.grid(row=3,column=0)
# 创建标签用于显示输出
output_label = tkinter.Label(app, text="输出:",width=50,height=30,anchor=tkinter.NW)
output_label.grid(row=4, padx=10, pady=10)
output_label['background'] = 'white' # 设置背景色为白色
output_label['foreground'] = 'black' # 设置文本颜色为黑色
output_label['font'] = ('Arial', 14) # 设置字体为Arial,字号为14
output_label['borderwidth'] = 1 # 设置边框宽度为5像素
output_label['relief'] = 'solid' # 设置边框样式为实线
app.mainloop()
思路
直接看代码,就sympy和tkinter库的复合使用
由于时间仓促,简单的编写了程序,如果有结果错误或者无法计算
敬请见谅
打包成exe
导入pyinstaller库,激活你的虚拟环境,直接使用Pyinstaller -F system.py,自动生成到你的当前文件夹下
下载exe
罗斯应用下载(点击免费下载)
点击exe即可运行