1. Koopman算子与非线性系统线性化
Koopman算子理论为非线性动力系统分析提供了全新的视角。传统上,我们通常采用局部线性化方法处理非线性系统,但这种方法仅在小范围内有效。Koopman算子通过将系统状态提升到无限维函数空间,实现了全局线性化表示。
1.1 Koopman算子的数学基础
Koopman算子的核心思想是通过观测函数的演化来描述系统动态。给定非线性动力系统:
xₖ₊₁ = f(xₖ)
Koopman算子K作用于观测函数g: M→R,定义为:
(Kg)(x) = g(f(x))
这个定义表明,Koopman算子通过复合运算将当前时刻的观测函数映射到下一时刻。值得注意的是,尽管原系统f是非线性的,Koopman算子K却是线性的——这是该方法最具吸引力的特性。
1.2 有限维近似实现
实际操作中,我们需要构建Koopman算子的有限维近似。扩展动态模态分解(EDMD)是最常用的方法:
- 选择一组基函数{φ₁, φ₂, ..., φ_N},构成提升空间
- 收集系统轨迹数据{(xₖ, yₖ)},其中yₖ = f(xₖ)
- 构建数据矩阵:
Φ₊ = [φ(y₁) φ(y₂) ... φ(y_M)]
Φ = [φ(x₁) φ(x₂) ... φ(x_M)] - 通过最小二乘求解Koopman矩阵近似:
K ≈ Φ₊Φ⁺ (Φ⁺为Φ的伪逆)
在Matlab中,这一过程可以高效实现:
matlab复制% 数据矩阵构建
Phi_plus = [phi(y1) phi(y2) ... phi(yM)];
Phi = [phi(x1) phi(x2) ... phi(xM)];
% Koopman矩阵计算
K = Phi_plus * pinv(Phi);
1.3 基函数选择策略
基函数的选择直接影响模型性能。常见选项包括:
- 多项式基:简单但可能遭遇维数灾难
- 径向基函数(RBF):局部性好,需选择合适带宽
- 薄板样条:适合高维插值
- 神经网络:自动学习最优表示,但需要更多数据
实际应用中,我们通常通过交叉验证选择最优基函数。例如在提供的代码中,比较了三种基函数:
matlab复制% 基函数性能比较
RMSE1 = sqrt(mean((
