当前位置: 首页 > news >正文

有限时间 vs 固定时间 vs 预定时间滑模:稳定性分析与仿真验证方法对比(上)

在讲述固定时间收敛前,我们可以先简单讲述一下渐进收敛和有限时间收敛、固定时间收敛、预定时间收敛都是在其基础上发展而来。

一、稳定性定义

考虑由以下方程描述的非线性自治系统:
x ˙ ( t ) = f ( x ( t ) ) , x ( 0 ) = x 0 , (1.1) \dot{x}(t) = f(x(t)), \quad x(0) = x_0, \tag{1.1} x˙(t)=f(x(t)),x(0)=x0,(1.1)
其中, x ∈ R ℓ x \in \mathbb{R}^\ell xR 是状态变量, f : D → R ℓ f : \mathcal{D} \to \mathbb{R}^\ell f:DR 是定义在原点附近的开邻域 D \mathcal{D} D 上的上半连续映射,且对任意 x ∈ D x \in \mathcal{D} xD,集合 f ( x ) f(x) f(x) 非空,同时对所有 $ t > 0 $ 有 f ( 0 ) = 0 f(0) = 0 f(0)=0。若 f ( x ( t ) ) f(x(t)) f(x(t)) 不连续,则系统 (1.1) 的解按 Filippov 意义理解。设 x ( t , x 0 ) x(t, x_0) x(t,x0) 为系统 (1.1) 柯西问题的任意解。

定义 1.1 系统 (1.1) 在原点处的平衡点为:

  • 李雅普诺夫稳定:若对任意 ε > 0 \varepsilon > 0 ε>0,存在 δ = δ ( ε ) > 0 \delta = \delta(\varepsilon) > 0 δ=δ(ε)>0,使得当 ∀ ∥ x 0 ∥ < δ \forall \|x_0\| < \delta ∀∥x0<δ 时,有 ∥ x ( t , x 0 ) ∥ < ε \|x(t, x_0)\| < \varepsilon x(t,x0)<ε 对所有 $ t > 0 $ 成立;
  • 局部渐近稳定:若它是稳定的,且可以选取 δ \delta δ 使得当 ∀ ∥ x 0 ∥ < δ \forall \|x_0\| < \delta ∀∥x0<δ 时, lim ⁡ t → ∞ ∥ x 0 ∥ = 0 \lim_{t \to \infty} \|x_0\| = 0 limtx0=0
  • 全局渐近稳定:若它是稳定的,且对所有 x 0 ∈ R ℓ x_0 \in \mathbb{R}^\ell x0R,有 lim ⁡ t → ∞ ∥ x 0 ∥ = 0 \lim_{t \to \infty} \|x_0\| = 0 limtx0=0
  • 不稳定:若它不满足稳定性条件。

定义 1.2 原点是系统 (1.1) 的有限时间稳定平衡点,当且仅当原点是李雅普诺夫稳定的,并且存在原点的一个开邻域 N ⊆ D \mathcal{N} \subseteq \mathcal{D} ND 和一个正定函数 T ( x 0 ) = sup ⁡ x ( t , x 0 ) inf ⁡ { T ≥ 0 : x ( t , x 0 ) = 0 对所有  t ≥ T , x 0 ∈ N } T(x_0) = \sup_{x(t, x_0)} \inf\{T \geq 0 : x(t, x_0) = 0 \text{ 对所有 } t \geq T, \, x_0 \in \mathcal{N}\} T(x0)=supx(t,x0)inf{T0:x(t,x0)=0 对所有 tT,x0N}(称为收敛时间函数),使得对所有 x ( 0 ) ∈ N ∖ { 0 } x(0) \in \mathcal{N} \setminus \{0\} x(0)N{0},有 T ( x 0 ) < ∞ T(x_0) < \infty T(x0)<。此外,若 N = R ℓ \mathcal{N} = \mathbb{R}^\ell N=R,则原点是全局有限时间稳定平衡点。有限时间稳定性隐含渐近稳定性。

定义 1.3 原点是系统 (1.1) 的固定时间稳定平衡点,若它是全局有限时间稳定的,且收敛时间函数 T ( x 0 ) T(x_0) T(x0) 被一个实数 T max ⁡ > 0 T_{\max} > 0 Tmax>0 限制,即 T ( x 0 ) ≤ T max ⁡ , ∀ x 0 ∈ R ℓ T(x_0) \leq T_{\max}, \, \forall x_0 \in \mathbb{R}^\ell T(x0)Tmax,x0R

定义 1.4 一个函数 V ( x ) : D → R V(x):\mathcal{D} \to \mathbb{R} V(x):DR,满足 V ( 0 ) = 0 V(0)=0 V(0)=0 被称作:

  • 正定函数:若 V ( x ) > 0 , ∀ x ∈ D ∖ { 0 } V(x) > 0, \, \forall x \in \mathcal{D} \setminus \{0\} V(x)>0,xD{0}
  • 半正定函数:若 V ( x ) ≥ 0 , ∀ x ∈ D ∖ { 0 } V(x) \geq 0, \, \forall x \in \mathcal{D} \setminus \{0\} V(x)0,xD{0}
  • 负定函数:若 V ( x ) < 0 , ∀ x ∈ D ∖ { 0 } V(x) < 0, \, \forall x \in \mathcal{D} \setminus \{0\} V(x)<0,xD{0}
  • 半负定函数:若 V ( x ) ≤ 0 , ∀ x ∈ D ∖ { 0 } V(x) \leq 0, \, \forall x \in \mathcal{D} \setminus \{0\} V(x)0,xD{0}

