In [77]:
import numpy
import numpy.linalg
import scipy
import scipy.linalg

eigenvalue = numpy.matrix([
  [ 4.000E-01, 4.127E-01, 5.763E-01, 7.335E-01, 8.815E-01]
  ])

eigenvector = numpy.matrix([
  [ 5.659E-01, 2.329E-01, 4.959E-01, 2.721E-02, 6.155E-01],
  [ 3.392E-01, 8.813E-01, 3.037E-01, 8.601E-02, 9.289E-02],
  [ 7.311E-01, 7.182E-02, 3.971E-02, 4.464E-01, 5.094E-01],
  [ 4.066E-01, 4.538E-01, 4.639E-01, 4.733E-01, 4.354E-01],
  [ 7.555E-01, 6.360E-01, 8.861E-02, 6.863E-02, 1.099E-01]
  ])

S = numpy.matrix(numpy.zeros((numpy.shape(eigenvector))))
for i in range(numpy.size(eigenvector, 0)):
    S += eigenvalue[0,i]*numpy.outer(eigenvector[i,:], eigenvector[i,:])
print("S = ", S)

W, V = numpy.linalg.eig(S)
for i in range(numpy.size(W)):
    print("%d: %e -> %s" % (i+1, W[i], str(V[:, i])))
    
X = numpy.matrix(scipy.linalg.sqrtm(S))
print("X**2 = ", (X*X).real)

print("X = ", X.real)
print("X^{-1} = ", X.I.real)
print("X*X{-1} = ", (X*X.I).real)


S =  [[ 1.10802513  0.76525146  0.3688633   0.39314589  0.56999968]
 [ 0.76525146  0.85282555  0.36239372  0.24831427  0.31875115]
 [ 0.3688633   0.36239372  0.30211318  0.19280419  0.30212879]
 [ 0.39314589  0.24831427  0.19280419  0.28665559  0.2988493 ]
 [ 0.56999968  0.31875115  0.30212879  0.2988493   0.45433892]]
1: 2.363480e+00 -> [[ 0.65707464]
 [ 0.52455807]
 [ 0.28924028]
 [ 0.2673976 ]
 [ 0.37138974]]
2: 3.617795e-01 -> [[ 0.05726119]
 [-0.72022947]
 [ 0.0920973 ]
 [ 0.39175455]
 [ 0.56217179]]
3: 1.968648e-01 -> [[ 0.65218112]
 [-0.24701004]
 [-0.68085466]
 [-0.14601197]
 [-0.16959736]]
4: 3.125359e-03 -> [[ 0.3316077 ]
 [-0.33751146]
 [ 0.57411828]
 [ 0.13513687]
 [-0.65440704]]
5: 7.870915e-02 -> [[ 0.1722504 ]
 [-0.17657971]
 [ 0.3386492 ]
 [-0.85758115]
 [ 0.29836338]]
X**2 =  [[ 1.10802513  0.76525146  0.3688633   0.39314589  0.56999968]
 [ 0.76525146  0.85282555  0.36239372  0.24831427  0.31875115]
 [ 0.3688633   0.36239372  0.30211318  0.19280419  0.30212879]
 [ 0.39314589  0.24831427  0.19280419  0.28665559  0.2988493 ]
 [ 0.56999968  0.31875115  0.30212879  0.2988493   0.45433892]]
X =  [[ 0.86891603  0.41881505  0.12534142  0.20241844  0.34773597]
 [ 0.41881505  0.77721631  0.24036687  0.101866    0.07212071]
 [ 0.12534142  0.24036687  0.38999914  0.10757279  0.25486319]
 [ 0.20241844  0.101866    0.10757279  0.41904448  0.21939803]
 [ 0.34773597  0.07212071  0.25486319  0.21939803  0.46381729]]
X^{-1} =  [[ 3.31765446 -2.31785551  2.74499316  0.21201424 -3.73555634]
 [-2.31785551  3.32769618 -3.31178666 -0.57266351  3.31100134]
 [ 2.74499316 -3.31178666  7.41801417  0.68697262 -5.94411566]
 [ 0.21201424 -0.57266351  0.68697262  3.29780418 -2.00734186]
 [-3.73555634  3.31100134 -5.94411566 -2.00734186  8.65758723]]
X*X{-1} =  [[  1.00000000e+00  -2.22044605e-16  -4.44089210e-16   0.00000000e+00
    4.44089210e-16]
 [ -1.11022302e-16   1.00000000e+00   1.11022302e-16   0.00000000e+00
    0.00000000e+00]
 [  0.00000000e+00  -2.22044605e-16   1.00000000e+00   0.00000000e+00
    0.00000000e+00]
 [ -1.11022302e-16   1.11022302e-16   0.00000000e+00   1.00000000e+00
    2.22044605e-16]
 [ -2.22044605e-16  -2.22044605e-16   0.00000000e+00   0.00000000e+00
    1.00000000e+00]]

In [ ]: