2016-09-24 2 views
3

Мне нужно вычислить определитель большой матрицы величин 1554,1554 с единственной точностью в python. При этом я сталкиваюсь предупреждение во время выполнения:Определитель (большой) 1554 x 1554 матрицы в Python

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: переполнение встречается в йе г = _umath_linalg.det (а, подпись = подпись)

Любые идеи о том, как я могу работать вокруг этой проблемы? Большое спасибо!

Edit: этот вопрос уникален тем, что он конкретно относится к вычислению определителя большой матрицы с двойной точностью, хотя возможный ответ включен здесь: Can I get the matrix determinant using Numpy?

+0

Зачем вам определитель? –

+0

Предоставляет ли вам предупреждение о переполнении для более мелких матриц? – nluigi

+0

@JamieMac check [этот ответ] (http://stackoverflow.com/a/19317237/832621) –

ответ

2

Вы можете использовать это соотношение: https://wikimedia.org/api/rest_v1/media/math/render/svg/f6404a766d86e9d78a5c4f82e05de37469a5f8e9

от https://en.wikipedia.org/wiki/Determinant#Properties_of_the_determinant

Итак, разделите свою матрицу на среднее, а затем вычислите детерминант, чтобы избежать переполнения. Позже вы можете умножить со средним значением мощности n (длина одной оси)

Редактировать: Я не уверен, что среднее значение является идеальным выбором. Это скорее математический вопрос

Смежные вопросы