• 首页

  • 动态

  • 随笔

  • 学习

  • 留言板

  • 文章归档

  • 友情链接

  • 关于页面
S w e e t 的 笔 记
S w e e t 的 笔 记

SuSweet

这个人有点懒,他是个学生,他只会摸鱼,并且从来不写个性签名。

05月
19
默认分类
电控
学习感悟
控制

线性时不变系统与基础解集和基础解阵其状态转移阵的证明

发表于 2022-05-19 • 字数统计 1803 • 被 1,205 人看爆

理论计算

对于一般的线性是不变系统,可以用状态空间方程表达为:
image-1652959100493
因为只考虑零输入状态响应,因此,上式可以简化为:
image-1652959138449
选状态空间中一组基底{\(x_1,x_2,⋯,x_n\)},则系统输入可以表达为\(x(t_0 )=α_1 x_1+α_2 x_2+⋯+α_n x_n\)。设对于任意\(t\)时刻,分别输入{\(x_1,x_2,⋯,x_n\)},其输出为{\(x_1 (t),x_2 (t),⋯,x_n (t)\)}。输出的{\(x_1 (t),x_2 (t),⋯,x_n (t)\)}依然线性无关。因此,系统输出可以由{\(x_1 (t),x_2 (t),⋯,x_n (t)\)}线性表达。由线性系统的叠加性,可以得到:
image-1652959448248
记image-1652959555415,则x(t)表示为:
image-1652959578309
由此可以看出,线性时不变系统的在t时刻的响应,对应着基底在t时刻的响应的线性组合,组合系数有初始状态与{\(x_1,x_2,⋯,x_n\)}的关系一致。
设该系统的状态转移方阵为
image-1652959613995
其中\(Φ(t,t_0 )=[φ_1 (t,t_0 ),φ_2 (t,t_0 ),⋯,φ_n (t,t_0 )]\),\(φ_i (t,t_0 )\)为原方程的解,且其输入为\((0,⋯,1,⋯,0)\)(第i个元素为1)。
因此,最终可以得到:
image-1652959717984
对于系统:
image-1652959740495
在\(X ̇(t)=AX(t)\)两边同时乘\(Φ(t_0,t)\),有:
image-1652959780825
image-1652959798950
对等式从\(t_0\)到\(t\)积分,有
image-1652959965656
所以,最终可得:
image-1652959992652
而根据定义,有image-1652960029148,image-1652960042051为系统的解,因此有:
image-1652960054679
两边同时左乘一个\(e^(-At)\)有:
image-1652960071926
可得:
image-1652960083631
又因为该系统为线性是不变系统,因此,有性质:
image-1652960096796
所以,可以得到:
image-1652960105788
由此,可以将上式从t_0到t积分,有:
image-1652960113588
所以,最终可以得到:
image-1652960140388

系统仿真验证

如图所示的是一个常见的弹簧阻尼系统,在弹簧失效长度内以及阻尼器运动限位范围内,该系统可以看作是一个线性时不变系统,且因为系统的输出只取决于过去与当前输入,跟将来的输入无关,因此该系统为“因果”系统。其中,取m=1kg,C=5N·s/m,K=6N/m。取物体受到的拉力F为输入,物体位移x为系统输出。
image-1652960176879
图1 线性阻尼系统示意图
在MATLAB的Simulink中,建立物理模型如下图2所示,其中包含弹簧元件、阻尼器元件以及质量元件等。仿真参数如表1所示。
image-1652960188103
图2 系统在Simulink中的物理模型

image-1652960305682
由动力学相关的公式,可以得到系统的微分方程为:
image-1652960328970
\(将物体移动距离x作为x_1,物体的移动速度作为x_2,可以有:\)
image-1652960388854
因为需要验证的系统为零输入响应,所以上式又简化为:
image-1652960407210
所以,系统矩阵A为:
image-1652960417770
所以:
image-1652960433338
得出状态矩阵image-1652960445005的特征根与特征向量为:
image-1652960475408
所以有:
image-1652960487230
所以:
image-1652960500604
因此将状态方程化为约当标准型:
image-1652960521137
所以系统零输入响应为:
image-1652960531464
同样的,在\(t_0时刻的初始状态,有:\)
image-1652960551704
所以,有:
image-1652960560886
当初始条件为image-1652960572630时,计算可得输出响应应为:image-1652960587780。如图3所示:
image-1652960602169
(a)输出的理论值
image-1652960609858
(b)输出的仿真计算值
image-1652960667347
© 各个状态的变化
图3 初始状态为\(X=[1 0]^T\)时的输出
当初始条件为image-1652960734969时,计算可得系统的响应为:image-1652960748586,如图4所示:
image-1652960767073
(a)输出的理论值
image-1652960770997
(b)输出的仿真计算值
image-1652960778867
© 各个状态的变化
图4 初始状态为\(X=[0 1]^T\)时的输出

而系统在初始条件为image-1652960869556时,可以得到其输出响应与单独输入的关系如图5所示:
image-1652960881340
(a)各个状态的变化
image-1652960885714
(b)系统的总输出
图5 初始状态为\(X=[1 1]^T\)时的输出及分别输入的比较

因此,对于状态空间中一组基底{\(x_1,x_2,⋯,x_n\)},则系统输入可以表达为\(x(t_0 )=α_1 x_1+α_2 x_2+⋯+α_n x_n\)。在任意t时刻,分别输入{\(x_1,x_2,⋯,x_n\)},其输出为{\(x_1 (t),x_2 (t),⋯,x_n (t)\)}。输出的{\(x_1 (t),x_2 (t),⋯,x_n (t)\)}依然线性无关。系统的输出对应着基底在t时刻的响应的线性组合,组合系数有初始状态与{\(x_1,x_2,⋯,x_n\)}的关系一致。

使用状态转移阵\(e^{A(t-t_0 )}\) 进行验证。
令初始状态为image-1652960993757,验证其在不同时刻的响应与计算值比较。
image-1652961004774
计算可以得到在t=0.5时,有
image-1652961015921
使用simulink仿真结果如下图6所示:
image-1652961022096
图6 系统在t=0.5时的状态
结果与计算值一致。
计算可以得到在t=1时,有
image-1652961032889
使用simulink仿真结果如下图7所示:
image-1652961041409
图7 系统在t=1时的状态
以上结果可以看出,状态转移阵\(e^{A(t-t_0 )}\) 计算的结果与仿真一致。验证了\(e^{A(t-t_0 )}\) 确实是它的状态转移阵。

分享到:
VSCode上安装PlatformIO踩坑
Halo数学公式显示支持
  • 文章目录
  • 站点概览
SuSweet

可爱的 SuSweet

你能抓到我么?

QQ Email RSS
看爆 Top5
  • 代码里中文注释变成锟斤拷啦 6,079次看爆
  • Code Composer Studio (CCS)报错program will not fit into available memory (280049C)(#10099-D) 3,780次看爆
  • 解决python中cv2无法自动补全的方法 3,604次看爆
  • CCS中IQmath库报错(_IQ24div(long, long)没有定义) 3,409次看爆
  • 使用GM6020电机参数的Simulink电机控制仿真记录 3,327次看爆

很高兴在这里遇到您!如果您遇到什么问题,或者想留下您的链接,欢迎->网站问题反馈

当然,您也可以通过电子邮件联系我。

Copyright © 2025 SuSweet 粤ICP备2022045669号

由 Halo 强力驱动 · Theme by Sagiri · 站点地图