hessenberg#
- scipy.linalg.hessenberg(a, calc_q=False, overwrite_a=False, check_finite=True)[Quelle]#
Hessenberg-Form einer Matrix berechnen.
Die Hessenberg-Zerlegung ist
A = Q H Q^H
wobei Q unitär/orthogonal und H nur Nullelemente unterhalb der ersten Nebendiagonalen hat.
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
Matrix, die in Hessenberg-Form gebracht werden soll.
- calc_qbool, optional
Ob die Transformationsmatrix berechnet werden soll. Standard ist False.
- overwrite_abool, optional
Ob a überschrieben werden soll; kann die Leistung verbessern. Standard ist False.
- check_finitebool, optional
Ob überprüft werden soll, ob die Eingabematrix nur endliche Zahlen enthält. Das Deaktivieren kann zu einer Leistungssteigerung führen, kann aber zu Problemen (Abstürze, Nichtterminierung) führen, wenn die Eingaben Unendlichkeiten oder NaNs enthalten.
- Rückgabe:
- H(M, M) ndarray
Hessenberg-Form von a.
- Q(M, M) ndarray
Unitäre/orthogonale Ähnlichkeitstransformationsmatrix
A = Q H Q^H. Wird nur zurückgegeben, wenncalc_q=True.
Beispiele
>>> import numpy as np >>> from scipy.linalg import hessenberg >>> A = np.array([[2, 5, 8, 7], [5, 2, 2, 8], [7, 5, 6, 6], [5, 4, 4, 8]]) >>> H, Q = hessenberg(A, calc_q=True) >>> H array([[ 2. , -11.65843866, 1.42005301, 0.25349066], [ -9.94987437, 14.53535354, -5.31022304, 2.43081618], [ 0. , -1.83299243, 0.38969961, -0.51527034], [ 0. , 0. , -3.83189513, 1.07494686]]) >>> np.allclose(Q @ H @ Q.conj().T - A, np.zeros((4, 4))) True