分数阶Lorenz系统的自适应控制及其Matlab仿真是一个结合了分数阶混沌、控制理论和数值仿真的经典研究课题。
我们将以Caputo定义的分数阶Lorenz系统为例,设计一个参数未知情况下的自适应控制器,并给出完整的Matlab仿真流程。
1. 受控系统模型
考虑带有控制器和未知参数的分数阶Lorenz系统:
{ Dαx=σ(y−x)+uxDαy=ρx−y−xz+uyDαz=xy−βz+uz \begin{cases} D^\alpha x = \sigma (y - x) + u_x \\ D^\alpha y = \rho x - y - xz + u_y \\ D^\alpha z = xy - \beta z + u_z \end{cases}⎩⎨⎧Dαx=σ(y−x)+uxDαy=ρx−y−xz+uyDαz=xy−βz+uz
其中:
- α∈(0,1]\alpha \in (0, 1]α∈(0,1]为分数阶阶次(通常我们取相同的α\alphaα)。
- σ,ρ,β>0\sigma, \rho, \beta > 0σ,ρ,β>0是系统的未知参数(但我们知道其符号为正)。
- ux,uy,uzu_x, u_y, u_zux,uy,uz是待设计的控制输入。
- 控制目标:使系统状态(x,y,z)(x, y, z)(x,y,z)渐近稳定到零点$(0,0,0)$,即使得limt→∞x,y,z=0\lim_{t \to \infty} x, y, z = 0limt→∞x,y,z=0。
为什么参数未知?在实际应用中,系统参数可能难以精确测量或会缓慢漂移,自适应控制能在线估计这些参数并调整控制器,鲁棒性更强。
2. 控制器与自适应律设计
我们采用Lyapunov稳定性理论和Backstepping思想来设计。
步骤1:控制第一个方程
我们直接对xxx施加一个简单的线性反馈来控制它:
ux=−kxx−σ^(y−x) u_x = -k_x x - \hat{\sigma}(y - x)ux=−kxx−σ^(y−x)
其中kx>0k_x > 0kx>0是一个可调增益,σ^\hat{\sigma}σ^是σ\sigmaσ的估计值。
代入第一个方程:
Dαx=σ(y−x)−kxx−σ^(y−x)=−kxx+(σ−σ^)(y−x) D^\alpha x = \sigma (y-x) - k_x x - \hat{\sigma}(y-x) = -k_x x + (\sigma - \hat{\sigma})(y-x)Dαx=σ(y−x)−kxx−σ^(y−x)=−kxx+(σ−σ^)(y−x)
定义参数估计误差σ~=σ−σ^\tilde{\sigma} = \sigma - \hat{\sigma}σ~=σ−σ^$,则:
Dαx=−kxx+σ~(y−x) D^\alpha x = -k_x x + \tilde{\sigma}(y-x)Dαx=−kxx+σ~(y−x)
步骤2:控制第二个方程
现在考虑yyy的方程。我们希望yyy能辅助稳定xxx,同时自身也被稳定。设计:
uy=−ρ^x+y+xz−kyy u_y = -\hat{\rho} x + y + xz - k_y yuy=−ρ^x+y+xz−kyy
其中ky>0k_y > 0ky>0,ρ^\hat{\rho}ρ^是ρ\rhoρ的估计值。
代入第二个方程:
Dαy=ρx−y−xz−ρ^x+y+xz−kyy=(ρ−ρ^)x−kyy D^\alpha y = \rho x - y - xz -\hat{\rho} x + y + xz - k_y y = (\rho - \hat{\rho})x - k_y yDαy<