注意:为了便于固定时间稳定相关结论的推导以及公式的简化,这里我们定义符号 ⌈ x ⌋ = ∣ x ∣ sign ⁡ ( x ) \lceil x \rfloor = |x| \operatorname{sign}(x) x=xsign(x),其中 sign ⁡ ( x ) \operatorname{sign}(x) sign(x) 为符号函数。

二、李雅普诺夫函数

假设存在一个连续可微的正定函数 V ( x ) : D → R V(x) : \mathcal{D} \to \mathbb{R} V(x):DR,且满足 V ( x ) > 0 , ∀ x ∈ D ∖ { 0 } V(x) > 0, \, \forall x \in \mathcal{D} \setminus \{0\} V(x)>0,xD{0}。则:

  1. 局部稳定性:若 V ˙ ( x ( t ) ) ≤ 0 , ∀ x ∈ D \dot{V}(x(t)) \leq 0, \, \forall x \in \mathcal{D} V˙(x(t))0,xD,则原点是系统 (1.1) 的局部稳定平衡点
  2. 局部渐近稳定性:若 V ˙ ( x ( t ) ) < 0 , ∀ x ∈ D ∖ { 0 } \dot{V}(x(t)) < 0, \, \forall x \in \mathcal{D} \setminus \{0\} V˙(x(t))<0,xD{0},则原点是局部渐近稳定平衡点
  3. 全局稳定性:若 D = R ℓ \mathcal{D} = \mathbb{R}^\ell D=R V ( x ) V(x) V(x) 径向无界(即 lim ⁡ ∥ x ∥ → ∞ V ( x ) = ∞ \lim_{\|x\| \to \infty} V(x) = \infty limxV(x)=),上述结论可推广至全局。

满足上述条件的 V ( x ) V(x) V(x) 称为系统 (1.1) 的李雅普诺夫函数

如何简单的理解李雅普诺夫函数呢?我个人觉的简单理解就是能量。李雅普诺夫函数的值就是能量的值,李雅普诺夫函数平衡点就是能量最小的时候的值,也就是在系统设计时期望的系统状态,所以很多时候我们会将李雅普诺夫函数设计为 V = 1 2 e e T V = \frac{1}{2} e e^T V=21eeT,也就是误差的乘积,从这个角度来理解就是我们期望误差最小。

想象一个小球放在一个碗里:

  • 稳定平衡点(碗底):如果小球受到扰动,它会来回摆动,最终因为摩擦力(能量耗散)而回到碗底。
  • 不稳定平衡点(倒扣的碗顶):小球稍微一动就会滚下去,无法回到原点。
  • 如果这个“能量” 随时间不断减小(即 V ˙ ( x ) < 0 \dot V(x) < 0 V˙(x)<0),那么系统最终会趋于稳定(小球停在碗底)。
  • 如果“能量” 不增加(即 V ˙ ( x ) ≤ 0 \dot V(x) \le 0 V˙(x)0),系统可能稳定(但不一定收敛到平衡点)。

三、渐进稳定

3.1、定义

利用Lyapunov直接法,可以给出系统渐进稳定的充要条件如下:对于原点 x = 0 x=0 x=0 的平衡点,如果存在一个 Lyapunov 函数 V ( x ) V(x) V(x) 满足以下条件:

  • V ( 0 ) = 0 V(0) = 0 V(0)=0 V ( x ) V(x) V(x) 是正定的(查看定义1.4)
  • V ˙ ( 0 ) = 0 \dot V(0) = 0 V˙(0)=0 V ˙ ( x ) \dot V(x) V˙(x) 是负定的(查看定义1.4)

那么系统是渐进稳定的,此外,若 V ( x ) V(x) V(x) 是径向无界的(即当 ∣ ∣ x ∣ ∣ → ∞ ||x|| \to \infty ∣∣x∣∣ V ( x ) → ∞ V(x) \to \infty V(x)),则原点全局渐进稳定。

3.2、示例

