По определению квадратная матрица с нулевым определителем не должна быть обратимой. Однако по какой-то причине, после генерации ковариационной матрицы, я делаю ее обратную, но взятие определителя ковариационной матрицы заканчивается выходом 0.0.numpy: Можно ли инвертировать матрицу нулевого детерминанта?
Что может быть потенциально не так? Должен ли я не доверять выходу определителя или не доверять обратной матрице ковариации? Или оба?
Отрывок из моего кода:
cov_matrix = np.cov(data)
adjusted_cov = cov_matrix + weight*np.identity(cov_matrix.shape[0]) # add small weight to ensure cov_matrix is non-singular
inv_cov = np.linalg.inv(adjusted_cov) # runs with no error, outputs a matrix
det = np.linalg.det(adjusted_cov) # ends up being 0.0
Не могли бы вы показать нам пример ввода и вывода? Ваш комментарий подразумевает, что вы пытаетесь сделать матрицу неособой, что означало бы, что матрица должна иметь действительный обратный. – BobChao87
Ошибки округления? –
Хмм, мой набор данных состоит из 28х28 изображений, где я использую необработанные пиксели в качестве функций, поэтому входной вывод был бы слишком большим для копирования, я думаю, (784x487 ковариационных матриц). Я считаю, что добавление веса приводит к тому, что имеет действительный обратный - однако почему же тогда определяется детерминант? Если я не добавляю вес, я получаю ошибку сингулярной линейной алгебры. Будет ли ошибка округления применяться к определителю, где округляется до 0.0? – kk415kk