[SciPy-user] Proper Use of NumPy's eig()

Rich Shepard rshepard@appl-ecosys....
Tue Feb 27 14:58:35 CST 2007

On Tue, 27 Feb 2007, David Warde-Farley wrote:

> If you're really keen on having short names for things you could use
> 	from scipy.linalg import eig
> or
> 	import scipy.linalg as L
> in the latter case you'd use L.eig().  I personally don't like cluttering up 
> the namespace too much but I think that's my own obsessive streak. :)


   I've no preference one way or the other.

   However, I don't see the answer I expected. My expectation is that all
values would be in the range [0.00-1.00], but they're not.

   When I print eigE I see:

(array([  8.88174744e+00+0.j        ,   3.54286503e-01+2.48721395j,
          3.54286503e-01-2.48721395j,  -3.11162331e-01+1.00980412j,
         -3.11162331e-01-1.00980412j,  -2.79755841e-01+0.46954619j,
         -2.79755841e-01-0.46954619j,  -4.08484096e-01+0.j        ]),
array([[  6.24249034e-01 +0.00000000e+00j,
           4.46875199e-01 -2.63555328e-01j,
           4.46875199e-01 +2.63555328e-01j,
          -1.42390973e-01 -5.61667808e-01j,
          -1.42390973e-01 +5.61667808e-01j,
          -6.46262210e-01 +0.00000000e+00j,
          -6.46262210e-01 -0.00000000e+00j,
           3.21082397e-01 +0.00000000e+00j],
        [  5.11335982e-01 +0.00000000e+00j,
           5.74875531e-01 +0.00000000e+00j,
           5.74875531e-01 -0.00000000e+00j,
           6.00826858e-01 +0.00000000e+00j,
           6.00826858e-01 -0.00000000e+00j,
           3.96191087e-01 -2.86601017e-01j,
           3.96191087e-01 +2.86601017e-01j,
          -1.11778945e-01 +0.00000000e+00j],
        [  3.67333773e-01 +0.00000000e+00j,
           2.17622233e-01 +2.64832461e-01j,
           2.17622233e-01 -2.64832461e-01j,
           5.23950814e-02 +3.20941855e-01j,
           5.23950814e-02 -3.20941855e-01j,
           9.79467401e-02 +4.26775994e-01j,
           9.79467401e-02 -4.26775994e-01j,
           3.25049690e-01 +0.00000000e+00j],
        [  3.01189122e-01 +0.00000000e+00j,
          -1.99915129e-03 +3.51819621e-01j,
          -1.99915129e-03 -3.51819621e-01j,
          -3.31543315e-01 +4.14230032e-02j,
          -3.31543315e-01 -4.14230032e-02j,
          -2.40393098e-01 -1.72385172e-01j,
          -2.40393098e-01 +1.72385172e-01j,
          -5.55853156e-01 +0.00000000e+00j],
        [  2.43449050e-01 +0.00000000e+00j,
          -2.39280748e-01 +1.81665666e-01j,
          -2.39280748e-01 -1.81665666e-01j,
           7.36841917e-02 -2.29964404e-01j,
           7.36841917e-02 +2.29964404e-01j,
           1.64067922e-01 -9.40947682e-02j,
           1.64067922e-01 +9.40947682e-02j,
           5.32558922e-01 +0.00000000e+00j],
        [  1.82948476e-01 +0.00000000e+00j,
          -1.73636742e-01 -5.63298529e-02j,
          -1.73636742e-01 +5.63298529e-02j,
           1.02155185e-01 +6.19835455e-02j,
           1.02155185e-01 -6.19835455e-02j,
          -5.20559632e-02 +1.19076414e-01j,
          -5.20559632e-02 -1.19076414e-01j,
          -3.31196888e-01 +0.00000000e+00j],
        [  1.43655139e-01 +0.00000000e+00j,
          -8.17472085e-02 -1.40491017e-01j,
          -8.17472085e-02 +1.40491017e-01j,
          -3.15727963e-03 +7.94710216e-02j,
          -3.15727963e-03 -7.94710216e-02j,
           4.00006513e-03 -8.97730556e-02j,
           4.00006513e-03 +8.97730556e-02j,
           2.50876482e-01 +0.00000000e+00j],
        [  9.91225725e-02 +0.00000000e+00j,
           3.30357162e-02 -8.93890809e-02j,
           3.30357162e-02 +8.93890809e-02j,
          -8.33994799e-02 +1.92423688e-03j,
          -8.33994799e-02 -1.92423688e-03j,
           4.33406761e-02 +3.72302707e-02j,
           4.33406761e-02 -3.72302707e-02j,
          -1.16327714e-01 +0.00000000e+00j]]))

   Since eig(E) "Return[s] all solutions (lamda, x) to the equation Ax =
lamda x. The first element of the return tuple contains all the eigenvalues.
The second element of the return tuple contains the eigenvectors in the
columns (x[:,i] is the ith eigenvector)."

   I can't interpret the above. If the first tuple has all the Eigenvalues,
how do I extract the principal Eigenvector from the rest? When I did this
manually a couple of years ago, I used Octave to calculate the principal
Eigenvector and the answer was easy for me to see.


Richard B. Shepard, Ph.D.               |    The Environmental Permitting
Applied Ecosystem Services, Inc.        |          Accelerator(TM)
<http://www.appl-ecosys.com>     Voice: 503-667-4517      Fax: 503-667-8863

More information about the SciPy-user mailing list