我需要在python中用单精度计算一个大的1554,1554值矩阵的行列式。这样做我遇到了运行时警告:
import numpy as np
from numpy import linalg as LA
a = np.random.random((1554, 1554))
b = np.random.random((1554, 1554))
c = np.dot(a,b)
det = LA.det(c)
运行时警告:在det中遇到溢出 r = _umath_linalg.det(a,signature = signature)
关于如何解决这个问题的任何想法?非常感谢!
编辑:这个问题的独特之处在于它特别指的是以双精度计算大矩阵的行列式,尽管这里包含了一个可能的答案:Can I get the matrix determinant using Numpy?
答案 0 :(得分:2)
您可以使用此关系:https://wikimedia.org/api/rest_v1/media/math/render/svg/f6404a766d86e9d78a5c4f82e05de37469a5f8e9
来自https://en.wikipedia.org/wiki/Determinant#Properties_of_the_determinant
因此,将矩阵除以均值,然后计算行列式以避免溢出。之后,您可以将均值乘以n的幂(一个轴的长度)
编辑:我不确定平均值是否是理想的选择。这更像是一个数学问题