У меня очень большая матрица. buildmatrix - это матрица N на N. Таким образом, sumHamiltonian - это матрица N ^ 2 по N ^ 2. Тогда преобразование (N) представляет собой матрицу N ^ 2 по N (N-1) / 2. (Таким образом, результирующий короткий гамильтониан (N) представляет собой матрицу N (N-1) / 2 по N (N-1) / 2). Элементы матрицы также являются комплексными числами.
Если N = 200, я получаю ошибку памяти. Есть ли способ переписать:
def sumHamiltonian(N):
return 0.5*(np.kron(buildmatrix(N),np.identity(N))+np.kron(np.identity(N),buildmatrix(N)))
def shortHamiltonian(N):
return np.matmul(np.transpose(transform(N)),np.matmul(sumHamiltonian(N),transform(N)))
для уменьшения памяти?
Я видел несколько способов уменьшить память для умножения матриц ( Python / Numpy MemoryError ), что полезно, но моя ошибка памяти возникает в продукте kronecker. Есть ли способ переписать это, или еще лучше, все матричные операции, чтобы избежать ошибки памяти?