Koopman Operators

DataDrivenDiffEq.LinearKoopmanType
LinearKoopman(K, B, Q, P, discrete)

An approximation of the Koopman operator which is linear in the states.

K is the array representing the operator, B is the (possible present) array representing the influence of exogenous inputs on the evolution.

Q and P are matrices used for updating the operator with new measurements. discrete indicates if the operator is discrete or continuous.

The Koopman operator is callable with the typical signature of f(u,p,t) and f(du,u,p,t), respectively.

Example

k = LinearKoopman([1.0 0; 0 0.3], [], [], [], true)

u = k([2.0; 0.5], nothing, nothing)
du = similar(u)
k(du, u, nothing, nothing)
source
DataDrivenDiffEq.NonlinearKoopmanType
NonlinearKoopman(K, B, C, basis, Q, P, discrete)

An approximation of the Koopman operator which is nonlinear in the states.

K is the array representing the operator, B is the (possible present) array representing the influence of exogenous inputs on the evolution. C is the array mapping from the Koopman space to the original state space. basis is a [Basis]@ref(Basis), mapping the state space to the Koopman space.

Q and P are matrices used for updating the operator with new measurements. discrete indicates if the operator is discrete or continuous.

The Koopman operator is callable with the typical signature of f(u,p,t) and f(du,u,p,t), respectively.

Example

k = EDMD(X, basis)

u = k([2.0; 0.5], nothing, nothing)
du = similar(u)
k(du, u, nothing, nothing)
source

Functions

DataDrivenDiffEq.update!Function
update!(k, X, Y; threshold = eps())

Update the Koopman k given new data X and Y. The operator is updated in place if the L2 error of the prediction exceeds the threshold.

source
update!(k, X, Y; p = [], t = [], threshold = eps())

Update the Koopman k given new data X and Y. The operator is updated in place if the L2 error of the prediction exceeds the threshold.

p and t are the parameters of the basis and the vector of timepoints, if necessary.

source
Missing docstring.

Missing docstring for is_continuous. Check Documenter's build log for details.

Missing docstring.

Missing docstring for updatable. Check Documenter's build log for details.

DataDrivenDiffEq.isstableFunction
isstable(k)

Returns `true` if either:

+ the Koopman operator has just eigenvalues with magnitude less than one or
+ the Koopman generator has just eigenvalues with a negative real part
source
DataDrivenDiffEq.reduce_basisFunction
reduce_basis(k; threshold)

Reduces the basis of the nonlinear Koopman using the 1-norm of each row of the matrix C*K. Rows where the threshold is not reached are deleted.

source