Sympy传递函数转连续状态空间模型结果异常的技术咨询
SymPy控制模块传递函数转状态空间模型的符号转换问题
问题说明
我正在试用新版SymPy控制模块,对拉普拉斯传递函数转换为连续时间状态空间模型的符号计算结果存在疑问。
SymPy代码及输出
import sympy assert sympy.__version__ >= '1.13.0' from sympy.physics.control.lti import StateSpace, TransferFunction s, K, T1 = sympy.symbols('s, K, T1') G = TransferFunction(K, T1 * s + 1, s) print(G) Gss = G.rewrite(StateSpace) print(Gss)
输出:
TransferFunction(K, T1*s + 1, s) StateSpace(Matrix([[-1/T1]]), Matrix([[1]]), Matrix([[K]]), Matrix([[0]]))
对该模型仿真后发现,稳态增益比K高3倍。因此我认为C矩阵应为Matrix([[K/T1]])而非Matrix([[K]]),或对B矩阵进行类似调整。
Python Control库对比结果
使用Python Control库代入数值后,结果与我的预期一致:
import control as con K = 2 T1 = 3 G = con.tf(K, [T1, 1]) print(G) Gss = con.ss(G) print(Gss)
输出:
<TransferFunction>: sys[14] Inputs (1): ['u[0]'] Outputs (1): ['y[0]'] 2 ------- 3 s + 1 <StateSpace>: sys[14] Inputs (1): ['u[0]'] Outputs (1): ['y[0]'] States (1): ['x[0]'] A = [[-0.33333333]] B = [[1.]] C = [[0.66666667]] D = [[0.]]
内容的提问来源于stack exchange,提问作者Bill
相关产品推荐
相关产品推荐

