我需要在 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)
RuntimeWarning:det 中遇到溢出
r = _umath_linalg.det(a, 签名=签名)
关于如何解决这个问题有什么想法吗?非常感谢!
编辑:这个问题的独特之处在于它具体指的是以双精度计算大矩阵的行列式,尽管这里包含一个可能的答案:我可以使用 Numpy 获得矩阵行列式吗? https://stackoverflow.com/questions/462500/can-i-get-the-matrix-determinant-using-numpy
您可以使用这个关系:https://wikimedia.org/api/rest_v1/media/math/render/svg/f6404a766d86e9d78a5c4f82e05de37469a5f8e9 https://wikimedia.org/api/rest_v1/media/math/render/svg/f6404a766d86e9d78a5c4f82e05de37469a5f8e9
from https://en.wikipedia.org/wiki/行列式#Properties_of_the_行列式 https://en.wikipedia.org/wiki/Determinant#Properties_of_the_determinant
因此,将矩阵除以平均值,然后计算行列式以避免溢出。稍后您可以乘以平均值的 n 次方(一个轴的长度)
编辑:我不确定平均值是否是理想的选择。这更多的是一个数学问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)