1. 引言
针对非线性动态问题,传统的数值方法是采用迭代法求解,例如:比卡迭代法(Piccard iteration),牛顿迭代法(Newton method)。针对复杂的非线性问题采用迭代法求解需要大量的计算资源,然而Koopman算子理论[1]可以将有限维空间中的非线性问题转化为无穷维空间中的线性问题。利用Koopman算子的三元组序列(特征值、特征向量、模态)可以计算动态系统在任意时刻的状态,无须求解非线性问题。为了实现数值计算,可在有限维的观测函数空间中应用Koopman算子。动态模态分解(Dynamic mode decomposition: DMD)方法起源于流体动力学领域,可以将复杂流体分解为基于时空结构的简单表达。DMD是一种无方程、数据驱动的方法,从快照数据中提取复杂系统的时空结构,从而实现对状态的预测。这使得动态模态分解方法受到广泛关注。Rowley等人[2] [3]证明在满足一定条件下,动态模态分解方法可以近似计算Koopman算子的三元组序列。本文将详细介绍动态模态分解方法在非线性动态问题中的应用。
2. 预备知识
针对非线性动态系统:
(1)
其中
代表状态空间,f是
的一个非线性映射。
对任意的标量值观测函数
,Koopman算子
的定义如下:
(2)
Koopman算子
是一个无穷维的算子,它作用在观测函数g上,其中
,
是一个希尔伯空间。Koopman算子
是线性的,即
在Koopman算子的作用下,有限维的非线性动态系统(1)转化为无穷维的线性系统(2)。显然数值计算无穷维的算子
是不可能的,为了实现数值计算,我们在有限维的不变子空间中考虑Koopman算子。
设
是Koopman算子的一个不变子空间,即
其中,
是由观测函数
张成的空间。令
是一个向量值观测函数,则Koopman算子作用在
上,有
对矩阵
进行特征分解,可得
其中,
和
分别是矩阵
对应于特征值
的左特征向量和右特征向量。
不妨设
和矩阵
有N个线性无关的特征向量,则对任意的观测函数
,有
其中
。注意到
所以
是Koopman算子
的特征函数。对于一个时间序列,我们有
(3)
在方程(3)上作用Koopman算子可得
因此,在方程(3)上重复作用Koopman算子可得
(4)
利用方程(4)可以计算动态系统在任意时刻的状态,无须求解非线性问题(1)。三元组序列
分别为Koopman算子的特征值、特征函数和模态。由方程(4)可知,针对非线性问题,只需计算Koopman算子的三元组序列即可。对于非线性问题(1),我们关心的是状态变量x随时间变化的行为,而方程(4)给出的是观测函数
随时间的变化。实际上,我们可以通过多种方式从观测函数
回到状态x,例如:
或者
等等。动态模态分解方法是一种数值求解Koopman算子三元组序列
的方法,这样便可以通过Koopman算子的三元组序列信息得到状态变量随时间的变化从而无需求解非线性问题(1)。
3. 动态模态分解方法
利用数据
和构成Koopman算子不变子空间的函数
,通过动态模态分解方法数值求解Koopman算子的特征值和特征向量。假设我们通过实验获取快照序列数据
,给定观测函数
,定义以下两个数据矩阵
和
:
定义矩阵
为:
其中
是矩阵
的Moore-Penrose伪逆。矩阵
的特征值和特征向量称为动态模态分解(DMD)的特征值和模态。
通常情况下,由于Koopman算子不变子空间的维度N较高,导致直接计算矩阵
的特征值和特征向量计算成本昂贵。Tu等人[4]提出Exact DMD方法,通过计算矩阵
在一个低维空间中投影的特征值和特征向量,从而得到矩阵
精确的非零特征值和特征向量。
Exact DMD方法的主要步骤如下:
1. 首先,对矩阵
进行奇异值分解:
其中
,
,
,r为截断秩,利用硬阈值方法[3]选取。
的列向量为左奇异向量,是本征正交分解(POD)的模态。
2. 其次,计算矩阵
在本征正交分解模态下的投影矩阵
,其中
3. 再次,对矩阵
进行特征分解,得到特征值和左、右特征向量,
其中矩阵
的列向量对应于矩阵
的右特征向量,矩阵
的列向量对应于矩阵
的左特征向量,矩阵
是一个对角矩阵,对角线元素为矩阵
的特征值
。
4. 然后,从矩阵
,
和
中得到矩阵
的特征向量和特征值。实际上,
也是矩阵
的特征值,矩阵
的特征向量计算方式如下:
其中矩阵
,矩阵
的列向量对应于矩阵
的右特征向量,矩阵
的列向量对应于矩阵
的左特征向量。
5. 接着,对未来观测状态的预测可以通过以下公式得到:
(5)
其中
。
6. 最后,返回到对状态变量x的预测:
(6)
动态模态分解方法通过数据实现了非线性问题的预测,无需求解原来的非线性方程(1),同时也不需要知道方程(1)的具体形式。只需要代入公式(5)和(6)中,便可以知道在任意时刻的解。而利用传统数值方法求解非线性问题时,例如牛顿迭代法,我们需要知道方程(1)的具体形式,同时还需要采用迭代的方式求解出来第
时刻的解,而第
时刻的解又依赖于第
时刻的解,也需迭代求解。例如,对于求解非线性问题
,利用牛顿迭代法求解时,我们需要通过以下的迭代方式得到
:
(a) 给定初始值
以及容忍度
(b) 计算
(c) 当
时,令
代入步骤(b)继续计算,直到
停止,此时令
,即为非线性问题
在第
时刻的解
。
我们通过下面的例子来阐述Koopman算子是如何把非线性问题转化为线性问题,并展示利用动态模态分解方法求解非线性问题的数值结果。
例1 考虑如下的动态系统:
(7)
对于上述动态系统(7),易知
张成了Koopman算子的不变子空间,这是因为
(8)
这样将非线性动态系统(7)转换为线性问题(8),之后利用动态模态分解方法求解得到x和y在任意时刻的状态,无需求解原非线性系统(7)。我们用此例说明了Koopman算子可以把非线性问题转化为线性问题。接下来,我们利用动态模态分解方法实现对x和y随时间变化的模拟。在动态模态分解方法中,我们可以不知道方程(7)和方程(8)的具体形式,仅仅只需要状态
在不同时刻的值,从而形成两个数据矩阵
和
:
,
将数据矩阵
和
输入到Exact DMD算法中,最后利用公式(5)可得状态
在不同时刻的值,进而可知x和y在不同时刻的值。图1展示了x随时间变化的轨迹,图2展示了y随时间变化的轨迹。在这两幅图中横坐标代表第i个时刻,纵坐标表示x (或者y)在第i个时刻的取值。从图1和图2可以看出,动态模态分解方法求解非线性问题能够得到比较精确的近似解。
Figure 1. Trajectory of x over time
图1. x随时间变化的轨迹图
Figure 2. Trajectory of y over time
图2. y随时间变化的轨迹图
4. 结束语
数学的多种求解方法培养了学生的发散性思维,同时也激发了学生从不同角度探讨问题的兴趣。良好的数学思维对于学生各方面的学习都起到较为重要的作用。因此,培养学生从不同角度思考问题可以提高学生的思维能力。
致 谢
在此对江苏省基础研究计划自然科学基金——青年基金项目和南京邮电大学引进人才科研启动基金项目(自然科学)的资助表示衷心感谢!
基金项目
1) 江苏省基础研究计划自然科学基金——青年基金项目(No. BK20230346);
2) 南京邮电大学引进人才科研启动基金项目(自然科学) (No. NY222063)。