# Koopman Inference

## Algorithms

`DataDrivenDiffEq.DMDPINV`

— Type`mutable struct DMDPINV <: DataDrivenDiffEq.AbstractKoopmanAlgorithm`

Approximates the Koopman operator `K`

based on

`K = Y / X`

where `Y`

and `X`

are data matrices. Returns a `Eigen`

factorization of the operator.

**Fields**

**Signatures**

`DataDrivenDiffEq.DMDSVD`

— Type`mutable struct DMDSVD{T} <: DataDrivenDiffEq.AbstractKoopmanAlgorithm`

Approximates the Koopman operator `K`

based on the singular value decomposition of `X`

such that:

`K = Y*V*Σ*U'`

where `Y`

and `X = U*Σ*V'`

are data matrices. The singular value decomposition is truncated via the `truncation`

parameter, which can either be an `Int`

indiciating an index based truncation or a `Real`

indiciating a tolerance based truncation. Returns a `Eigen`

factorization of the operator.

**Fields**

`truncation`

Indiciates the truncation

**Signatures**

`DataDrivenDiffEq.TOTALDMD`

— Type`mutable struct TOTALDMD{R, A} <: DataDrivenDiffEq.AbstractKoopmanAlgorithm`

Approximates the Koopman operator `K`

with the algorithm `alg`

over the rank-reduced data matrices `Xᵣ = X Qᵣ`

and `Yᵣ = Y Qᵣ`

, where `Qᵣ`

originates from the singular value decomposition of the joint data `Z = [X; Y]`

. Based on this paper.

If `rtol`

∈ (0, 1) is given, the singular value decomposition is reduced to include only entries bigger than `rtol*maximum(Σ)`

. If `rtol`

is an integer, the reduced SVD up to `rtol`

is used for computation.

**Fields**

`truncation`

`alg`

**Signatures**

`DataDrivenDiffEq.FBDMD`

— Type`mutable struct FBDMD{R} <: DataDrivenDiffEq.AbstractKoopmanAlgorithm`

Approximates the Koopman operator `K`

via the forward-backward DMD. It is assumed that `K = sqrt(K₁*inv(K₂))`

, where `K₁`

is the approximation via forward and `K₂`

via DMDSVD. Based on this paper.

If `truncation`

∈ (0, 1) is given, the singular value decomposition is reduced to include only entries bigger than `truncation*maximum(Σ)`

. If `truncation`

is an integer, the reduced SVD up to `truncation`

is used for computation.

**Fields**

`alg`

**Signatures**