eig_banded#
- scipy.linalg.eig_banded(a_band, lower=False, eigvals_only=False, overwrite_a_band=False, select='a', select_range=None, max_ev=0, check_finite=True)[Quelle]#
Löst das Eigenwertproblem einer reellen symmetrischen oder komplexen hermiteschen Bandmatrix.
Finde Eigenwerte w und optional rechte Eigenvektoren v einer Matrix a
a v[:,i] = w[i] v[:,i] v.H v = identity
Die Matrix a wird in a_band entweder in der unteren oder oberen Diagonalform gespeichert.
a_band[u + i - j, j] == a[i,j] (bei oberer Form; i <= j) a_band[ i - j, j] == a[i,j] (bei unterer Form; i >= j)
wobei u die Anzahl der Bänder oberhalb der Diagonalen ist.
Beispiel für a_band (Form von a ist (6,6), u=2)
upper form: * * a02 a13 a24 a35 * a01 a12 a23 a34 a45 a00 a11 a22 a33 a44 a55 lower form: a00 a11 a22 a33 a44 a55 a10 a21 a32 a43 a54 * a20 a31 a42 a53 * *
Mit * markierte Zellen werden nicht verwendet.
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_band(u+1, M) array_like
Die Bänder der M x M Matrix a.
- lowerbool, optional
Ist die Matrix in unterer Form. (Standard ist obere Form)
- eigvals_onlybool, optional
Berechne nur die Eigenwerte und keine Eigenvektoren. (Standard: berechne auch Eigenvektoren)
- overwrite_a_bandbool, optional
Verwirf Daten in a_band (kann die Leistung verbessern)
- 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
- max_evint, optional
Für select==’v’, maximale Anzahl der erwarteten Eigenwerte. Für andere Werte von select hat dieser Parameter keine Bedeutung.
Im Zweifelsfall lass diesen Parameter unverändert.
- 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:
- w(M,) ndarray
Die Eigenwerte, aufsteigend sortiert, jeder wiederholt entsprechend seiner Vielfachheit.
- v(M, M) float oder complex ndarray
Der normalisierte Eigenvektor, der dem Eigenwert w[i] entspricht, ist die Spalte v[:,i]. Nur zurückgegeben, wenn
eigvals_only=False.
- Löst aus:
- LinAlgError
Wenn die Eigenwertberechnung nicht konvergiert.
Siehe auch
eigvals_bandedEigenwerte für symmetrische/hermitesche Bandmatrizen
eigEigenwerte und rechte Eigenvektoren für allgemeine Arrays.
eighEigenwerte und rechte Eigenvektoren für symmetrische/hermitesche Arrays
eigh_tridiagonalEigenwerte und rechte Eigenvektoren für symmetrische/hermitesche tridiagonale Matrizen.
Beispiele
>>> import numpy as np >>> from scipy.linalg import eig_banded >>> A = np.array([[1, 5, 2, 0], [5, 2, 5, 2], [2, 5, 3, 5], [0, 2, 5, 4]]) >>> Ab = np.array([[1, 2, 3, 4], [5, 5, 5, 0], [2, 2, 0, 0]]) >>> w, v = eig_banded(Ab, lower=True) >>> np.allclose(A @ v - v @ np.diag(w), np.zeros((4, 4))) True >>> w = eig_banded(Ab, lower=True, eigvals_only=True) >>> w array([-4.26200532, -2.22987175, 3.95222349, 12.53965359])
Fordere nur die Eigenwerte zwischen
[-3, 4]an.>>> w, v = eig_banded(Ab, lower=True, select='v', select_range=[-3, 4]) >>> w array([-2.22987175, 3.95222349])