ordqz#
- scipy.linalg.ordqz(A, B, sort='lhp', output='real', overwrite_a=False, overwrite_b=False, check_finite=True)[Quelle]#
QZ-Zerlegung für ein Matrizenpaar mit Neuordnung.
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(N, N) array_like
Zu zerlegende 2D-Array
- B(N, N) array_like
Zu zerlegende 2D-Array
- sort{callable, ‘lhp’, ‘rhp’, ‘iuc’, ‘ouc’}, optional
Gibt an, ob die oberen Eigenwerte sortiert werden sollen. Ein aufrufbares Objekt kann übergeben werden, das bei einem geordneten Paar
(alpha, beta), das den Eigenwertx = (alpha/beta)repräsentiert, einen booleschen Wert zurückgibt, der angibt, ob der Eigenwert in die obere linke Ecke sortiert werden soll (True). Für reelle Matrizenpaare istbetareell, währendalphakomplex sein kann. Für komplexe Matrizenpaare können sowohlalphaals auchbetakomplex sein. Das aufrufbare Objekt muss ein NumPy-Array akzeptieren können. Alternativ können Zeichenkettenparameter verwendet werden.‘lhp’ Linke Halbebene (x.real < 0.0)
‘rhp’ Rechte Halbebene (x.real > 0.0)
‘iuc’ Innerhalb des Einheitskreises (x*x.conjugate() < 1.0)
‘ouc’ Außerhalb des Einheitskreises (x*x.conjugate() > 1.0)
Bei den vordefinierten Sortierfunktionen wird ein unendlicher Eigenwert (d.h.
alpha != 0undbeta = 0) weder in der linken noch in der rechten Halbebene betrachtet, aber er wird als außerhalb des Einheitskreises liegend betrachtet. Für den Eigenwert(alpha, beta) = (0, 0)geben alle vordefinierten Sortierfunktionen False zurück.- outputstr {‘real’,’complex’}, optional
Konstruiert die reelle oder komplexe QZ-Zerlegung für reelle Matrizen. Standard ist ‘real’.
- overwrite_abool, optional
Wenn True, wird der Inhalt von A überschrieben.
- overwrite_bbool, optional
Wenn True, wird der Inhalt von B überschrieben.
- check_finitebool, optional
Wenn True, werden die Elemente von A und B auf endliche Zahlen geprüft. Wenn False, wird keine Prüfung durchgeführt und die Matrix wird an den zugrundeliegenden Algorithmus weitergegeben.
- Rückgabe:
- AA(N, N) ndarray
Generalisierte Schur-Form von A.
- BB(N, N) ndarray
Generalisierte Schur-Form von B.
- alpha(N,) ndarray
alpha = alphar + alphai * 1j. Siehe Hinweise.
- beta(N,) ndarray
Siehe Hinweise.
- Q(N, N) ndarray
Die linken Schur-Vektoren.
- Z(N, N) ndarray
Die rechten Schur-Vektoren.
Siehe auch
Hinweise
Bei Beendigung sind
(ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,Ndie verallgemeinerten Eigenwerte.ALPHAR(j) + ALPHAI(j)*iundBETA(j),j=1,...,Nsind die Diagonalen der komplexen Schur-Form (S,T), die sich ergeben würden, wenn die 2x2-Diagonalblöcke der reellen verallgemeinerten Schur-Form von (A,B) durch komplexe unitäre Transformationen weiter zu Dreiecksformen reduziert würden. Wenn ALPHAI(j) Null ist, dann ist der j-te Eigenwert reell; wenn positiv, dann sind der j-te und der (j+1)-te Eigenwert ein komplexes konjugiertes Paar, mitALPHAI(j+1)negativ.Hinzugefügt in Version 0.17.0.
Beispiele
>>> import numpy as np >>> from scipy.linalg import ordqz >>> A = np.array([[2, 5, 8, 7], [5, 2, 2, 8], [7, 5, 6, 6], [5, 4, 4, 8]]) >>> B = np.array([[0, 6, 0, 0], [5, 0, 2, 1], [5, 2, 6, 6], [4, 7, 7, 7]]) >>> AA, BB, alpha, beta, Q, Z = ordqz(A, B, sort='lhp')
Da wir für Eigenwerte in der linken Halbebene sortiert haben, kommen negative zuerst
>>> (alpha/beta).real < 0 array([ True, True, False, False], dtype=bool)