pymor.algorithms.lradi

Module Contents

pymor.algorithms.lradi.cycle_shifts(A, E, V, Z, prev_shifts, shift_options)[source]

Return previously computed shifts.

pymor.algorithms.lradi.lyap_lrcf_solver_options(lradi_tol=1e-10, lradi_maxiter=500, lradi_shifts='projection_shifts', projection_shifts_init_maxiter=20, projection_shifts_init_seed=None, projection_shifts_subspace_columns=6, wachspress_large_ritz_num=50, wachspress_small_ritz_num=25, wachspress_tol=1e-10)[source]

Return available Lyapunov solvers with default options.

Parameters

lradi_tol

See solve_lyap_lrcf.

lradi_maxiter

See solve_lyap_lrcf.

lradi_shifts

See solve_lyap_lrcf.

projection_shifts_init_maxiter

See projection_shifts_init.

projection_shifts_init_seed

See projection_shifts_init.

projection_shifts_subspace_columns

See projection_shifts.

wachspress_large_ritz_num

See wachspress_shifts_init.

wachspress_small_ritz_num

See wachspress_shifts_init.

wachspress_tol

See wachspress_shifts_init.

Returns

A dict of available solvers with default solver options.

pymor.algorithms.lradi.projection_shifts(A, E, V, Z, prev_shifts, shift_options)[source]

Find further projection shifts.

Uses Galerkin projection on spaces spanned by LR-ADI iterates. See [Kurschner16], pp. 92-95.

Parameters

A

The Operator A from the corresponding Lyapunov equation.

E

The Operator E from the corresponding Lyapunov equation.

V

A VectorArray representing the currently computed iterate.

Z

A VectorArray representing the current approximate solution.

prev_shifts

A NumPy array containing the set of all previously used shift parameters.

shift_options

The shift options to use (see lyap_lrcf_solver_options).

Returns

shifts

A NumPy array containing a set of stable shift parameters.

pymor.algorithms.lradi.projection_shifts_init(A, E, B, shift_options)[source]

Find starting projection shifts.

Uses Galerkin projection on the space spanned by the right-hand side if it produces stable shifts. Otherwise, uses a randomly generated subspace. See [Kurschner16], pp. 92-95.

Parameters

A

The Operator A from the corresponding Lyapunov equation.

E

The Operator E from the corresponding Lyapunov equation.

B

The VectorArray B from the corresponding Lyapunov equation.

shift_options

The shift options to use (see lyap_lrcf_solver_options).

Returns

shifts

A NumPy array containing a set of stable shift parameters.

pymor.algorithms.lradi.solve_lyap_lrcf(A, E, B, trans=False, cont_time=True, options=None)[source]

Compute an approximate low-rank solution of a Lyapunov equation.

See

for a general description.

This function uses the low-rank ADI iteration as described in Algorithm 4.3 in [Kurschner16].

Parameters

A

The non-parametric Operator A.

E

The non-parametric Operator E or None.

B

The operator B as a VectorArray from A.source.

trans

Whether the first Operator in the Lyapunov equation is transposed.

cont_time

Whether the continuous- or discrete-time Lyapunov equation is solved. Only the continuous-time case is implemented.

options

The solver options to use (see lyap_lrcf_solver_options).

Returns

Z

Low-rank Cholesky factor of the Lyapunov equation solution, VectorArray from A.source.

pymor.algorithms.lradi.wachspress_shifts_init(A, E, B, shift_options)[source]

Compute optimal shifts for symmetric matrices.

This method computes optimal shift parameters for the LR-ADI iteration based on Wachspress’ method which is discussed in [LW02]. This implementation assumes that \(A\) and \(E\) are both real and symmetric.

Parameters

A

The Operator A from the corresponding Lyapunov equation.

E

The Operator E from the corresponding Lyapunov equation.

B

The VectorArray B from the corresponding Lyapunov equation.

shift_options

The shift options to use (see lyap_lrcf_solver_options).

Returns

shifts

A NumPy array containing a set of stable shift parameters.