罗斯—霍尔维茨判断系统稳定性

本文介绍了一个利用Python编程实现的罗斯-霍维茨判据软件,用于计算高阶系统稳定性,用户通过输入特征方程系数,可得出罗斯阵列表。该程序结合了Sympy和Tkinter库,简化了高阶系统稳定性分析过程。
摘要由CSDN通过智能技术生成

罗斯—霍尔维茨判断系统稳定性

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即可运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值