scipy.linalg.
solve_sylvester#
- scipy.linalg.solve_sylvester(a, b, q)[原始碼]#
計算 Sylvester 方程式 \(AX + XB = Q\) 的解 (X)。
- 參數:
- a(M, M) array_like
Sylvester 方程式的領先矩陣
- b(N, N) array_like
Sylvester 方程式的尾隨矩陣
- q(M, N) array_like
右側項
- 返回:
- 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、b 和 q,求解 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