In [19]:
import numpy as np
import scipy.linalg as lg

In [20]:
b=np.ones((3,3))
np.fill_diagonal(b,3)

In [21]:
a=np.arange(9).reshape(3,3)

In [22]:
a=(a+a.T)*0.5

In [24]:
a,b,lg.eigh(a,b)


Out[24]:
(array([[ 0.,  2.,  4.],
       [ 2.,  4.,  6.],
       [ 4.,  6.,  8.]]),
 array([[ 3.,  1.,  1.],
       [ 1.,  3.,  1.],
       [ 1.,  1.,  3.]]),
 (array([ -7.59591794e-01,   1.00128781e-15,   3.15959179e+00]),
  array([[ 0.56260959,  0.28867513, -0.01170986],
       [ 0.11367022, -0.57735027, -0.23183129],
       [-0.33526915,  0.28867513, -0.45195273]])))

In [25]:
c,d=lg.eigh(a,b)

In [26]:
d


Out[26]:
array([[ 0.56260959,  0.28867513, -0.01170986],
       [ 0.11367022, -0.57735027, -0.23183129],
       [-0.33526915,  0.28867513, -0.45195273]])

In [35]:
d[:,0]/lg.norm(d[:,0])


Out[35]:
array([ 0.84638277,  0.17100405, -0.50437468])

In [36]:
d[:,1]/lg.norm(d[:,1])


Out[36]:
array([ 0.40824829, -0.81649658,  0.40824829])

In [37]:
d[:,2]/lg.norm(d[:,2])


Out[37]:
array([-0.02304732, -0.45628997, -0.88953262])

In [ ]: