Các giá trị riêng của ma trận hiệp phương sai phải là thực và không âm bởi vì ma trận hiệp phương sai đối xứng và bán xác định dương.scipy.linalg.eig trả về giá trị riêng biệt phức tạp cho ma trận hiệp phương sai?
Tuy nhiên, hãy nhìn vào các thí nghiệm sau đây với scipy:
>>> a=np.random.random(5)
>>> b=np.random.random(5)
>>> ab = np.vstack((a,b)).T
>>> C=np.cov(ab)
>>> eig(C)
7.90174997e-01 +0.00000000e+00j,
2.38344473e-17 +6.15983679e-17j,
2.38344473e-17 -6.15983679e-17j,
-1.76100435e-17 +0.00000000e+00j,
5.42658040e-33 +0.00000000e+00j
Tuy nhiên, tái tạo ví dụ trên trong Matlab hoạt động chính xác:
a = [0.6271, 0.4314, 0.3453, 0.8073, 0.9739]
b = [0.1924, 0.3680, 0.0568, 0.1831, 0.0176]
C=cov([a;b])
eig(C)
-0.0000
-0.0000
0.0000
0.0000
0.7902