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 @ xdarstellt, 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, derx = Minv @ b = M^-1 @ bliefert.- 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, derx = OPinv @ b = [A - sigma * M]^-1 @ bliefert. 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 Eigenwertew'[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
eigenvaluesundeigenvectorsdes Exception-Objekts verfügbar.
Siehe auch
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)