Я пытаюсь диагонализировать матрицу 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