scipy.linalg.

solve_sylvester#

scipy.linalg.solve_sylvester(a, b, q)[源代码]#

计算 Sylvester 方程 \(AX + XB = Q\) 的解 (X)。

参数:
a(M, M) 类似数组

Sylvester 方程的先导矩阵

b(N, N) 类似数组

Sylvester 方程的后导矩阵

q(M, N) 类似数组

右侧

返回:
x(M, N) ndarray

Sylvester 方程的解。

引发:
LinAlgError

如果未找到解

注释

通过 Bartels-Stewart 算法计算 Sylvester 矩阵方程的解。A 和 B 矩阵首先进行 Schur 分解。得到的矩阵用于构建替代 Sylvester 方程 (RY + YS^T = F),其中 R 和 S 矩阵是准三角形式(或者,当 R、S 或 F 是复数时,为三角形式)。然后直接使用 LAPACK 中的 *TRSYL 求解简化的方程。

在 0.11.0 版本中添加。

示例

给定 a, bq,求解 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