离散系统线性二次型调节器,dlqr函数,dare函数
- 一、 离散时间系统二次型优化:dlqr()函数
-
- 二、离散时间系统李卡提方程求解函数:dare()函数
-
- 三、总结:
- 3.1 离散系统中,函数*dare*()和*dlqr*()计算的结果相等,*K*,*P*,*r*完全相同==;
- 3.2 公式*k*=(*B^T^PB*+*R*)^-1^*B^T^PA*求解的*k*和*dlqr*()函数、*dare*()函数求解的*k*结果相同==;
- 3.3 函数*dare*()和*dlqr*()都可以直接求解Riccati方程的解*P*、以及最优反馈增益矩阵K,且他们求解的P和*dlyap*()函数求解的*P*不同;
- 3.4 以上结论同连续系统。
**注:**MATLAB中LQR函数有
连续和
离散两种,本篇文章继续前面分析的连续时间系统lqr()函数,分析
离散时间系统LQR()函数dlqr()。
用
lqr算出来的
反馈矩阵K,和用
公式k=(BTPB+R)-1BTPA算出来的反馈矩阵k是一样的,本文有详细分析过程。
一、 离散时间系统二次型优化:dlqr()函数
1.1 MATLAB函数形式
对于离散时间系统:
反馈矩阵控制率u=-kx最小化二次型代价函数:
离散系统MATLAB中lqr()函数形式:
其中输入包含:
在所有情况中,如果忽略N,则N设定为0。
求出的解包含:
lqr()返回k,P,r,其实还可以通过dare()函数求解k,P,r:
① 通过dare()函数求解Riccati方程的解P;
通过函数dlap()判断稳定性:
P要正定,系统才稳定
求解P:
a. 根据dare()函数求解的P,r,k的含义与[k,P,r)=dlqr()中相同;
b. 函数dare()和dlqr()求出的结果是相同的,都能求解P,r,k;
c. 函数dlap()求出的P和dare()函数、dlqr()函数求出的P不同。
② 再根据求解的P去求解反馈增益矩阵k:
这里根据公式求解的k和dare()函数、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()直接求解出k,P,r;
② 也可以通过公式k=(BTPB+R)-1BTPA来求解K。
>> K=(B'*P*B+R)^(-1)*B'*P*A
K =
2.4950 12.5106
① 公式k=(BTPB+R)-1BTPA求解的k和dlqr()函数求解的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求解的k和dlqr()函数、dare()函数求解的k结果相同==;
3.3 函数dare()和dlqr()都可以直接求解Riccati方程的解P、以及最优反馈增益矩阵K,且他们求解的P和dlyap()函数求解的P不同;
3.4 以上结论同连续系统。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)