Koopman理论
Koopman理论是一种将非线性动力系统用线性算子来分析的方法。它提出,虽然原始系统可能是非线性的,但可以通过Koopman算子作用在观测函数空间,使得系统在这个更高维的空间中变得线性。这样,使用线性分析工具(如谱分析、特征分解)就能研究复杂的非线性动态行为,大大拓展了对非线性系统的理解和建模能力。该理论广泛应用于流体力学、混沌系统和数据驱动建模等领域。
历史溯源
Koopman算子理论的发展始于20世纪30年代,首要的贡献者是B. O. Koopman和冯诺伊曼。Koopman受到量子力学中算子方法的启发,试图用线性方法分析经典的非线性哈密顿(Hamilton)系统。他关心的是观测函数随动力系统演化过程的性质,而不是单独的相空间轨道。在1931年,Koopman在其论文中首次引入了算子的理念,表明通过线性算子可以描述非线性的哈密顿动力系统的演化[1],这一构想为后来的发展奠定了基础。他强调,可以将动力系统看作是在某种函数空间中的算子作用过程。
冯诺伊曼是当时希尔伯特空间和谱理论的奠基人,他对动力系统的统计与概率性质、特别是遍历性和连续谱问题尤为关注。他希望将动力系统与算子谱理论紧密结合,发展概率与动力系统的严格基础。与Koopman合作的1932年论文中[2],冯诺伊曼更进一步地分析了具有连续谱的动力系统,给出了动力系统在算子谱理论下一般性的统计行为和遍历结果,对“不可积系统”的性质进行了深刻刻画。两人共同发表的重要论文是早期动力系统Koopman谱理论的里程碑,将Koopman的线性化算子思想和冯诺伊曼的希尔伯特空间、谱理论、概率逻辑方法结合,系统分析了动力系统连续谱情况下的统计与遍历性质[2]。
这一理论框架在后来的研究中得到了扩展,尤其是在流体动力学和混沌理论中被广泛应用。近年来,Koopman算子理论受到了越来越多的关注,特别是在数据驱动的动力学建模和控制领域。研究者们利用Koopman算子提取动态系统的特征,使得对复杂现象的预测和控制更加有效[3]。
总之,从Koopman和冯诺伊曼在1931年和1932年的开创性工作到当今的数据驱动应用,Koopman算子理论已成为现代动力学研究不可或缺的重要工具。
Koopman算子定义
时间离散
离散时间场景适用于状态演化由离散映射描述的系统,如采样数据系统、迭代过程、数字控制中的离散时间模型等,是实际工程中数据驱动建模的常用场景。
设离散时间自治动力系统的状态演化满足:
[math]\displaystyle{ x_{k+1} = F(x_k), \quad x_0 \in X }[/math]
其中 [math]\displaystyle{ k = 0, 1, 2, \dots }[/math]是离散时间步,[math]\displaystyle{ F: X \to X }[/math]是离散流映射(可能非线性), [math]\displaystyle{ x_{k+1} }[/math]是第[math]\displaystyle{ k+1 }[/math] 步的状态。
离散时间Koopman算子 [math]\displaystyle{ \mathcal{K}: \mathcal{G}(X) \to \mathcal{G}(X) }[/math]定义为:
[math]\displaystyle{ \mathcal{K} g(x) = g\left( F(x) \right) }[/math]
对于 [math]\displaystyle{ t = m }[/math]个离散时间步[math]\displaystyle{ m \in \mathbb{N} }[/math],算子可表示为[math]\displaystyle{ \mathcal{K}^m g(x) = g\left( F^m(x) \right) }[/math],即 m 次算子作用等价于 m 次状态演化后的观测,其中[math]\displaystyle{ F^m = F \circ F \circ \dots \circ F }[/math] (m次复合)。
式中,[math]\displaystyle{ g(x) }[/math]是任意观测函数(输入); [math]\displaystyle{ F(x) }[/math]是离散流映射,将第 k 步状态[math]\displaystyle{ x_k }[/math] 映射到第 k+1 步状态 [math]\displaystyle{ x_{k+1} }[/math]; [math]\displaystyle{ g\left( F(x) \right) }[/math]是观测函数的演化结果(输出),表示“先让状态 x 演化1个离散步,再对演化后的状态进行观测”。
离散Koopman算子有如下特性:
1. 线性性:满足[math]\displaystyle{ \mathcal{K} (\alpha_1 g_1 + \alpha_2 g_2) = \alpha_1 \mathcal{K} g_1 + \alpha_2 \mathcal{K} g_2 }[/math] ;
2. 半群性质:[math]\displaystyle{ \mathcal{K}^{m+n} = \mathcal{K}^m \circ \mathcal{K}^n }[/math]( m 步+ n 步演化等价于 m+n 步演化);
3. 特征函数关系:若[math]\displaystyle{ \varphi }[/math]是[math]\displaystyle{ \mathcal{K} }[/math] 的特征函数(满足[math]\displaystyle{ \mathcal{K} \varphi = \lambda \varphi }[/math],则[math]\displaystyle{ \mathcal{K}^m \varphi = \lambda^m \varphi }[/math] ,即特征函数的演化仅需乘以特征值的 m 次幂——这是离散时间下线性化分析的核心。
时间连续
连续时间场景适用于状态演化由常微分方程(ODE)或偏微分方程(PDE)描述的系统,如连续运动的机械系统、流体流动等。
设连续时间自治动力系统的状态演化满足:
[math]\displaystyle{ \dot{x}(t) = f(x(t)), \quad x(0) = x_0 \in X }[/math]
其中[math]\displaystyle{ \dot{x} = \frac{dx}{dt} }[/math]是状态的时间导数,[math]\displaystyle{ f: X \to \mathbb{R}^n }[/math]是描述动力学的向量场(可能非线性)。
连续时间Koopman算子[math]\displaystyle{ \mathcal{K}^t: \mathcal{G}(X) \to \mathcal{G}(X) }[/math] 定义为:
[math]\displaystyle{ \mathcal{K}^t g(x) = g\left( F^t(x) \right) }[/math]
式中, [math]\displaystyle{ \mathcal{K}^t }[/math]为连续时间Koopman算子,参数[math]\displaystyle{ t }[/math] 表示演化时间长度; [math]\displaystyle{ g(x) }[/math]为任意观测函数(输入),如 [math]\displaystyle{ g(x) = x_1 }[/math](状态第一分量)、[math]\displaystyle{ \varphi }[/math](状态模长平方); [math]\displaystyle{ F^t(x) }[/math]为流映射,将初始状态 [math]\displaystyle{ x }[/math]沿动力学轨迹推进时间 [math]\displaystyle{ t }[/math],即 [math]\displaystyle{ F^t(x) = x(t) }[/math]; [math]\displaystyle{ g\left( F^t(x) \right) }[/math]为观测函数的演化结果(输出),表示“先让状态[math]\displaystyle{ x }[/math]演化时间 [math]\displaystyle{ t }[/math],再对演化后的状态进行观测”;[math]\displaystyle{ \mathcal{K}^t }[/math]不改变观测函数的形式,仅通过流映射[math]\displaystyle{ F^t }[/math] 改变观测函数的输入(状态),从而实现观测函数的“被动演化”。
对于光滑的观测函数 [math]\displaystyle{ g }[/math],连续时间Koopman算子的瞬时演化[math]\displaystyle{ t \to 0 }[/math]可通过无穷小生成元 [math]\displaystyle{ \mathcal{L} }[/math](Lie算子,详细见下面与其他算子的关系-Lie算子)描述,定义为:
[math]\displaystyle{ \mathcal{L} g = \lim_{t \to 0} \frac{\mathcal{K}^t g - g}{t} = \lim_{t \to 0} \frac{g \circ F^t - g}{t} }[/math]
其中 [math]\displaystyle{ g \circ F^t = g(F^t(x)) }[/math]是函数复合运算。
结合链式法则,生成元可简化为Lie导数形式(核心等价式):
[math]\displaystyle{ \mathcal{L} g(x) = \nabla g(x) \cdot f(x) }[/math]
式中, [math]\displaystyle{ \nabla g(x) }[/math]为观测函数[math]\displaystyle{ g }[/math] 在状态[math]\displaystyle{ x }[/math] 处的梯度( [math]\displaystyle{ n }[/math]维向量),即 [math]\displaystyle{ \nabla g = \left( \frac{\partial g}{\partial x_1},\frac{\partial g}{\partial x_2},\dots, \frac{\partial g}{\partial x_n} \right)^T }[/math], ;[math]\displaystyle{ f(x) }[/math] 为系统的向量场,描述状态的瞬时变化率; [math]\displaystyle{ \cdot }[/math]为向量点积,结果为标量;生成元 [math]\displaystyle{ \mathcal{L} g }[/math]表示观测函数 [math]\displaystyle{ g }[/math]随状态演化的瞬时变化率,即[math]\displaystyle{ \mathcal{L} g(x) = \frac{d}{dt} g(x(t)) }[/math] 。
连续Koopman算子有如下特性:
1. 线性性:对任意观测函数 [math]\displaystyle{ g_1, g_2 \in \mathcal{G}(X) }[/math]和常数[math]\displaystyle{ \alpha_1, \alpha_2 \in \mathbb{C} }[/math] ,满足: [math]\displaystyle{ \mathcal{K}^t (\alpha_1 g_1 + \alpha_2 g_2) = \alpha_1 \mathcal{K}^t g_1 + \alpha_2 \mathcal{K}^t g_2 }[/math]生成元[math]\displaystyle{ \mathcal{L} }[/math] 同样满足线性性;
2. 半群性质:[math]\displaystyle{ \mathcal{K}^{t+s} = \mathcal{K}^t \circ \mathcal{K}^s }[/math](先演化 [math]\displaystyle{ s }[/math] 再演化 [math]\displaystyle{ t }[/math],等价于直接演化 [math]\displaystyle{ t+s }[/math];
3. 与Koopman特征函数的关系:若[math]\displaystyle{ \varphi }[/math] 是 [math]\displaystyle{ \mathcal{L} }[/math]的特征函数(满足[math]\displaystyle{ \mathcal{L} \varphi = \mu \varphi }[/math] ,则 [math]\displaystyle{ \mathcal{K}^t \varphi = e^{\mu t} \varphi }[/math],即 [math]\displaystyle{ \varphi }[/math] 也是 [math]\displaystyle{ \mathcal{K}^t }[/math]的特征函数,特征值 [math]\displaystyle{ \lambda = e^{\mu t} }[/math]。
Koopman模式分解
特征函数与特征值
一个对应于特征值[math]\displaystyle{ \lambda }[/math]的Koopman特征函数[math]\displaystyle{ \varphi(\mathbf{x}) }[/math]满足:
-
[math]\displaystyle{ \varphi(\mathbf{x}_{k+1}) = \mathcal{K} \varphi(\mathbf{x}_k) = \lambda \varphi(\mathbf{x}_k). }[/math]
(1)
在连续时间下,Lie算子的特征函数[math]\displaystyle{ \varphi(\mathbf{x}) }[/math]满足:
[math]\displaystyle{ \frac{d}{dt} \varphi(\mathbf{x}) = \mathcal{L}\varphi(\mathbf{x}) = \mu \varphi(\mathbf{x}), }[/math]
其中[math]\displaystyle{ \mu }[/math]是连续时间下的特征值。一般来说,即使状态空间[math]\displaystyle{ \mathcal{X} }[/math]和动力学[math]\displaystyle{ \mathbf{F}(\mathbf{x}) }[/math]是实值的,特征值和特征向量通常分别是复值的标量和函数。
如果我们考虑本身已经是线性的动力学,可以进一步说明线性时间离散动力学[math]\displaystyle{ \mathbf{x}_{n+1} = \mathbf{A}\mathbf{x}_n }[/math]的特征向量与[math]\displaystyle{ g_{n+1} = \mathcal{K}g_n }[/math]的特征函数之间的联系。给定矩阵[math]\displaystyle{ \mathbf{A} }[/math]的一个左特征向量[math]\displaystyle{ \boldsymbol{\xi}^\top \mathbf{A} = \lambda \boldsymbol{\xi}^\top }[/math],我们可以构造一个对应的Koopman特征函数如下
[math]\displaystyle{ \varphi(\mathbf{x}) := \boldsymbol{\xi}^\top \mathbf{x} }[/math]
因为
[math]\displaystyle{ \mathcal{K}\varphi(\mathbf{x}) = \varphi(\mathbf{A}\mathbf{x}) = \boldsymbol{\xi}^\top \mathbf{A}\mathbf{x} = \lambda \boldsymbol{\xi}^\top \mathbf{x} = \lambda \varphi(\mathbf{x}). }[/math]
换句话说,[math]\displaystyle{ \mathbf{A} }[/math]的右特征向量在状态空间[math]\displaystyle{ \mathcal{X} }[/math]中给出了随时间不变的方向。而左特征向量则对应于Koopman特征函数,在观测空间[math]\displaystyle{ \mathcal{G}(\mathcal{X}) }[/math]中也同样对应于随时间不变的方向。在一般系统中,一组Koopman特征函数可以用来生成更多的特征函数。在离散时间系统中,我们可以发现,两个特征函数[math]\displaystyle{ \varphi_1(\mathbf{x}) }[/math]和[math]\displaystyle{ \varphi_2(\mathbf{x}) }[/math]的乘积同样是一个特征函数,
[math]\displaystyle{ \mathcal{K} \left(\varphi_1(\mathbf{x}) \varphi_2(\mathbf{x})\right) = \varphi_1(\mathbf{F}(\mathbf{x}))\varphi_2(\mathbf{F}(\mathbf{x})) = \lambda_1\lambda_2 \varphi_1(\mathbf{x}) \varphi_2(\mathbf{x}). }[/math]
代数上,当观测空间在乘法下封闭时,Koopman特征函数的集合在逐点乘法下形成一个交换幺半群。这样一来,根据具体的动力系统,可能存在有限组生成元特征函数元素,可以用来构建所有其他特征函数[4]。
观测函数可以由特征函数线性组合构成,即[math]\displaystyle{ g(\mathbf{x}) \in \mathrm{span}\{\varphi_k\}_{k=1}^K }[/math],在Koopman算子作用下具有极为简单的演化关系:
[math]\displaystyle{ g(\mathbf{x}) = \sum_k v_k \varphi_k \implies \mathcal{K}^t g(\mathbf{x}) = \sum_k v_k \lambda_k^t \varphi_k. }[/math]
这意味着子空间 [math]\displaystyle{ \mathrm{span}\{\varphi_k\}_{k=1}^K }[/math] 在Koopman算子 [math]\displaystyle{ \mathcal{K} }[/math] 的作用下是不变的。因此我们可以分析一般观测量分解到特征函数下的时间演化。这种分析为数据驱动算法中的动力学模式分解(Dynamic Mode Decomposition, DMD)方法奠定了基础。到目前为止,我们只给定了单一的观测函数,接下来我们写出多个观测函数下Koopman模式分解的表达式。我们将这些观测整理成一个向量[math]\displaystyle{ \mathbf{g} }[/math]:
[math]\displaystyle{ \mathbf{g}(\mathbf{x}) = \begin{bmatrix} g_1(\mathbf{x}) \\ g_2(\mathbf{x}) \\ \vdots \\ g_p(\mathbf{x}) \end{bmatrix} . }[/math]
每一个单独的测量都可以用特征函数[math]\displaystyle{ \varphi_j(\mathbf{x}) }[/math]的基展开表示:
[math]\displaystyle{ g_i(\mathbf{x}) = \sum_{j=1}^\infty v_{ij} \varphi_j(\mathbf{x}) . }[/math]
因此,观测量向量[math]\displaystyle{ \mathbf{g} }[/math]也可以类似地展开为
[math]\displaystyle{ \mathbf{g}(\mathbf{x}) = \begin{bmatrix} g_1(\mathbf{x}) \\ g_2(\mathbf{x}) \\ \vdots \\ g_p(\mathbf{x}) \end{bmatrix} = \sum_{j=1}^{\infty} \varphi_j(\mathbf{x}) \mathbf{v}_j, }[/math] 其中[math]\displaystyle{ \mathbf{v}_j }[/math]被称为与特征函数[math]\displaystyle{ \varphi_j }[/math]相关联的第[math]\displaystyle{ j }[/math]个Koopman模态。
对于守恒动力系统,例如由哈密顿动力学支配的系统,Koopman算子在关于守恒测度下的平方可积函数空间[math]\displaystyle{ \mathcal{G}(\mathcal{X}) }[/math]中是酉算子。因此,Koopman特征函数在守恒系统中构成一组正交归一基,并且可以通过投影直接计算Koopman模态[math]\displaystyle{ \mathbf{v}_j }[/math]:
[math]\displaystyle{ \mathbf{v}_j = \begin{bmatrix} \langle \varphi_j, g_1 \rangle \\ \langle \varphi_j, g_2 \rangle \\ \vdots \\ \langle \varphi_j, g_p \rangle \end{bmatrix} , }[/math]
其中[math]\displaystyle{ \langle \cdot, \cdot \rangle }[/math]是[math]\displaystyle{ \mathcal{G}(\mathcal{X}) }[/math]空间上函数的标准内积。因此,观测函数展开可以看作是在特征函数坐标系下的一种基变换。我们可以将观测量[math]\displaystyle{ \mathbf{g} }[/math]的动力学表示如下:
[math]\displaystyle{ \mathbf{g}(\mathbf{x}(t)) = \mathcal{K}^t \mathbf{g}(\mathbf{x}_0) = \mathcal{K}^t \sum_{j=1}^{\infty} \varphi_j(\mathbf{x}_0)\mathbf{v}_j }[/math] [math]\displaystyle{ = \sum_{j=1}^{\infty} \mathcal{K}^t \varphi_j(\mathbf{x}_0)\mathbf{v}_j }[/math] [math]\displaystyle{ = \sum_{j=1}^{\infty} \lambda_j^t \varphi_j(\mathbf{x}_0)\mathbf{v}_j . }[/math]
这组三元组[math]\displaystyle{ \{(\lambda_j, \varphi_j, \mathbf{v}j)\}_{j=1}^\infty }[/math]称为Koopman模式分解,由Mezić于2005年提出[5]。通常,可以将这种展开近似为仅包含少数主导项的截断和。DMD估计中,DMD的特征值将近似Koopman特征值[math]\displaystyle{ \lambda_j }[/math],DMD模态将近似Koopman模态[math]\displaystyle{ \mathbf{v}_j }[/math],而DMD的模态幅值将近似初始状态下相应Koopman特征函数的值[math]\displaystyle{ \varphi_j(\mathbf{x}_0) }[/math]。需要注意的是,Koopman模态和特征函数是不同的数学对象,其近似方法也不相同。Koopman特征函数通常比Koopman模态更难计算,因此激发了如扩展DMD算法等技术的发展。
一般的观测函数下如何得到特征函数?
注意,一般矩阵的特征值分解通常是唯一的,其特征向量是有限维的,每个本征空间是有限维的,且特征值个数有限。而Koopman算子是作用在无限维的函数空间上的,所以会有无限多个特征函数。只要有生成元,就可以无限地生成新的特征函数。而换一组生成元,特征函数的表现形式会很不一样。有几种方法可以用来数值近似计算Koopman特征函数。
傅立叶平均
假设一个观测量的演化[math]\displaystyle{ g(\mathbf{x}(t)) = g(\mathbf{F}^t(\mathbf{x})) }[/math]已知,则可以通过以下长期谐波或傅里叶平均来计算与特征值[math]\displaystyle{ e^{i\omega} }[/math]对应的特征函数:
[math]\displaystyle{ \tilde{g}_\omega(\mathbf{x}) := \lim_{T \to \infty} \frac{1}{T} \int_0^T g\left(\mathbf{F}^t(\mathbf{x})\right) e^{-i\omega t} \,dt. }[/math]
可以根据特征函数的定义1证明[math]\displaystyle{ \tilde{g}_\omega(\mathbf{x}) }[/math]是特征函数,[math]\displaystyle{ e^{i\omega} }[/math]是特征值。特别地,当[math]\displaystyle{ \omega=0 }[/math]时,[math]\displaystyle{ \tilde{g}_0(\mathbf{x}) }[/math]是特征值为1所对应的特征函数。证明如下:
由于 [math]\displaystyle{ (\mathcal{K}^t g)(\mathbf{x}) = g(\mathbf{F}^t(\mathbf{x})) }[/math],我们有:
[math]\displaystyle{ \begin{aligned} \tilde{g}_\omega (\mathbf{F}^s(\mathbf{x})) &= \lim_{T \to \infty} \frac{1}{T} \int_0^T g(\mathbf{F}^t(\mathbf{F}^s(\mathbf{x}))) e^{-i\omega t} dt \\ &= \lim_{T \to \infty} \frac{1}{T} \int_0^T g(\mathbf{F}^{t+s}(\mathbf{x})) e^{-i\omega t} dt \\ \end{aligned} }[/math]
令 [math]\displaystyle{ \tau = t + s \Rightarrow t = \tau - s }[/math],则:
[math]\displaystyle{ \begin{aligned} \tilde{g}_\omega (\mathbf{F}^s(\mathbf{x})) &= \lim_{T \to \infty} \frac{1}{T} \int_s^{T+s} g(\mathbf{F}^\tau(\mathbf{x})) e^{-i\omega (\tau - s)} d\tau \\ &= e^{i\omega s} \lim_{T \to \infty} \frac{1}{T} \int_s^{T+s} g(\mathbf{F}^\tau(\mathbf{x})) e^{-i\omega \tau} d\tau \\ &= e^{i\omega s} \lim_{T \to \infty} \frac{1}{T} \int_0^T g(\mathbf{F}^\tau(\mathbf{x})) e^{-i\omega \tau} d\tau \\ &= e^{i\omega s} \tilde{g}_\omega(\mathbf{x}) \\ \end{aligned} }[/math]
其中第三步利用了移位后积分上下限对趋于无穷的平均值无影响。因此:[math]\displaystyle{ \tilde{g}_\omega (\mathbf{F}^s(\mathbf{x})) = e^{i\omega s} \tilde{g}_\omega(\mathbf{x}), }[/math]即 [math]\displaystyle{ \tilde{g}_\omega(\mathbf{x}) }[/math] 是特征值为 [math]\displaystyle{ e^{i\omega s} }[/math] 的Koopman特征函数。这样看来,似乎随便取一个[math]\displaystyle{ \omega }[/math],就可以得到一个特征值和特征函数,它们都是有意义的吗?实际上,很多[math]\displaystyle{ \omega }[/math]会使得[math]\displaystyle{ \tilde{g}_\omega(\mathbf{x}) }[/math]恒等于0,这就没有意义了,所以我们要关注的是那些特征函数不恒等于0的[math]\displaystyle{ \omega }[/math]及其对应的特征值。在一般的动力系统中,Koopman算子的本征谱可能既有离散的点谱的结构,也会有连续谱的结构.在傅立叶平均里,离散谱意味着有限的几个特征函数不恒为0,它们对应着一些有序的周期或准周期结构,能量比较集中;而连续谱意味着在极限下特征函数几乎处处为0,此时往往对应的是混沌的性质,能量比较弥散不集中。
应用案例:标准映射
标准映射(Standard Map),又称Chirikov标准映射,是动力系统理论和混沌研究中最经典、最基础的二维离散映射之一。它通过一组简单的迭代方程:
[math]\displaystyle{ \begin{cases} y_{n+1} = [y_n + \epsilon \sin(2\pi x_n)] \;\mathrm{mod}\; 1 \\\\ x_{n+1} = [x_n + y_{n+1}] \;\mathrm{mod}\; 1 \end{cases} }[/math]
它描述了非线性扰动下保面积哈密顿系统的相空间动力学。标准映射体现了系统从有序到混沌的逐渐演化,广泛用于研究混沌现象、KAM理论和分形结构,是理解非线性动力学的重要模型。现在我们给出一个观测函数[math]\displaystyle{ g(x,\,y) = \sin(6\pi x)\,\sin(4\pi y) }[/math],便可以画出根据傅立叶平均方法得到的特征值为1的特征函数在相空间上的分布,如下图所示:
绘图时,对于相空间上的每一个点,根据迭代方程演化任意步(比如1000步),然后对演化出来的每一个状态都根据上面给出的观测函数进行观测,最后对所有观测值取平均,得到的便是起始点处特征函数的取值(对应图上点的颜色),对应的特征值为1。理论上要演化无穷多步取平均,所以迭代步数越长越好。从图中效果可见,特征函数可以区分和标识出不同的周期轨道。
数据回归
不变特征子空间
应用的Koopman分析并不是在希尔伯特空间中捕捉所有测量函数的演化,而是近似在由有限组测量函数张成的不变子空间上描述系统的演化。一个Koopman不变子空间被定义为一组函数[math]\displaystyle{ {g_1, g_2, \ldots, g_p} }[/math]的张成空间,如果该子空间中的所有函数[math]\displaystyle{ g }[/math]都满足
[math]\displaystyle{ g = \alpha_1 g_1 + \alpha_2 g_2 + \cdots + \alpha_p g_p }[/math]
在经过Koopman算子[math]\displaystyle{ \mathcal{K} }[/math]作用后,仍然留在该子空间:
[math]\displaystyle{ \mathcal{K}g = \beta_1 g_1 + \beta_2 g_2 + \cdots + \beta_p g_p }[/math]
将Koopman算子限制在由有限个函数[math]\displaystyle{ \{g_j\}_{j=1}^p }[/math]张成的不变子空间上,可以获得它的有限维矩阵表示。矩阵[math]\displaystyle{ \mathbf{K} }[/math]作用在[math]\displaystyle{ \mathbb{R}^p }[/math]上的向量空间,其坐标由各个[math]\displaystyle{ g_j(\mathbf{x}) }[/math]的取值给定。这将诱导出一个有限维的线性系统。
Koopman算子的任意有限组特征函数都将张成一个不变子空间。把这些特征函数作为系统的“本征坐标”是Koopman分析中很重要的一步,因为沿这些特征函数方向,系统动力学本质上线性化。实际操作中,通常只能识别一个近似不变子空间,由一组函数[math]\displaystyle{ \{g_j\}_{j=1}^p }[/math]张成,并且每个函数[math]\displaystyle{ g_j }[/math]都可以由有限组特征函数近似表示[math]\displaystyle{ g_j \approx \sum_{k=1}^p v_{jk} \varphi_k }[/math]。
Koopman算子应用的简单案例
数据驱动算法
动力学模式分解(DMD)
动力学模式分解是对Koopman模式分解的一种近似。这意味着,DMD的特征值将近似Koopman算子的特征值,DMD中的模式将近似Koopman算子的模式,DMD中的振幅将近似Koopman算子特征函数在初始条件下的取值。
扩展DMD
残差DMD
核DMD
基于神经网络的DMD
Hankel矩阵
与其他算子的关系
PF算子
Lie算子
算子[math]\displaystyle{ \mathcal{L} }[/math]被称为Lie算子,因为它就是沿着向量场[math]\displaystyle{ \mathbf{f}(\mathbf{x}) }[/math]对[math]\displaystyle{ g }[/math]的Lie导数,当动力学由[math]\displaystyle{ (1.1) }[/math]给出时。这可以通过对[math]\displaystyle{ g(\mathbf{x}) }[/math]的时间导数应用链式法则得到:
[math]\displaystyle{ \frac{d}{dt}g(\mathbf{x}(t)) = \nabla g \cdot \dot{\mathbf{x}}(t) = \nabla g \cdot \mathbf{f}(\mathbf{x}(t)) }[/math] 与
[math]\displaystyle{ \frac{d}{dt}g(\mathbf{x}(t)) = \lim_{\tau \to 0} \frac{g(\mathbf{x}(t + \tau)) - g(\mathbf{x}(t))}{\tau} = \mathcal{L}(g(\mathbf{x}(t))) }[/math] 联立起来,可以得到:
[math]\displaystyle{ \mathcal{L}g = \nabla g \cdot \mathbf{f} }[/math]
Lie算子的伴随算子被称为Liouville算子,特别是在哈密顿动力系统中。而Koopman算子的伴随算子是Perron-Frobenius算子。在许多方面,动力系统的算子理论框架有两种对偶的观点,分别对应Koopman算子和Perron-Frobenius算子。对于[math]\displaystyle{ \mathcal{L} }[/math]的特征函数而言,对应的等价关系是如下的偏微分方程:
[math]\displaystyle{ \nabla \varphi(\mathbf{x}) \cdot \mathbf{f}(\mathbf{x}) = \lambda \varphi(\mathbf{x}) . }[/math]
利用这个偏微分方程,可以通过求解Laurent级数或通过数据回归来近似特征函数。这一表述假设系统动力学既是连续的也是可微的。
参考文献
- ↑ Koopman, B. O. (1931). Hamiltonian Systems and Transformation in Hilbert Space. Proceedings of the National Academy of Sciences, 17(5), 315–318. https://doi.org/10.1073/pnas.17.5.315
- ↑ 2.0 2.1 Koopman, B. O., & Neumann, J. V. (1932). Dynamical Systems of Continuous Spectra. Proceedings of the National Academy of Sciences, 18(3), 255–263. https://doi.org/10.1073/pnas.18.3.255
- ↑ Brunton, S. L., Budišić, M., Kaiser, E., & Kutz, J. N. (2022). Modern Koopman Theory for Dynamical Systems. SIAM Review, 64(2), 229–340. https://doi.org/10.1137/21M1401243
- ↑ E. Bollt, Geometric considerations of a good dictionary for Koopman analysis of dynamical systems: Cardinality, ``primary eigenfunction,"" and efficient representation, Comm. Nonlinear Sci. Numer. Simul., 100 (2021), art. 105833. (Cited on pp. 242, 276)
- ↑ I. Mezic\', Spectral properties of dynamical systems, model reduction and decompositions, Nonlinear Dynam., 41 (2005), pp. 309--325. (Cited on pp. 231, 244, 246, 273, 289, 292)