solve_sylvester — SciPy v1.15.2 Manual (original) (raw)
scipy.linalg.
scipy.linalg.solve_sylvester(a, b, q)[source]#
Computes a solution (X) to the Sylvester equation \(AX + XB = Q\).
Parameters:
a(M, M) array_like
Leading matrix of the Sylvester equation
b(N, N) array_like
Trailing matrix of the Sylvester equation
q(M, N) array_like
Right-hand side
Returns:
x(M, N) ndarray
The solution to the Sylvester equation.
Raises:
LinAlgError
If solution was not found
Notes
Computes a solution to the Sylvester matrix equation via the Bartels- Stewart algorithm. The A and B matrices first undergo Schur decompositions. The resulting matrices are used to construct an alternative Sylvester equation (RY + YS^T = F
) where the R and S matrices are in quasi-triangular form (or, when R, S or F are complex, triangular form). The simplified equation is then solved using*TRSYL
from LAPACK directly.
Added in version 0.11.0.
Examples
Given a, b, and q solve for x:
import numpy as np from scipy import linalg a = np.array([[-3, -2, 0], [-1, -1, 3], [3, -5, -1]]) b = np.array([[1]]) q = np.array([[1],[2],[3]]) x = linalg.solve_sylvester(a, b, q) x array([[ 0.0625], [-0.5625], [ 0.6875]]) np.allclose(a.dot(x) + x.dot(b), q) True