У меня есть большая симметричная 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: Пожалуйста, не предлагайте мне это , так как эта идея уже была протестирована и с треском провалилась.