Skip to content

Lyapunov

Parameters for solving the (discrete-time) Lyapunov equation.

The discrete-time Lyapunov equation (also called Stein equation) arises in the computation of lesser boundary conditions.

This is a matrix equation of the form

\[ \mathbf{A} \mathbf{X} \mathbf{A}^{\dagger} - \mathbf{X} = -\mathbf{Q} \]

algorithm#

algorithm: Literal['spectral', 'doubling'] = 'spectral'

The Lyapunov solver algorithm to be used.

  • "spectral": Uses eigenvalue decomposition to solve the Lyapunov equation. This method is somewhat expensive since a full eigendecomposition is required.

  • "doubling": Uses iterative doubling to solve the Lyapunov equation. This method should converge exponentially, but is theoretically unstable if \(\mathbf{A}\) has eigenvalues outside the unit circle. It is therefore generally recommended to use "spectral" in conjuntion with the memoizer, which will only call the actual Lyapunov solver when the residuals are above the specified tolerances.

reduce_sparsity#

reduce_sparsity: bool = True

Whether to exploit the sparsity of \(\mathbf{A}\) to accelerate the Lyapunov solver.

This is done by removing zero rows and columns from \(\mathbf{A}\), solving the reduced Lyapunov equation, and then expanding the solution back to the original system's size.

assume_constant_sparsity#

assume_constant_sparsity: bool = False

Whether to assume that the sparsity pattern of \(\mathbf{A}\) remains constant between calls to the Lyapunov solver. This is only relevant when the Lyapunov solver is called during the SCBA iterations. In practice, this should always be the case.

If set to True, the sparsity pattern is only computed once during the first SCBA iteration and reused for subsequent iterations.

Warning

There is currently a bug and this parameter should always be set to False.

max_iterations#

max_iterations: PositiveInt = 100

The maximum number of iterations for the "doubling" algorithm.

relative_tol#

relative_tol: PositiveFloat = 0.0001

The relative convergence tolerance for the "doubling" algorithm.

absolute_tol#

absolute_tol: PositiveFloat = 1e-08

The absolute tolerance for the "doubling" algorithm.

num_ref_iterations#

num_ref_iterations: PositiveInt = 2

The number of fixed-point iterations used to refine the solution of the spectral Lyapunov solver.

memoizer#

memoizer: MemoizerConfig

Options for memoizing the solution of the Lyapunov equation.