假设我们针对以下二阶非线性系统通过李雅普诺夫渐进稳定进行设计:
{ x ˙ 1 = x 2 x ˙ 2 = x 1 2 + x 2 + u (3.1) \begin{cases} {\dot x}_1 = x_2 \\ {\dot x}_2 = x_1^2 + x_2 + u \\ \end{cases} \tag{3.1} {x˙1=x2x˙2=x12+x2+u(3.1)
首先我们期望状态收敛到零点,即 x 1 = 0 , x 2 = 0 x_1 = 0, x_2=0 x1=0,x2=0,那么我们可以设计李雅普诺夫函数为:
V ( x ) = 1 2 x 1 2 + 1 2 x 2 2 (3.2) V(x) = \frac{1}{2} x_1^2 + \frac{1}{2} x_2^2 \tag{3.2} V(x)=21x12+21x22(3.2)
那么 V ( 0 ) = 0 V(0) = 0 V(0)=0 V ( x ) V(x) V(x) 是正定的。计算 V ˙ ( x ) {\dot V} (x) V˙(x)
V ˙ ( x ) = x 1 x ˙ 1 + x 2 x ˙ 2 = x 1 x 2 + x 2 ( x 1 2 + x 2 + u ) = x 1 x 2 + x 1 2 x 2 + x 2 2 + x 2 u (3.3) \begin{aligned} \dot V(x) &= x_1 \dot x_1 + x_2 \dot x_2 \\ &= x_1x_2 + x_2(x_1^2 + x_2 + u) \\ &= x_1x_2 + x_1^2 x_2 + x_2^2 + x_2u \end{aligned} \tag{3.3} V˙(x)=x1x˙1+x2x˙2=x1x2+x2(x12+x2+u)=x1x2+x12x2+x22+x2u(3.3)
为了使得 V ˙ ( x ) \dot V(x) V˙(x) 负定,可以构造 u u u u = − x 1 − x 1 2 − k x 2 u = -x_1 - x_1^2 - kx_2 u=x1x12kx2 其中 k > 1 k>1 k>1 为标量。带入 u u u 可得
V ˙ ( x ) = x 1 x 2 + x 1 2 x 2 + x 2 2 + x 2 ( − x 1 − x 1 2 − k x 2 ) = ( 1 − k ) x 2 2 (3.4) \begin{aligned} \dot V(x) &= x_1x_2 + x_1^2 x_2 + x_2^2 + x_2(-x_1 - x_1^2 - kx_2) \\ &= (1-k) x_2^2 \end{aligned} \tag{3.4} V˙(x)=x1x2+x12x2+x22+x2(x1x12kx2)=(1k)x22(3.4)
这样 V ˙ ( x ) \dot V(x) V˙(x) 就是一个负定的函数了。我们使用 Matlab 来验证一下:

3.2.1、代码
x_1 = zeros(1, 1e5);
x_2 = zeros(1, 1e5);
u   = zeros(1, 1e5);% 初始化
x_1(1, 1) = 100;
x_2(1, 1) = -10;
dt        = 1e-3;% 参数
k = 10;for i = 1:(1e5-1)% 计算控制量u(1,i) = - x_1(1,i) - x_1(1,i).^2 - k .*  x_2(1,i);% 计算微分dx_1 = x_2(1,i);dx_2 = x_1(1,i)^2 + x_2(1,i) + u(1,i);% 更新状态量,为了简单直接采用欧拉法x_1(1, i+1) = x_1(1, i) + dx_1 .* dt;x_2(1, i+1) = x_2(1, i) + dx_2 .* dt;
end
3.2.2、绘图

请添加图片描述

可以从图中看出,我们给的控制量是可以使得系统状态最终稳定的。

说点人话就是,渐进系统保证了当时间趋于无穷时,系统会趋于稳定,李雅普诺夫函数趋于零。

http://www.xdnf.cn/news/616969.html

相关文章:

  • 本地分支git push 报错 fatal: The current branch XXXX has no upstream branch.
  • 负号和连接号的区别?
  • 【C++】20. AVL树的实现
  • Python+requests实现接口自动化测试
  • 机器学习 Day1
  • 【python】局域网内通过python远程重启另一台windows电脑
  • Ntfs!ReadIndexBuffer函数调用Ntfs!NtfsMapStream函数的参数FileOffset为什么是0
  • PPP 流程已经走到启动阶段并且成功进入了 “STAGE_START_PPP
  • Linux PXE批量装机+无人值守技术(自动化装机)
  • [特殊字符] GUNION SDK 接口调用方式说明(静态库 vs 动态库)
  • 树莓派的刷机和登录
  • 常见证书格式区别
  • 矩阵详解:线性代数在AI大模型中的核心支柱
  • win11 24H2 版本,运行.vbs错误:没有文件扩展“.vbs“的脚本引擎
  • 夺命充电何时休?电瓶车入室起火事件频发
  • Linux C/C++编程 —— 线程技术总结
  • 家政维修平台实战09:推送数据到多维表格
  • 得力DE-620K针式打印机打印速度不能调节维修一例
  • AI Engine Kernel and Graph Programming--知识分享6
  • 深度探讨:AI 的全能边界 —— 哪些任务仍超越当前技术范畴?
  • 高校外卖小程序,怎么落地实践?
  • echarts之折线柱状图
  • 【ISP算法精粹】ISP算法管线的预处理算法有哪些?
  • Linux之 SPI 驱动框架- spi-mem 框架
  • 虚拟化工具libvirt日志文件的结构化使用指南
  • Python 脚本执行命令的深度探索:方法、示例与最佳实践
  • 蓝桥杯2025.5.23每日一题-儿童数
  • 中科驭数携DPU全栈产品亮相福州数博会,赋能智算时代算力基建
  • Trae 的核心功能介绍
  • OS面试篇