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_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_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 orNone
.B – The operator B as a
VectorArray
fromA.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
fromA.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.