MemoryError по диагонали большой матрицы - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь диагонализировать матрицу M 101x101 с реальными коэффициентами. Поэтому я использую функцию M.diagonalize () из sympy (https://docs.sympy.org/latest/tutorial/matrices.html)

К сожалению, после нескольких часов вычислений я получаю MemoryError. У меня больше нет Памяти.

Я также пытался вычислить собственные значения / векторы с помощью numpy .linalg.eig (). Это работает менее чем за одну секунду - но вычисленные значения являются либо сложными и ложными, либо действительными и ложными. В обоих случаях вычисленные собственные значения / векторы не корректируются (я проверял это). Я не хочу писать программу для диагонализации самостоятельно, поэтому я надеюсь, что кто-то из вас может помочь мне с некоторым намеком. Tt не должен быть в python

Вот код:

import numpy as np
import sympy  
from sympy import * 
states = np.genfromtxt('1B_tot_energy_ME.tsv',delimiter = ' ')
M = np.zeros((101,101))

j = 0
while j < 101:

    for i,state in enumerate(states[1+100*j:1+100*(j+1)]):
        M[j][i] = state

    j += 1

M_D = Matrix(M)

Result = M_D.diagonalize()

np.savetxt("diagonlized_Hamiltonian.csv", Result)

Ошибка: MemoryError

...