Ich suche ein Problem der Art zu lösen: Aw = xBw
wo x
ein Skalar (Eigenwert), w
ein Eigenvektor und A
und B
sind symmetrisch, quadratisch numpy Matrizen gleicher Dimension. Ich sollte d
x/w Paare finden können, wenn A
und B
d x d
sind. Wie würde ich das in numpy lösen? Ich schaute in die Scipy Docs und fand nichts, was ich wollte.Numpy: verallgemeinerten Eigenwert Problem
Antwort
Es Sie scipy.linalg.eigh()
lösen müssen diese verallgemeinerte Eigenwertproblem scheint:
from scipy.linalg import eigh
eigvals, eigvecs = eigh(A, B, eigvals_only=False)
Sie werden sehen, eigvecs
ist ein komplexes ndarray
, so vielleicht müssen Sie eigvecs.real
...
Im selben Modul Sie eigvalsh()
haben benutzen, die wahrscheinlich schneller für Ihren Fall durchführen würde, aber nicht die Eigenvektoren zurück.
Danke für die Klärung! Das Beispiel in der Dokumentation für diese Funktion war auf den ersten Blick ziemlich unklar. –
Haben Sie scipy.linalg.eig
gesehen? Vom documentation:
Lösen Sie einen gewöhnlichen oder Eigenwertproblem einer quadratischen Matrix verallgemeinert.
Diese Methode haben optionale Parameter b
:
scipy.linalg.eig(a, b=None, ...
b : (M, M) array_like, optional Right-hand side matrix in a generalized eigenvalue problem. Default is None, identity matrix is assumed.
Das Problem in OP ist 'Aw = xBw'. – emeth
Also, was ist das Problem? 'scipy.linalg.eig (a, b = None, ...': Parameter b: _Right-Hand-Seitenmatrix in einem verallgemeinerten Eigenwertproblem. Standard ist None, Identitätsmatrix wird angenommen._ – RomanHotsiy
Hey danke. Ich habe das gesehen, aber verpasste den B-Teil. –
Überprüfen Sie http://StackOverflow.com/Questions/12672408/generalized-eigenvectors-in-Matlab – emeth
Das ist genau das, was ich tun möchte, aber in Python. –