自动控制:自治系统与非自治系统的稳定性分析
在自动控制领域,理解自治系统和非自治系统的区别对于分析系统稳定性至关重要。自治系统的运动方程只与系统的状态有关,而非自治系统的运动方程则与系统的状态和时间都有关系。本文将探讨非自治系统的稳定性及其李雅普诺夫分析方法。
非自治系统的稳定性
非自治系统的稳定性分析相对复杂,因为它不仅取决于系统的当前状态,还直接受到时间的影响。非自治系统的运动方程可以表示为:
x ˙ ( t ) = f ( x ( t ) , t ) \dot{x}(t) = f(x(t), t) x˙(t)=f(x(t),t)
其中, x ( t ) x(t) x(t)是系统的状态向量, f ( x ( t ) , t ) f(x(t), t) f(x(t),t)是描述系统动态的函数。
稳定性的基本概念
对于一个非自治系统,稳定性的定义如下:
- 平衡点:如果存在一个点 x ∗ x^* x∗使得 f ( x ∗ , t ) = 0 f(x^*, t) = 0 f(x∗,t)=0,则 x ∗ x^* x∗是系统的平衡点。
- 李雅普诺夫稳定:如果对于任何初始状态 x ( 0 ) x(0) x(0)在某个足够小的邻域内,系统的状态 x ( t ) x(t) x(t)始终保持在平衡点 x ∗ x^* x∗的某个邻域内,则系统在 x ∗ x^* x∗是李雅普诺夫稳定的。
- 渐近稳定:在满足李雅普诺夫稳定的前提下,如果对于任何初始状态 x ( 0 ) x(0) x(0)在某个足够小的邻域内,系统的状态 x ( t ) x(t) x(t)随着时间趋向平衡点 x ∗ x^* x∗,则系统在 x ∗ x^* x∗是渐近稳定的。
- 全局渐近稳定:如果对于任意的初始状态 x ( 0 ) x(0) x(0),系统的状态 x ( t ) x(t) x(t)随着时间趋向平衡点 x ∗ x^* x∗,则系统在 x ∗ x^* x∗是全局渐近稳定的。
- 指数稳定:称平衡点在是指数稳定的,如果存在两个正数 α \alpha α 和 β \beta β,使得对于足够小的 ∥ x ( 0 ) − x ∗ ∥ \|x(0) - x^*\| ∥x(0)−x∗∥,有 ∥ x ( t ) − x ∗ ∥ ≤ α ∥ x ( 0 ) − x ∗ ∥ e − β t \|x(t) - x^*\| \leq \alpha \|x(0) - x^*\| e^{-\beta t} ∥x(t)−x∗∥≤α∥x(0)−x∗∥e−βt。
- 一致稳定:如果对于任意的 ϵ > 0 \epsilon > 0 ϵ>0,存在 δ > 0 \delta > 0 δ>0(与初始时刻无关),使得当 ∥ x ( 0 ) − x ∗ ∥ < δ \|x(0) - x^*\| < \delta ∥x(0)−x∗∥<δ 时, ∥ x ( t ) − x ∗ ∥ < ϵ \|x(t) - x^*\| < \epsilon ∥x(t)−x∗∥<ϵ 对于所有 t ≥ 0 t \geq 0 t≥0 都成立。
- 一致渐近稳定:在满足李雅普诺夫稳定的前提下,存在一个半径与无关的吸引球,使得初始状态在内的轨线关于一致收敛于0。
非自治系统的李雅普诺夫分析
李雅普诺夫分析是一种常用的稳定性分析方法,通过构造一个李雅普诺夫函数来研究系统的稳定性。李雅普诺夫函数是一个正定函数,用于描述系统状态偏离平衡点的程度。对于非自治系统,李雅普诺夫分析的步骤如下:
步骤1:选择李雅普诺夫函数
选择一个适当的李雅普诺夫函数 V ( x , t ) V(x, t) V(x,t),该函数需要满足以下条件:
- V ( x , t ) V(x, t) V(x,t)在平衡点 x ∗ x^* x∗处为零,即 V ( x ∗ , t ) = 0 V(x^*, t) = 0 V(x∗,t)=0。
- V ( x , t ) V(x, t) V(x,t)在 x ∗ x^* x∗的某个邻域内为正定函数,即 V ( x , t ) > 0 V(x, t) > 0 V(x,t)>0,当 x ≠ x ∗ x \neq x^* x=x∗时。
步骤2:计算李雅普诺夫函数的导数
计算李雅普诺夫函数 V ( x , t ) V(x, t) V(x,t)关于时间 t t t的导数 V ˙ ( x , t ) \dot{V}(x, t) V˙(x,t):
V ˙ ( x , t ) = ∂ V ∂ x x ˙ + ∂ V ∂ t \dot{V}(x, t) = \frac{\partial V}{\partial x} \dot{x} + \frac{\partial V}{\partial t} V˙(x,t)=∂x∂Vx˙+∂t∂V
其中, x ˙ = f ( x , t ) \dot{x} = f(x, t) x˙=f(x,t)是系统的运动方程。
步骤3:分析李雅普诺夫函数的导数
通过分析 V ˙ ( x , t ) \dot{V}(x, t) V˙(x,t)的符号来确定系统的稳定性:
- 如果 V ˙ ( x , t ) < 0 \dot{V}(x, t) < 0 V˙(x,t)<0,则系统在 x ∗ x^* x∗渐近稳定。
- 如果 V ˙ ( x , t ) ≤ 0 \dot{V}(x, t) \leq 0 V˙(x,t)≤0,则系统在 x ∗ x^* x∗李雅普诺夫稳定。
- 如果 V ˙ ( x , t ) > 0 \dot{V}(x, t) > 0 V˙(x,t)>0,则系统在 x ∗ x^* x∗不稳定。
例子分析
考虑一个简单的非自治系统,其运动方程为:
x ˙ ( t ) = − x ( t ) + sin ( t ) \dot{x}(t) = -x(t) + \sin(t) x˙(t)=−x(t)+sin(t)
选择李雅普诺夫函数 V ( x , t ) = 1 2 x 2 V(x, t) = \frac{1}{2}x^2 V(x,t)=21x2。
计算李雅普诺夫函数的导数:
V ˙ ( x , t ) = ∂ V ∂ x x ˙ = x ( − x + sin ( t ) ) = − x 2 + x sin ( t ) \dot{V}(x, t) = \frac{\partial V}{\partial x} \dot{x} = x(-x + \sin(t)) = -x^2 + x\sin(t) V˙(x,t)=∂x∂Vx˙=x(−x+sin(t))=−x2+xsin(t)
由于 x sin ( t ) x\sin(t) xsin(t)的最大值为 ∣ x ∣ |x| ∣x∣,我们可以得出:
V ˙ ( x , t ) = − x 2 + x sin ( t ) ≤ − x 2 + ∣ x ∣ = − x 2 + ∣ x ∣ = − ( x 2 − ∣ x ∣ ) \dot{V}(x, t) = -x^2 + x\sin(t) \leq -x^2 + |x| = -x^2 + |x| = -(x^2 - |x|) V˙(x,t)=−x2+xsin(t)≤−x2+∣x∣=−x2+∣x∣=−(x2−∣x∣)
因此,当 ∣ x ∣ |x| ∣x∣足够小时, V ˙ ( x , t ) < 0 \dot{V}(x, t) < 0 V˙(x,t)<0,系统在 x = 0 x = 0 x=0渐近稳定。
Python代码示例
下面是一个简单的Python代码示例,用于仿真上述非自治系统的稳定性分析。
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
# 定义非自治系统的运动方程
def non_autonomous_system(t, x):
return -x + np.sin(t)
# 定义李雅普诺夫函数
def lyapunov_function(x):
return 0.5 * x**2
# 定义李雅普诺夫函数的导数
def lyapunov_derivative(t, x):
return -x**2 + x * np.sin(t)
# 时间范围
t_span = (0, 10)
t_eval = np.linspace(t_span[0], t_span[1], 1000)
# 初始条件
x0 = 1.0
# 仿真系统
sol = solve_ivp(non_autonomous_system, t_span, [x0], t_eval=t_eval)
# 计算李雅普诺夫函数值
V = lyapunov_function(sol.y[0])
V_dot = lyapunov_derivative(sol.t, sol.y[0])
# 绘制系统状态和李雅普诺夫函数
plt.figure(figsize=(14, 6))
plt.subplot(1, 2, 1)
plt.plot(sol.t, sol.y[0], label='State $x(t)$')
plt.xlabel('Time (s)')
plt.ylabel('State $x(t)$')
plt.title('State $x(t)$ vs Time')
plt.legend()
plt.grid(True)
plt.subplot(1, 2, 2)
plt.plot(sol.t, V, label='$V(x)$')
plt.plot(sol.t, V_dot, label='$\dot{V}(x, t)$')
plt.xlabel('Time (s)')
plt.ylabel('Lyapunov Function')
plt.title('Lyapunov Function and its Derivative')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
代码说明
- 定义非自治系统的运动方程:非自治系统的动态方程定义为 x ˙ ( t ) = − x ( t ) + sin ( t ) \dot{x}(t) = -x(t) + \sin(t) x˙(t)=−x(t)+sin(t)。
- 定义李雅普诺夫函数:选择 V ( x , t ) = 1 2 x 2 V(x, t) = \frac{1}{2}x^2 V(x,t)=21x2作为李雅普诺夫函数。
- 定义李雅普诺夫函数的导数:计算李雅普诺夫函数的导数 V ˙ ( x , t ) = − x 2 + x sin ( t ) \dot{V}(x, t) = -x^2 + x \sin(t) V˙(x,t)=−x2+xsin(t)。
- 仿真系统:使用
solve_ivp
函数仿真系统的状态。 - 绘制系统状态和李雅普诺夫函数:使用Matplotlib绘制系统的状态 x ( t ) x(t) x(t)、李雅普诺夫函数 V ( x ) V(x) V(x)及其导数 V ˙ ( x , t ) \dot{V}(x, t) V˙(x,t)。
结论
通过李雅普诺夫分析方法,可以有效地分析非自治系统的稳定性。本文介绍了非自治系统的基本概念及其稳定性分析方法,并通过Python代码示例展示了如何仿真和验证系统的稳定性。在实际应用中,李雅普诺夫分析方法可以帮助工程师设计稳定性良好的控制系统,提高系统的鲁棒性和可靠性。