Here is the eigenvalues of KK I obtained: >>> linalg.eigvals(KK) array([ 1.11748411e+05, 3.67154458e+04, 3.41580846e+04, 2.75272440e+04, 2.09790868e+04, 1.86242332e+04, 8.68628325e+03, 6.66127732e+03, 6.15547187e+03, 4.68626197e+03, 3.17838339e+03, 2.84888045e+03, 1.88279736e+03, 1.32427574e+03, 1.04946287e+03, 5.79303171e+02, 3.83111876e+02, 4.93826556e-12, 1.50263232e-12])
You are right. The ratio of max/min eigenvalues is 7.4368432669e+016 Maybe this exceed the of precision of my machine? Is there any tricks for me to be able to deal with this matrix correctly with NumPy? On Apr 4, 3:58 pm, Robin Becker <[EMAIL PROTECTED]> wrote: > lancered wrote: > > Hi dear all, > .......... > > matrices are correct. > > > So, can you tell me what goes wrong? Is this a bug in > > Numpy.linalg? How to deal with this situation? If you need, I can > > post the matrix I used below, but it is so long,so not at the moment. > > ....... > > presumably the matrix KK is actually some kind of normal matrix obtained from > the data. So you have say n variables and m observations the data matrix is > than > an n x m real valued thing say D then you want the inverse of something like > D'D > ie an n by n thing. Typically the data D is de-meaned and normalized by the > column norms so that you end up with a fairly well scaled problem. > > A long time ago I used Numeric+python to do exactly this sort of calculation > with excellent results and the matrices were as large or larger eg 100 x 100 > and > above. I don't think the underlying numeric routines have changed that much. > If > your matrix is symmetric then you should certainly be using > > Even if you can't post the matrix, perhaps you should indicate how you proceed > from data to matrix. Another problem is that a large determinant is no > guarantee > of stability for the inversion. If the largest eigenvalue is 10**100 and the > smallest 10**-200 I probably have an ill determined problem; surprisingly easy > to achieve :( > -- > Robin Becker -- http://mail.python.org/mailman/listinfo/python-list