eigh_tridiagonal#
- scipy.linalg.eigh_tridiagonal(d, e, eigvals_only=False, select='a', select_range=None, check_finite=True, tol=0.0, lapack_driver='auto')[Quelle]#
Löse das Eigenwertproblem für eine reelle symmetrische tridiagonale Matrix.
Finde Eigenwerte w und optional rechte Eigenvektoren v von
aa v[:,i] = w[i] v[:,i] v.H v = identity
Für eine reelle symmetrische Matrix
amit Diagonalelementen d und Nebendiagonalelementen e.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:
- dndarray, shape (ndim,)
Die Diagonalelemente des Arrays.
- endarray, shape (ndim-1,)
Die Nebendiagonalelemente des Arrays.
- eigvals_onlybool, optional
Berechne nur die Eigenwerte und keine Eigenvektoren. (Standard: berechne auch Eigenvektoren)
- select{‘a’, ‘v’, ‘i’}, optional
Welche Eigenwerte berechnet werden sollen
select
berechnet
‘a’
Alle Eigenwerte
‘v’
Eigenwerte im Intervall (min, max]
‘i’
Eigenwerte mit Indizes min <= i <= max
- select_range(min, max), optional
Bereich der ausgewählten Eigenwerte
- 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.
- tolfloat
Die absolute Toleranz, mit der jeder Eigenwert übereinstimmen muss (nur verwendet, wenn ‘stebz’ der lapack_driver ist). Ein Eigenwert (oder eine Gruppe von Eigenwerten) gilt als konvergiert, wenn er in einem Intervall dieser Breite liegt. Wenn <= 0. (Standard), wird der Wert
eps*|a|verwendet, wobei eps die Maschinengenauigkeit ist und|a|die 1-Norm der Matrixaist.- lapack_driverstr
Zu verwendende LAPACK-Funktion, kann sein ‘auto’, ‘stemr’, ‘stebz’, ‘sterf’, ‘stev’, oder ‘stevd’. Wenn ‘auto’ (Standard), wird ‘stevd’ verwendet, wenn
select='a', andernfalls ‘stebz’. Wenn ‘stebz’ zur Ermittlung der Eigenwerte verwendet wird undeigvals_only=False, dann wird ein zweiter LAPACK-Aufruf (an?STEIN) verwendet, um die entsprechenden Eigenvektoren zu ermitteln. ‘sterf’ kann nur verwendet werden, wenneigvals_only=Trueundselect='a'. ‘stev’ kann nur verwendet werden, wennselect='a'.
- Rückgabe:
- w(M,) ndarray
Die Eigenwerte, aufsteigend sortiert, jeder wiederholt entsprechend seiner Vielfachheit.
- v(M, M) ndarray
Der normalisierte Eigenvektor, der dem Eigenwert
w[i]entspricht, ist die Spaltev[:,i]. Wird nur zurückgegeben, wenneigvals_only=False.
- Löst aus:
- LinAlgError
Wenn die Eigenwertberechnung nicht konvergiert.
Siehe auch
eigvalsh_tridiagonalEigenwerte von symmetrischen/hermiteschen tridiagonalen Matrizen
eigEigenwerte und rechte Eigenvektoren für nicht-symmetrische Arrays
eighEigenwerte und rechte Eigenvektoren für symmetrische/hermitesche Arrays
eig_bandedEigenwerte und rechte Eigenvektoren für symmetrische/hermitesche bandförmige Matrizen
Hinweise
Diese Funktion nutzt die LAPACK
S/DSTEMRRoutinen.Beispiele
>>> import numpy as np >>> from scipy.linalg import eigh_tridiagonal >>> d = 3*np.ones(4) >>> e = -1*np.ones(3) >>> w, v = eigh_tridiagonal(d, e) >>> A = np.diag(d) + np.diag(e, k=1) + np.diag(e, k=-1) >>> np.allclose(A @ v - v @ np.diag(w), np.zeros((4, 4))) True