scipy.sparse.linalg.

eigs#

scipy.sparse.linalg.eigs(A, k=6, M=None, sigma=None, which='LM', v0=None, ncv=None, maxiter=None, tol=0, return_eigenvectors=True, Minv=None, OPinv=None, OPpart=None)[Quelle]#

Finde k Eigenwerte und Eigenvektoren der quadratischen Matrix A.

Löst A @ x[i] = w[i] * x[i], das Standard-Eigenwertproblem für w[i] Eigenwerte mit entsprechenden Eigenvektoren x[i].

Wenn M angegeben ist, wird A @ x[i] = w[i] * M @ x[i] gelöst, das verallgemeinerte Eigenwertproblem für w[i] Eigenwerte mit entsprechenden Eigenvektoren x[i].

Parameter:
Andarray, sparse matrix oder LinearOperator

Ein Array, eine sparse Matrix oder ein LinearOperator, der die Operation A @ x darstellt, wobei A eine reelle oder komplexe quadratische Matrix ist.

kint, optional

Die Anzahl der gesuchten Eigenwerte und Eigenvektoren. k muss kleiner als N-1 sein. Es ist nicht möglich, alle Eigenvektoren einer Matrix zu berechnen.

Mndarray, sparse matrix oder LinearOperator, optional

Ein Array, eine sparse Matrix oder ein LinearOperator, der die Operation M@x für das verallgemeinerte Eigenwertproblem darstellt

A @ x = w * M @ x.

M muss eine reelle symmetrische Matrix darstellen, wenn A reell ist, und eine komplexe hermitesche Matrix darstellen, wenn A komplex ist. Für beste Ergebnisse sollte der Datentyp von M derselbe sein wie der von A. Zusätzlich

Wenn sigma None ist, ist M positiv definit.

Wenn sigma angegeben ist, ist M positiv semidefinit.

Wenn sigma None ist, benötigt eigs einen Operator zur Lösung der linearen Gleichung M @ x = b. Dies geschieht intern über eine (sparse) LU-Zerlegung für eine explizite Matrix M oder über einen iterativen Löser für einen allgemeinen linearen Operator. Alternativ kann der Benutzer die Matrix oder den Operator Minv bereitstellen, der x = Minv @ b = M^-1 @ b liefert.

sigmareal oder komplex, optional

Finde Eigenwerte nahe sigma im Shift-Invert-Modus. Dies erfordert einen Operator zur Lösung des linearen Systems [A - sigma * M] @ x = b, wobei M die Einheitsmatrix ist, wenn sie nicht angegeben wird. Dies wird intern über eine (sparse) LU-Zerlegung für explizite Matrizen A & M oder über einen iterativen Löser berechnet, wenn A oder M ein allgemeiner linearer Operator ist. Alternativ kann der Benutzer die Matrix oder den Operator OPinv bereitstellen, der x = OPinv @ b = [A - sigma * M]^-1 @ b liefert. Für eine reelle Matrix A kann der Shift-Invert-Modus entweder im imaginären Modus oder im reellen Modus durchgeführt werden, angegeben durch den Parameter OPpart ('r' oder 'i'). Beachten Sie, dass bei Angabe von sigma das Schlüsselwort 'which' (unten) sich auf die verschobenen Eigenwerte w'[i] bezieht, wobei

Wenn A reell ist und OPpart == 'r' (Standard),

w'[i] = 1/2 * [1/(w[i]-sigma) + 1/(w[i]-conj(sigma))].

Wenn A reell ist und OPpart == 'i',

w'[i] = 1/2i * [1/(w[i]-sigma) - 1/(w[i]-conj(sigma))].

Wenn A komplex ist, w'[i] = 1/(w[i]-sigma).

v0ndarray, optional

Startvektor für die Iteration. Standard: zufällig

ncvint, optional

Die Anzahl der erzeugten Lanczos-Vektoren ncv muss größer als k sein; es wird empfohlen, dass ncv > 2*k. Standard: min(n, max(2*k + 1, 20))

whichstr, [‘LM’ | ‘SM’ | ‘LR’ | ‘SR’ | ‘LI’ | ‘SI’], optional

Welche k Eigenvektoren und Eigenwerte gefunden werden sollen

‘LM’ : größter Betrag

‘SM’ : kleinster Betrag

‘LR’ : größter Realteil

‘SR’ : kleinster Realteil

‘LI’ : größter Imaginärteil

‘SI’ : kleinster Imaginärteil

Wenn sigma != None, bezieht sich 'which' auf die verschobenen Eigenwerte w'[i] (siehe Diskussion in 'sigma' oben). ARPACK ist im Allgemeinen besser darin, große Werte als kleine Werte zu finden. Wenn kleine Eigenwerte gewünscht sind, sollten Sie den Shift-Invert-Modus für eine bessere Leistung in Betracht ziehen.

maxiterint, optional

Maximale Anzahl von Arnoldi-Update-Iterationen erlaubt. Standard: n*10

tolfloat, optional

Relative Genauigkeit für Eigenwerte (Abbruchkriterium). Der Standardwert von 0 bedeutet Maschinenpräzision.

return_eigenvectorsbool, optional

Gib neben den Eigenwerten auch die Eigenvektoren (True) zurück.

Minvndarray, sparse matrix oder LinearOperator, optional

Siehe Hinweise in M oben.

OPinvndarray, sparse matrix oder LinearOperator, optional

Siehe Hinweise in sigma oben.

OPpart{‘r’ oder ‘i’}, optional

Siehe Hinweise in sigma oben.

Rückgabe:
wndarray

Array von k Eigenwerten.

vndarray

Ein Array von k Eigenvektoren. v[:, i] ist der Eigenvektor, der dem Eigenwert w[i] entspricht.

Löst aus:
ArpackNoConvergence

Wenn die angeforderte Konvergenz nicht erreicht wird. Die aktuell konvergierten Eigenwerte und Eigenvektoren sind als Attribute eigenvalues und eigenvectors des Exception-Objekts verfügbar.

Siehe auch

eigsh

Eigenwerte und Eigenvektoren für symmetrische Matrix A.

svds

Singulärwertzerlegung für eine Matrix A.

Hinweise

Diese Funktion ist ein Wrapper für die ARPACK-Funktionen [1] SNEUPD, DNEUPD, CNEUPD, ZNEUPD, die die Implicitly Restarted Arnoldi Methode verwenden, um die Eigenwerte und Eigenvektoren zu finden [2].

Referenzen

[1]

ARPACK Software, opencollab/arpack-ng

[2]

R. B. Lehoucq, D. C. Sorensen, und C. Yang, ARPACK USERS GUIDE: Solution of Large Scale Eigenvalue Problems by Implicitly Restarted Arnoldi Methods. SIAM, Philadelphia, PA, 1998.

Beispiele

Finde 6 Eigenvektoren der Einheitsmatrix.

>>> import numpy as np
>>> from scipy.sparse.linalg import eigs
>>> id = np.eye(13)
>>> vals, vecs = eigs(id, k=6)
>>> vals
array([ 1.+0.j,  1.+0.j,  1.+0.j,  1.+0.j,  1.+0.j,  1.+0.j])
>>> vecs.shape
(13, 6)