scipy.linalg.

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 a

a v[:,i] = w[i] v[:,i]
v.H v    = identity

Für eine reelle symmetrische Matrix a mit 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 Matrix a ist.

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 und eigvals_only=False, dann wird ein zweiter LAPACK-Aufruf (an ?STEIN) verwendet, um die entsprechenden Eigenvektoren zu ermitteln. ‘sterf’ kann nur verwendet werden, wenn eigvals_only=True und select='a'. ‘stev’ kann nur verwendet werden, wenn select='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 Spalte v[:,i]. Wird nur zurückgegeben, wenn eigvals_only=False.

Löst aus:
LinAlgError

Wenn die Eigenwertberechnung nicht konvergiert.

Siehe auch

eigvalsh_tridiagonal

Eigenwerte von symmetrischen/hermiteschen tridiagonalen Matrizen

eig

Eigenwerte und rechte Eigenvektoren für nicht-symmetrische Arrays

eigh

Eigenwerte und rechte Eigenvektoren für symmetrische/hermitesche Arrays

eig_banded

Eigenwerte und rechte Eigenvektoren für symmetrische/hermitesche bandförmige Matrizen

Hinweise

Diese Funktion nutzt die LAPACK S/DSTEMR Routinen.

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