pymor.algorithms.sylvester

Module Contents

pymor.algorithms.sylvester.solve_sylv_schur(A, Ar, E=None, Er=None, B=None, Br=None, C=None, Cr=None, shifted_system_solver=None)[source]

Solve Sylvester equation by Schur decomposition.

Solves Sylvester equation

\[A V E_r^T + E V A_r^T + B B_r^T = 0\]

or

\[A^T W E_r + E^T W A_r + C^T C_r = 0\]

or both using (generalized) Schur decomposition (Algorithms 3 and 4 in [BKohlerS11]), if the necessary parameters are given.

Parameters:
  • A – Real Operator.

  • Ar – Real Operator. It is converted into a NumPy array using to_matrix.

  • E – Real Operator or None (then assumed to be the identity).

  • Er – Real Operator or None (then assumed to be the identity). It is converted into a NumPy array using to_matrix.

  • B – Real Operator or None.

  • Br – Real Operator or None. It is assumed that Br.range.from_numpy is implemented.

  • C – Real Operator or None.

  • Cr – Real Operator or None. It is assumed that Cr.source.from_numpy is implemented.

  • shifted_system_solver – The Solver for the shifted systems.

Returns:

  • V – Returned if B and Br are given, VectorArray from A.source.

  • W – Returned if C and Cr are given, VectorArray from A.source.

Raises:

ValueError – If V and W cannot be returned.