scipy.linalg.

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_banded

Eigenwerte für symmetrische/hermitesche Bandmatrizen

eig

Eigenwerte und rechte Eigenvektoren für allgemeine Arrays.

eigh

Eigenwerte und rechte Eigenvektoren für symmetrische/hermitesche Arrays

eigh_tridiagonal

Eigenwerte 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])