Я пытаюсь вычислить инверсию очень большой матрицы (11300x21500) в C++. До сих пор я пробовал библиотеки Eigen и Armadillo, но оба были неудачными на этапе инициализации, заявив, что памяти недостаточно. Может ли быть какой-то способ преодолеть эту ситуацию?Вычисление инверсии очень большой матрицы
Заранее спасибо
P.S
я должен исправить размер матрицы для 21500x21500. Как предположил UmNyobe, это не квадратная матрица. Это на самом деле матрица наблюдения, X, и я пытаюсь вычислить (XTX) -1
У меня есть память 8 Гб (в 64-битной системе), но я не думаю, что я использую все это пространство памяти. Диспетчер задач показывает, что использование памяти во время ошибки составляет 1 ГБ. Возможно, в Windows7 есть ОС, которая закрывает приложение, когда его использование памяти превышает 1 ГБ.
Кстати, моя первоначальная цель - запустить регрессию над этой матрицей наблюдения.
Еще одна вещь: большинство столбцов в каждой строке матрицы наблюдения X равны нулю. Может ли быть способ воспользоваться этим, чтобы ограничить использование памяти в операции инвертирования?
Почему ваши размеры не равны? – UmNyobe
Эта матрица содержит примерно 1 ГБ или 2 ГБ данных в зависимости от того, есть ли у вас 4- или 8-байтовые матричные записи. Вы на 32-битной машине? –
Стив, я собирался опубликовать информацию о памяти, вы должны написать ее более подробно, как вы упомянули вначале. – UmNyobe