solve_sylvester#
- scipy.linalg.solve_sylvester(a, b, q)[Quelle]#
Berechnet eine Lösung (X) für die Sylvester-Gleichung \(AX + XB = Q\).
Die Dokumentation wurde unter der Annahme verfasst, dass die Array-Argumente bestimmte „Kern“-Formen haben. Array-Argumente dieser Funktion können jedoch zusätzliche „Batch“-Dimensionen vorangestellt haben. In diesem Fall wird das Array als Stapel von niedrigdimensionalen Schnitten behandelt; siehe Gestapelte lineare Operationen für Details.
- Parameter:
- a(M, M) array_like
Führende Matrix der Sylvester-Gleichung
- b(N, N) array_like
Nachfolgende Matrix der Sylvester-Gleichung
- q(M, N) array_like
Rechte Seite
- Rückgabe:
- x(M, N) ndarray
Die Lösung der Sylvester-Gleichung.
- Löst aus:
- LinAlgError
Wenn keine Lösung gefunden wurde
Hinweise
Berechnet eine Lösung für die Sylvester-Matrixgleichung mithilfe des Bartels-Stewart-Algorithmus. Die Matrizen A und B durchlaufen zunächst Schur-Zerlegungen. Die resultierenden Matrizen werden verwendet, um eine alternative Sylvester-Gleichung (
RY + YS^T = F) zu konstruieren, bei der die Matrizen R und S in quasi-dreieckiger Form vorliegen (oder, wenn R, S oder F komplex sind, in dreieckiger Form). Die vereinfachte Gleichung wird dann direkt mit*TRSYLvon LAPACK gelöst.Hinzugefügt in Version 0.11.0.
Beispiele
Gegeben a, b und q lösen Sie nach 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