我正在尝试在Python中估算log(det(AAT)+1)的平均值。我的简单代码在处理17×17矩阵时出现了数学错误。以下是代码:
iter = 10000
for n in xrange(1,20):
h = n
dets = []
for _ in xrange(iter):
A = (np.random.randint(2, size=(h,n)))*2-1
detA_Atranspose = np.linalg.det(np.dot(A, A.transpose()))
try:
logdetA_Atranspose = math.log(detA_Atranspose+1,2)
except ValueError:
print "Ooops!", n,detA_Atranspose
dets.append(logdetA_Atranspose)
print np.mean(dets)
A应该是一个元素为-1或1的矩阵。
我做错了什么,怎么修复?17有什么特别之处吗?
log(1+det(AA^T), 2)
。 - Lutz Lehmann