scipy.linalg.

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 *TRSYL von 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