Возведение в степень линейного оператора в Python (scipy) - PullRequest
0 голосов
/ 25 марта 2020

Я имел большой успех в сокращении времени выполнения, используя линейные операторы (из scipy.sparse) вместо матриц / массивов. Тем не менее, я нахожусь на шаге в моем расчете, где я должен возвести в степень такой объект. Примером этого является:

H = LinearOperator((2 ** L, 2 ** L), matvec = f) #Defining the linear operator
psi0 = eigsh(H , k = 1 , which = 'SA')[1] #Obtaining the eigenvector 
psi_t = expm_multiply(-1j * dt * H , psi0) #dt is a number

Когда я пытаюсь запустить это, я получаю следующую ошибку:

diag requires an array of at least two dimensions

Кажется, что нужно найти способ увидеть H как массив? Но документация для expm_multiply гласит, что первым аргументом может быть транспонируемый линейный оператор. Помогите! :(

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...