Как диагонализировать большую матрицу симметрии c в Python? - PullRequest
0 голосов
/ 07 мая 2020

У меня есть большая симметричная c матрица в python, которую я хочу диагонализовать. Матрица, которую я использую, имеет размер ~ 35000x35000, и я использую memmap numpy для хранения матрицы (dtype = float64).

Однако всякий раз, когда я использую процедуру numpy.linalg.eigh для диагонализуйте матрицу. Всякий раз, когда я смотрю на результаты, мне кажется, что собственные значения смехотворно низкие, а собственные векторы оказываются равными нулю.

Кажется, проблема с подпрограммой, поскольку я использовал тот же код для Матрица 8800x8800, и я получаю хорошие разумные результаты.

PS Мне придется использовать это для диагонализации даже больших матриц, поэтому, пожалуйста, предложите какую-нибудь хорошую подпрограмму.

Список оборудования / программного обеспечения:

  • Процессор: Intel Xeon Silver 4110 (32 ядра)
  • Оперативная память: 93 ГБ
  • Python: Anaconda 2020.02 (Python 3.7.6)
  • Доступное место на жестком диске: ~ 13 ТБ

PPS: Пожалуйста, не предлагайте мне это , так как эта идея уже была протестирована и с треском провалилась.

...