SINDy

Matthew(讨论 | 贡献)2025年11月19日 (三) 10:12的版本 (→‎算法流程)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

非线性动力学的稀疏识别[1](Sparse Identification of Nonlinear Dynamics, SINDy)是一种用稀疏回归从观测数据中“发现”驱动动力学的少量关键项与系数,从而在高维候选函数空间中得到简洁且具物理解释性的模型,避免过拟合并便于理解系统的本质机制;使用场景包括需要在缺乏明确力学方程时从数据中推断动力学的情形,如非线性振荡、混沌系统、流体涡街、带参数的分支与强外部强迫的场景,以及高维系统在低维子空间的近似描述,甚至可通过时间延迟坐标或降维方法应用于偏微分方程和复杂物理/工程系统的建模与预测。

算法流程

这里,我们考虑形式如下的动力学系统: [math]\displaystyle{ \frac{d}{dt}\mathbf{x}(t)=\mathbf{f}(\mathbf{x}(t)) }[/math]。 向量 [math]\displaystyle{ \mathbf{x}(t)\in\mathbb{R}^{n} }[/math] 表示系统在时间 [math]\displaystyle{ t }[/math] 的状态,函数 [math]\displaystyle{ \mathbf{f}(\mathbf{x}(t)) }[/math] 表示定义系统运动方程的动态约束,例如牛顿第二定律。稍后,动力学将推广为包含参数化、时间依赖和外力的形式。

观测数据的表达形式如下:

[math]\displaystyle{ \begin{bmatrix} x^T(t1) \\ x^T(t2) \\ \vdots \\ x^T(tm) \end{bmatrix} }[/math]

随后,我们构造一个由 X 的列所组成的候选非线性函数库 Θ(X)。例如,Θ(X) 可能由常数、多项式和三角项组成:

[math]\displaystyle{ Θ(X) = \begin{bmatrix} 1 & X & X^{P2} & X^{P3} & \cdots & \sin(X) & \cos(X) & \cdots \end{bmatrix} }[/math]

这里,更高次的多项式记为[math]\displaystyle{ X^{P2}、X^{P3} }[/math] 等,其中[math]\displaystyle{ X^{P2} }[/math] 表示状态的二次非线性项:

[math]\displaystyle{ X^{P2}= \begin{bmatrix} x_1^2(t) & x_1(t)x_2(t) & \cdots & x_n^2(t) \end{bmatrix} }[/math]

每一列的 Θ(X) 都表示 Eq. 1 右端的一个候选函数。由于通常只有少数非线性项在 f 的每一行中起作用,我们通过稀疏回归来确定系数向量 Ξ,从而决定哪些非线性项是活动的: [math]\displaystyle{ X = Θ(X)Ξ }[/math]

应用案例

参考文献

  1. ↑ S. L. Brunton, J. L. Proctor, and J. N. Kutz, Discovering governing equations from data by sparse identification of nonlinear dynamical systems, Proc. Natl. Acad. Sci. USA, 113 (2016), pp. 3932--3937.