eigvalsh#
- scipy.linalg.eigvalsh(a, b=None, *, lower=True, overwrite_a=False, overwrite_b=False, type=1, check_finite=True, subset_by_index=None, subset_by_value=None, driver=None)[Quelle]#
Löst ein Standard- oder verallgemeinertes Eigenwertproblem für eine komplexe hermitische oder reelle symmetrische Matrix.
Berechnet die Eigenwerte-Array
wder Matrixa, wobeibpositiv definit ist, sodass für jeden Eigenwert λ (i-ter Eintrag von w) und seinen Eigenvektor vi (i-te Spalte von v) gilta @ vi = λ * b @ vi vi.conj().T @ a @ vi = λ vi.conj().T @ b @ vi = 1
Bei dem Standardproblem wird angenommen, dass b die Einheitsmatrix ist.
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
Eine komplexe hermitische oder reelle symmetrische Matrix, deren Eigenwerte berechnet werden sollen.
- b(M, M) array_like, optional
Eine komplexe hermitische oder reelle symmetrische, positiv definite Matrix. Wenn weggelassen, wird die Einheitsmatrix angenommen.
- lowerbool, optional
Ob die relevanten Array-Daten aus dem unteren oder oberen Dreieck von
aund gegebenenfallsbstammen. (Standard: lower)- overwrite_abool, optional
Ob die Daten in
aüberschrieben werden sollen (kann die Leistung verbessern). Standard ist False.- overwrite_bbool, optional
Ob die Daten in
büberschrieben werden sollen (kann die Leistung verbessern). Standard ist False.- typeint, optional
Bei verallgemeinerten Problemen gibt dieses Schlüsselwort den zu lösenden Problemtyp für
wundvan (nur die Werte 1, 2, 3 sind als Eingabe möglich).1 => a @ v = w @ b @ v 2 => a @ b @ v = w @ v 3 => b @ a @ v = w @ v
Dieses Schlüsselwort wird bei Standardproblemen ignoriert.
- check_finitebool, optional
Ob überprüft werden soll, ob die Eingabematrizen nur endliche Zahlen enthalten. Das Deaktivieren kann zu einer Leistungssteigerung führen, kann aber zu Problemen (Abstürzen, Nicht-Terminierung) führen, wenn die Eingaben Unendlichkeiten oder NaNs enthalten.
- subset_by_indexiterable, optional
Wenn angegeben, definiert dieses zweielementige Iterable die Start- und Endindizes der gewünschten Eigenwerte (aufsteigend geordnet und 0-indiziert). Um nur die zweitkleinsten bis fünftkleinsten Eigenwerte zurückzugeben, wird
[1, 4]verwendet.[n-3, n-1]gibt die drei größten zurück. Nur verfügbar mit den Treibern "evr", "evx" und "gvx". Die Einträge werden direkt überint()in Ganzzahlen umgewandelt.- subset_by_valueiterable, optional
Wenn angegeben, definiert dieses zweielementige Iterable das halboffene Intervall
(a, b], in dem, falls vorhanden, nur die Eigenwerte zwischen diesen Werten zurückgegeben werden. Nur verfügbar mit den Treibern "evr", "evx" und "gvx". Verwenden Sienp.inffür die nicht eingeschränkten Enden.- driverstr, optional
Definiert, welcher LAPACK-Treiber verwendet werden soll. Gültige Optionen sind "ev", "evd", "evr", "evx" für Standardprobleme und "gv", "gvd", "gvx" für verallgemeinerte Probleme (wenn b nicht None ist). Siehe den Abschnitt "Notes" von
scipy.linalg.eigh.
- Rückgabe:
- w(N,) ndarray
Die N (N<=M) ausgewählten Eigenwerte, in aufsteigender Reihenfolge, jeweils wiederholt entsprechend ihrer Multiplizität.
- Löst aus:
- LinAlgError
Wenn die Eigenwertberechnung nicht konvergiert, ein Fehler aufgetreten ist oder die Matrix b nicht positiv definit ist. Beachten Sie, dass, wenn die Eingabematrizen nicht symmetrisch oder hermitisch sind, keine Fehlermeldung ausgegeben wird, die Ergebnisse jedoch falsch sind.
Siehe auch
eighEigenwerte und rechte Eigenvektoren für symmetrische/hermitesche Arrays
eigvalsEigenwerte von allgemeinen Arrays
eigvals_bandedEigenwerte für symmetrische/hermitesche Bandmatrizen
eigvalsh_tridiagonalEigenwerte von symmetrischen/hermiteschen tridiagonalen Matrizen
Hinweise
Diese Funktion prüft nicht, ob das Eingangsarray hermitisch/symmetrisch ist, um die Darstellung von Arrays mit nur ihren oberen/unteren Dreiecksteilen zu ermöglichen.
Diese Funktion dient als Einzeiler-Kurzform für
scipy.linalg.eighmit der Optioneigvals_only=True, um nur die Eigenwerte und nicht die Eigenvektoren zu erhalten. Sie wird hier als ältere Bequemlichkeitsfunktion beibehalten. Es kann vorteilhaft sein, die Hauptfunktion zu verwenden, um volle Kontrolle zu haben und etwas pythonischer zu sein.Beispiele
Weitere Beispiele finden Sie unter
scipy.linalg.eigh.>>> import numpy as np >>> from scipy.linalg import eigvalsh >>> A = np.array([[6, 3, 1, 5], [3, 0, 5, 1], [1, 5, 6, 2], [5, 1, 2, 2]]) >>> w = eigvalsh(A) >>> w array([-3.74637491, -0.76263923, 6.08502336, 12.42399079])