2013-12-11 3 views
1

У меня есть очень большая квадратная матрица порядка около 100000, и я хочу знать, является ли значение детерминанта нулевым или нет для этой матрицы.Определяющее значение для очень большой матрицы

Что может быть самым быстрым способом узнать это?

я должен осуществить это в C++

+0

Найдите себе хорошую реализацию BLAS и вызовите функции, которые она вам дает. – RichardPlunkett

+0

составляет около 80 ГБ для хранения этой матрицы, вы можете пересмотреть свой подход. – Anycorn

+0

Лучше использовать существующие математические библиотеки для таких задач, потому что они уже протестированы. Поэтому не выполняйте для себя свою собственную функцию детерминации! Кроме того, очень сложно вычислить определитель для такой большой матрицы. Вы уверены, что вам это действительно нужно? – Ilya

ответ

0

Существует свойство, что если любые две строки равны или одна строка является постоянным множителем другой строки, мы можем сказать, что определитель этой матрицы zero.It применима к столбцам.

+0

Это просто утверждение, которое на самом деле не служит для ответа на оригинал вопрос по постели. Я предлагаю вам прочитать [как ответить] (http://stackoverflow.com/questions/how-to-answer) и переформулировать свой ответ. – brandonscript

+0

@ r3mus Спасибо, если вы выполнили описанное выше утверждение, то трудность меньше o (n!), Как указано в этой ссылке в [math.stack] (http://math.stackexchange.com/questions/595/what-is -The-наиболее эффективный путь-к-определение, если-а-матрица является обратимым) –

1

Предполагая, что вы пытаетесь определить, является ли матрица невырожденная вы можете посмотреть здесь:

https://math.stackexchange.com/questions/595/what-is-the-most-efficient-way-to-determine-if-a-matrix-is-invertible

Как уже упоминалось в комментариях его лучше использовать какую-то библиотеку BLAS, которая будет делать это для вас, например, Boost::uBLAS.

0

Из моих знаний приложение не суммируется и не нужно вычислить определитель, но ранг матрицы достаточно, чтобы проверить, если система уравнений имеет нетривиальное решение: -

Rank of Matrix

1

Обычно матрицы такого размера являются крайне редкий. Используйте алгоритмы переупорядочения строк и столбцов, чтобы сконцентрировать записи рядом с диагональю, а затем использовать декомпозицию QR или разложение LU. Произведением диагональных элементов второго фактора является - до знака в случае QR - детерминант. Это может быть еще слишком плохо обусловлено, лучший результат для ранга получается путем выполнения сингулярного декомпозиции. Однако SVD дороже.

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