SoftwareX (Dec 2024)
VarProDMD: Solving Variable Projection for the Dynamic Mode Decomposition with SciPy’s optimization suite
Abstract
The Dynamic Mode Decomposition is a widely used tool for analysis in various scientific fields ranging from plasma physics to robotics, which decomposes high-dimensional signals into interpretable quantities. It reduces the dimensionality of a dynamic system while preserving the complex behavior. The identified quantities then can be used to perform a simulation (inter- and extrapolation) efficiently. The traditional Dynamic Mode Decomposition requires data to be sampled at a constant rate. Measurements however can experience delays or jitter. Due to the structure of the classic Dynamic Mode Decomposition, inter- and extrapolation at specific continuous timesteps become intractable. The Variable Projection method, a nonlinear optimization scheme that splits linear from nonlinear parameters for optimization, relaxes the fixed sampling rate requirement. Thus, the measurements can arrive at any time step. The available Python library implements a variant of the Levenberg–Marquardt optimizer for the Variable Projection Method. The optimization procedure uses a complex residual function since the measurements can incorporate complex numbers. Python’s available optimization suites require real, analytic functions. We reformulate the problem to utilize the available optimizers to perform Variable Projection within the Dynamic Mode Decomposition framework, allowing for faster run times w.r.t. the Python implementation in most cases. A preselection scheme on the measurements can enhance overall computational efficiency while maintaining the signal reconstruction capability.