scipy.linalg.

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 .H die 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 w ein (2, M) Array, so dass

w[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 Spalte vl[:,i]. Nur zurückgegeben, wenn left=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 Spalte vr[:,i]. Nur zurückgegeben, wenn right=True.

Löst aus:
LinAlgError

Wenn die Eigenwertberechnung nicht konvergiert.

Siehe auch

eigvals

Eigenwerte von allgemeinen Arrays

eigh

Eigenwerte und rechte Eigenvektoren für symmetrische/hermitesche Arrays.

eig_banded

Eigenwerte und rechte Eigenvektoren für symmetrische/hermitesche bandförmige Matrizen

eigh_tridiagonal

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