2014-07-15 27 views
6

Ben türde bir sorunu çözmek için arıyorum: x bir sayıl (özdeğer) 'dir Aw = xBw, w bir özvektör olduğunu ve A ve B eşit boyutun simetrik, kare numpy matrisler vardır.ve Bd x d ise d x/w çiftlerini bulabilmem gerekir. Bunu nasıl uyuşturabilirim? Scipy doktorlarına bakıyordum ve istediğim gibi bir şey bulamıyordum.Numpy: Genelleştirilmiş Özdeğer Problemi

+0

http://stackoverflow.com/questions/12672408/generalized-eigenvectors-in-matlab adresine bakın. – emeth

+0

Tam olarak yapmak istediğim şey budur, ancak python'da. –

cevap

7

:

from scipy.linalg import eigh 

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

Bunu göreceksiniz eigvecs karmaşık ndarray, yani belki de muhtemelen dava için daha hızlı performans göstereceğini eigvalsh() sahip aynı modülde eigvecs.real ...

kullanmak zorunda, ama bu özvektör döndürmez.

+0

Bunu temizlediğiniz için teşekkürler! Bu işlev için dokümanlardaki örnek, ilk bakışta oldukça belirsizdi. –

6

scipy.linalg.eig'u gördünüz mü? documentation Gönderen:

sıradan çözün ya bir kare matrisin özdeğer problemini genelleştirilmiş. Bu yöntem

opsiyonel parametre b var:

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. 
araçlarının bu genelleştirilmiş özdeğer problemini çözmek için scipy.linalg.eigh() ihtiyaç görünüyor
+0

OP'deki sorun 'Aw = xBw''dir. – emeth

+0

Yani, sorun nedir? scipy.linalg.eig (a, b = Hiçbiri, ... ': b parametresi: Genelleştirilmiş bir özdeğer probleminde right-hand side matrisi Varsayılan değer Yok, kimlik matrisi varsayılır. – RomanHotsiy

+0

Hey, teşekkürler. ama B bölümünü kaçırdı –