scipy.linalg.

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, wenn calc_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