| 第244行: |
第244行: |
| | | | |
| | 动力学模式分解是对Koopman模式分解的一种近似。这意味着,DMD的特征值将近似Koopman算子的特征值,DMD中的模式将近似Koopman算子的模式,DMD中的振幅将近似Koopman算子特征函数在初始条件下的取值。 | | 动力学模式分解是对Koopman模式分解的一种近似。这意味着,DMD的特征值将近似Koopman算子的特征值,DMD中的模式将近似Koopman算子的模式,DMD中的振幅将近似Koopman算子特征函数在初始条件下的取值。 |
| − |
| |
| − | \documentclass[12pt]{article}
| |
| − | \usepackage[utf8]{inputenc}
| |
| − | \usepackage[T1]{fontenc}
| |
| − | \usepackage{amsmath, amssymb, amsthm}
| |
| − | \usepackage{graphicx}
| |
| − | \usepackage{xcolor}
| |
| − | \usepackage{enumitem}
| |
| − | \usepackage[top=2cm, bottom=2cm, left=2cm, right=2cm]{geometry}
| |
| − | \setlength{\parindent}{0pt}
| |
| − | \setlength{\parskip}{1em}
| |
| − | \newcommand{\vecx}{\mathbf{x}}
| |
| − | \newcommand{\matA}{\mathbf{A}}
| |
| − | \newcommand{\matAt}{\tilde{\mathbf{A}}}
| |
| − | \newcommand{\matU}{\mathbf{U}}
| |
| − | \newcommand{\matV}{\mathbf{V}}
| |
| − | \newcommand{\matS}{\mathbf{\Sigma}}
| |
| − | \newcommand{\matPhi}{\mathbf{\Phi}}
| |
| − | \newcommand{\matW}{\mathbf{W}}
| |
| − | \newcommand{\matL}{\mathbf{\Lambda}}
| |
| − | \newcommand{\matX}{\mathbf{X}}
| |
| − | \newcommand{\matXp}{\mathbf{X'}}
| |
| − | \newcommand{\hermitian}{^*}
| |
| − |
| |
| − | \title{动态模分解 (DMD) 算法详解 \\ {\large 基于 Koopman 理论}}
| |
| − | \author{小白指南}
| |
| − | \date{}
| |
| − |
| |
| − | \begin{document}
| |
| − |
| |
| − | \maketitle
| |
| − |
| |
| − | \section{核心思想:Koopman 算子}
| |
| − |
| |
| − | Koopman 算子提供了一个分析非线性动力学的革命性视角:
| |
| − |
| |
| − | \begin{itemize}
| |
| − | \item \textbf{传统视角:} 直接观察系统状态 $\vecx(t)$ 的演化,其动力学通常是非线性的:$\vecx_{k+1} = f(\vecx_k)$。
| |
| − | \item \textbf{Koopman 视角:} 不直接看状态本身,而是去观察系统的\textbf{观测函数} $g(\vecx)$。在这个由观测函数张成的无限维空间上,系统的演化是\textbf{线性的},由一个线性算子 $\mathcal{K}$(即 Koopman 算子)描述:
| |
| − | \[
| |
| − | \mathcal{K} g(\vecx_k) = g(f(\vecx_k)) = g(\vecx_{k+1})
| |
| − | \]
| |
| − | \end{itemize}
| |
| − |
| |
| − | 动态模分解 (DMD) 是 Koopman 算子的一种数据驱动的、有限维近似方法。
| |
| − |
| |
| − | \section{DMD 算法详细步骤}
| |
| − |
| |
| − | 假设我们有一系列按时间排列的数据快照 $\{\vecx_1, \vecx_2, \dots, \vecx_{m+1}\}$,其中 $\vecx_k \in \mathbb{R}^n$。目标是找到一个矩阵 $\matA$ 使得 $\vecx_{k+1} \approx \matA \vecx_k$。
| |
| − |
| |
| − | \subsection{步骤 1:组建数据矩阵}
| |
| − | 构建两个数据矩阵:
| |
| − | \[
| |
| − | \matX = [\vecx_1\ \vecx_2\ \cdots\ \vecx_m], \quad \matXp = [\vecx_2\ \vecx_3\ \cdots\ \vecx_{m+1}]
| |
| − | \]
| |
| − | 目标关系为:
| |
| − | \[
| |
| − | \matXp \approx \matA \matX
| |
| − | \]
| |
| − |
| |
| − | \subsection{步骤 2:奇异值分解 (SVD)}
| |
| − | 对矩阵 $\matX$ 进行截断的 SVD(取秩 $r$):
| |
| − | \[
| |
| − | \matX \approx \matU_r \matS_r \matV_r\hermitian
| |
| − | \]
| |
| − | 其中 $\matU_r \in \mathbb{R}^{n \times r}$, $\matS_r \in \mathbb{R}^{r \times r}$, $\matV_r \in \mathbb{R}^{m \times r}$,且 $\matU_r\hermitian \matU_r = \matV_r\hermitian \matV_r = \mathbf{I}_r$。
| |
| − |
| |
| − | \subsection{步骤 3:在降维空间计算 $\matAt$}
| |
| − | 将高维算子 $\matA$ 投影到 SVD 得到的低维空间上,得到简化算子 $\matAt$:
| |
| − | \[
| |
| − | \matAt = \matU_r\hermitian \matA \matU_r = \matU_r\hermitian \matXp \matV_r \matS_r^{-1}
| |
| − | \]
| |
| − | $\matAt \in \mathbb{R}^{r \times r}$ 是 $\matA$ 的低秩近似。
| |
| − |
| |
| − | \subsection{步骤 4:特征分解}
| |
| − | 求解简化系统 $\matAt$ 的特征值和特征向量:
| |
| − | \[
| |
| − | \matAt \matW = \matW \matL
| |
| − | \]
| |
| − | 其中 $\matL$ 是对角矩阵,其对角线元素为特征值 $\lambda_i$,$\matW$ 的列是对应的特征向量。
| |
| − |
| |
| − | \subsection{步骤 5:重建 DMD 模式}
| |
| − | 将降维空间的特征向量 $\matW$ 映射回原始状态空间,得到 DMD 模式 $\matPhi$:
| |
| − | \[
| |
| − | \matPhi = \matXp \matV_r \matS_r^{-1} \matW
| |
| − | \]
| |
| − | $\matPhi$ 的每一列是一个 DMD 模式,代表了数据中一种特定的空间结构。
| |
| − |
| |
| − | \subsection{步骤 6:预测与重构}
| |
| − | 任何时刻的状态可由 DMD 模式的线性组合来重构:
| |
| − | \[
| |
| − | \vecx_k \approx \matPhi \matL^{k-1} \vecb
| |
| − | \]
| |
| − | 其中振幅向量 $\vecb$ 由初始条件确定:$\vecb = \matPhi^{\dagger} \vecx_1$($^{\dagger}$ 表示 Moore-Penrose 伪逆)。
| |
| − |
| |
| − | \section{简单示例:叠加正弦波}
| |
| − |
| |
| − | 考虑一个一维信号,由两个衰减正弦波叠加而成:
| |
| − | \[
| |
| − | x(t) = 2 e^{-0.1 t} \sin(2\pi \cdot 1 \cdot t) + 0.5 e^{-0.5 t} \sin(2\pi \cdot 5 \cdot t)
| |
| − | \
| |
| | | | |
| | ==扩展DMD== | | ==扩展DMD== |