我使用Python2.7、Numpy1.6.2和Scipy0.16.0来计算以下内容。在
我创造了一个哈达玛矩阵。然后我从矩阵的第0,2,4个向量中创建外积,并将它们相加,得到对角线0。然后我用西皮.利纳格.伊格(). 它是堕落的。前两个特征值相同,即-3。但当我用Python检查时,它说它们不一样。代码如下所示。在
from scipy import linalg as sp
import numpy
from numpy import linalg as np
def get_outer_product(vector):
length = len(vector)
outer_product = [[0 for x in range(length)] for x in range(length)]
for i in range(0, length):
for j in range(0, length):
if i == j:
outer_product[i][j] = 0
continue
outer_product[i][j] = vector[i] * vector[j]
return outer_product
def test():
hadamard_matrix = sp.hadamard(8)
sum_of_outer_products = [map(sum, zip(*t)) for t in zip(get_outer_product(hadamard_matrix[0]), get_outer_product(hadamard_matrix[2]))]
sum_of_outer_products = [map(sum, zip(*t)) for t in zip(sum_of_outer_products, get_outer_product(hadamard_matrix[4]))]
e_vals, e_vecs = sp.eigh(sum_of_outer_products)
print str(e_vals[0]) + " == " + str(e_vals[0]) + "?"
print e_vals[0] == e_vals[1]
输出为:
^{pr2}$我做错什么了?在
Floating point problem。在
使用float时,请始终小心使用equal运算符,并记住可能存在精度问题和use safe comparison:
顺便说一下,在我的机器上,这两种情况都返回true:
^{pr2}$相关问题 更多 >
编程相关推荐