scipy.linalg.

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 w der Matrix a, wobei b positiv definit ist, sodass für jeden Eigenwert λ (i-ter Eintrag von w) und seinen Eigenvektor vi (i-te Spalte von v) gilt

              a @ 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 a und gegebenenfalls b stammen. (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 w und v an (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 über int() 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 Sie np.inf fü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

eigh

Eigenwerte und rechte Eigenvektoren für symmetrische/hermitesche Arrays

eigvals

Eigenwerte von allgemeinen Arrays

eigvals_banded

Eigenwerte für symmetrische/hermitesche Bandmatrizen

eigvalsh_tridiagonal

Eigenwerte 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.eigh mit der Option eigvals_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])