eig#
- scipy.linalg.eig(a, b=None, left=False, right=True, overwrite_a=False, overwrite_b=False, check_finite=True, homogeneous_eigvals=False)[Quelle]#
Löst ein gewöhnliches oder verallgemeinertes Eigenwertproblem einer quadratischen Matrix.
Berechnet Eigenwerte w und rechte oder linke Eigenvektoren einer allgemeinen Matrix
a vr[:,i] = w[i] b vr[:,i] a.H vl[:,i] = w[i].conj() b.H vl[:,i]
wobei
.Hdie hermitesche Konjugation 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 oder reelle Matrix, deren Eigenwerte und Eigenvektoren berechnet werden.
- b(M, M) array_like, optional
Rechtsmatrix in einem verallgemeinerten Eigenwertproblem. Standard ist None, es wird die Einheitsmatrix angenommen.
- leftbool, optional
Ob linke Eigenvektoren berechnet und zurückgegeben werden sollen. Standard ist False.
- rightbool, optional
Ob rechte Eigenvektoren berechnet und zurückgegeben werden sollen. Standard ist True.
- overwrite_abool, optional
Ob a überschrieben werden soll; kann die Leistung verbessern. Standard ist False.
- overwrite_bbool, optional
Ob b überschrieben werden soll; kann die Leistung verbessern. Standard ist False.
- 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.
- homogeneous_eigvalsbool, optional
Wenn True, werden die Eigenwerte in homogenen Koordinaten zurückgegeben. In diesem Fall ist
wein (2, M) Array, so dassw[1,i] a vr[:,i] = w[0,i] b vr[:,i]
Standard ist False.
- Rückgabe:
- w(M,) oder (2, M) double oder complex ndarray
Die Eigenwerte, jeder wiederholt entsprechend seiner Vielfachheit. Die Form ist (M,) es sei denn
homogeneous_eigvals=True.- vl(M, M) double oder complex ndarray
Der linke Eigenvektor, der dem Eigenwert
w[i]entspricht, ist die Spaltevl[:,i]. Nur zurückgegeben, wennleft=True. Der linke Eigenvektor ist nicht normiert.- vr(M, M) double oder complex ndarray
Der normierte rechte Eigenvektor, der dem Eigenwert
w[i]entspricht, ist die Spaltevr[:,i]. Nur zurückgegeben, wennright=True.
- Löst aus:
- LinAlgError
Wenn die Eigenwertberechnung nicht konvergiert.
Siehe auch
eigvalsEigenwerte von allgemeinen Arrays
eighEigenwerte und rechte Eigenvektoren für symmetrische/hermitesche Arrays.
eig_bandedEigenwerte und rechte Eigenvektoren für symmetrische/hermitesche bandförmige Matrizen
eigh_tridiagonalEigenwerte und rechte Eigenvektoren für symmetrische/hermitesche tridiagonale Matrizen
Beispiele
>>> import numpy as np >>> from scipy import linalg >>> a = np.array([[0., -1.], [1., 0.]]) >>> linalg.eigvals(a) array([0.+1.j, 0.-1.j])
>>> b = np.array([[0., 1.], [1., 1.]]) >>> linalg.eigvals(a, b) array([ 1.+0.j, -1.+0.j])
>>> a = np.array([[3., 0., 0.], [0., 8., 0.], [0., 0., 7.]]) >>> linalg.eigvals(a, homogeneous_eigvals=True) array([[3.+0.j, 8.+0.j, 7.+0.j], [1.+0.j, 1.+0.j, 1.+0.j]])
>>> a = np.array([[0., -1.], [1., 0.]]) >>> linalg.eigvals(a) == linalg.eig(a)[0] array([ True, True]) >>> linalg.eig(a, left=True, right=False)[1] # normalized left eigenvector array([[-0.70710678+0.j , -0.70710678-0.j ], [-0. +0.70710678j, -0. -0.70710678j]]) >>> linalg.eig(a, left=False, right=True)[1] # normalized right eigenvector array([[0.70710678+0.j , 0.70710678-0.j ], [0. -0.70710678j, 0. +0.70710678j]])