2014-07-15 16 views
6

Sto cercando di risolvere un problema del tipo: dove Aw = xBwx è uno scalare (autovalore), w è un autovettore e A e B sono simmetriche, matrici NumPy quadrati di uguale dimensione. Dovrei essere in grado di trovare coppie d x/w se A e B sono d x d. Come risolverei questo in numpy? Stavo guardando i documenti di Scipy e non trovavo nulla di simile a ciò che volevo.Numpy: Generalized autovalori Problema

+0

Controlla http://stackoverflow.com/questions/12672408/generalized-eigenvectors-in-matlab – emeth

+0

Questo è esattamente ciò che voglio fare, ma in python. –

risposta

7

Sembra necessario scipy.linalg.eigh() per risolvere questo generalizzato problema agli autovalori:

from scipy.linalg import eigh 

eigvals, eigvecs = eigh(A, B, eigvals_only=False) 

Vedrete che eigvecs è un complesso ndarray, quindi forse è necessario utilizzare eigvecs.real ...

nello stesso modulo hai eigvalsh() che probabilmente eseguire più veloce per il vostro caso, ma non restituisce gli autovettori.

+0

Grazie per averlo chiarito! L'esempio dei documenti relativi a questa funzione non era chiaro a prima vista. –

6

Hai visto scipy.linalg.eig? Dalla documentation:

risolvere un ordinario o generalizzate problema autovalore di una matrice quadrata.

Questo metodo ha parametro opzionale 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. 
+0

Il problema nell'OP è 'Aw = xBw'. – emeth

+0

quindi, qual è il problema? 'scipy.linalg.eig (a, b = None, ...': parametro b: _Matrice lato destro in un problema di autovalore generalizzato: l'impostazione predefinita è Nessuno, si assume la matrice identità._ – RomanHotsiy

+0

Hey grazie. ma ho saltato la parte B. –

Problemi correlati