LQR线性二次型调节器3(Discrete-time system Linear-Quadratic Regulator design,离散系统分析及MATALB实例)

7 篇文章 1 订阅
2 篇文章 0 订阅


**注:**MATLAB中LQR函数有 连续离散两种,本篇文章继续前面分析的连续时间系统lqr()函数,分析 离散时间系统LQR()函数dlqr()
lqr算出来的 反馈矩阵K,和用 公式k=(BTPB+R)-1BTPA出来的反馈矩阵k是一样的,本文有详细分析过程。

一、 离散时间系统二次型优化:dlqr()函数

1.1 MATLAB函数形式

对于离散时间系统
在这里插入图片描述
反馈矩阵控制率u=-kx最小化二次型代价函数:
在这里插入图片描述
离散系统MATLAB中lqr()函数形式
在这里插入图片描述
其中输入包含:
在这里插入图片描述
在所有情况中,如果忽略N,则N设定为0。
求出的解包含:
在这里插入图片描述
lqr()返回kPr,其实还可以通过dare()函数求解kPr
① 通过dare()函数求解Riccati方程的解P
通过函数dlap()判断稳定性:
在这里插入图片描述
P要正定,系统才稳定
求解P
在这里插入图片描述
a. 根据dare()函数求解的Prk的含义与[k,P,r)=dlqr()中相同
b. 函数dare()和dlqr()求出的结果是相同的,都能求解Prk;
c. 函数dlap()求出的Pdare()函数、dlqr()函数求出的P不同
② 再根据求解的P去求解反馈增益矩阵k
在这里插入图片描述
这里根据公式求解的kdare()函数、dlqr()函数求出的k是一样的。
③ 最后根据k求解闭环系统矩阵特征值r
在这里插入图片描述

1.2 举例:

Example1:

>> A
A =

    1.1000    2.0000
         0    0.9500

>> B
B =
         0
    0.0790

>> Q
Q =
     1     0
     0     1

>> R
R =
    0.1000
>> eig(A)

ans =

    1.1000
    0.9500

>> P=dlyap(A',Q)

P =

   1.0e+03 *

   -0.0048    0.2328
    0.2328    8.8883  

① 可见由于离散系统矩阵A的特征值有不在单位圆内,所以该系统本身就不稳定,同时通过dlyap()函数求解P,发现P也不正定,所以该系统本身就不稳定
② 这时需要通过闭环控制配置状态反馈矩阵K来实现系统稳定,即让闭环状态矩阵Acl=(A-B**k)特征值在单位圆内,这就是LQR控制起到的作用。

>> [K,P,r] = dlqr(A,B,Q,R)
K =
   2.4950   12.5106

P =
   4.0373    8.5226
   8.5226   31.5400

r =
  0.5308 + 0.2651i
  0.5308 - 0.2651i

① dlqr()直接求解出kPr
② 也可以通过公式k=(BTPB+R)-1BTPA来求解K。

>> K=(B'*P*B+R)^(-1)*B'*P*A
K =
   2.4950   12.5106

公式k=(BTPB+R)-1BTPA求解的kdlqr()函数求解的k结果相同
接下来就可以验证闭环反馈稳定性:

>> Acl=A-B*K

Acl =

    1.1000    2.0000
   -0.1971   -0.0383

>> eig(Acl)

ans =

   0.5308 + 0.2651i
   0.5308 - 0.2651i
   
>> dlyap(Acl',Q)
ans =
    3.2764    5.0884
    5.0884   13.3450   

① 可见由于闭环系统矩阵Acl的特征值都在单位圆内,所以该闭环系统稳定,同时通过dlyap()函数求解P,发现P也正定,各阶主子式均大于0,所以该闭环系统稳定
② 若用最优增益K去计算lyapunov方程的解P,得到的P和LQR求解的P相同,见“Lyapunov稳定性分析3(离散时间系统)”文章链接: Lyapunov稳定性分析3(离散时间系统)

二、离散时间系统李卡提方程求解函数:dare()函数

dare()函数:Discrete-time algebraic Riccati equation solution
作用:通过dare()函数求解离散系统Riccati方程的解P

2.1 MATLAB函数形式

dlqr()函数相同,对于离散系统,形式:
在这里插入图片描述

其中:
在这里插入图片描述

2.2 举例

Example1:
系统矩阵、权值矩阵A,B,Q,R和1.2节中一样

>> [P,r,K] = dare(A,B,Q,R)
P =
    4.0373    8.5226
    8.5226   31.5400

r =
   0.5308 + 0.2651i
   0.5308 - 0.2651i

K =
    2.4950   12.5106

三、总结:

3.1 离散系统中,函数dare()和dlqr()计算的结果相等,K,P,r完全相同==;

3.2 公式k=(BTPB+R)-1BTPA求解的kdlqr()函数、dare()函数求解的k结果相同==;

3.3 函数dare()和dlqr()都可以直接求解Riccati方程的解P、以及最优反馈增益矩阵K,且他们求解的P和dlyap()函数求解的P不同;

3.4 以上结论同连续系统。

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值