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の特徴は?