2015-08-21 2 views
-2

Я работал над некоторым кодом, который делает интеграцию, некоторые манипуляции, а затем большую интеграцию. Вот code (спасибо @JRichardSnape!). В основном этот код решает матричное уравнение, что и делает mesolve. Он принимает гамильтониан (ключевую физическую матрицу), начальную матрицу плотности, rho0 и tlist времени для оценки rho (t) в (для чего мы решаем) и операторов коллапса L1, L2, L3, L4, L5, L6, L7. Затем я извлекаю результаты и умножаю их на два других массива и начерчиваю.IndexError для научного кода Python

Я использую модуль квантовой механики qutip, так как у них есть решатель, который мне нужен: mesolve. Модуль qutip требует, чтобы все матрицы были преобразованы в квантовый объект, который выполняется Qobj (x).

Я добавил строку, определяющую rho0 = L1 сразу после определения операторов коллапса. Когда это происходит, это приводит к ошибке индекса:

IndexError: index 0 is out of bounds for axis 0 with size 0 

Я попытался выяснить, что не так. Это неправильно в определении f_t. Проблема заключается в том, что он пытается индексировать массив (n.data - это один элементный массив из числа complex128). Что происходит?

+0

Почему downvote? Я добавил подробности .. вам нужно больше? – TanMath

+2

Я создал тег 'qutip'. Этот вопрос стал слишком техническим для большинства пользователей «numpy» и «scipy». – hpaulj

ответ

3

Это воспроизводит вашу ошибку:

In [34]: data = np.zeros((0,10))  
In [35]: data 
Out[35]: array([], shape=(0, 10), dtype=float64) 

In [36]: data[0] 
--------------------------------------------------------------------------- 
IndexError        Traceback (most recent call last) 
<ipython-input-36-88cae4a5bf31> in <module>() 
----> 1 data[0] 

IndexError: index 0 is out of bounds for axis 0 with size 0 

Не углубляясь в связанный код, то ясно, что массив в вопросе имеет 0 длину 1-го размера. x.shape[0] 0.

Вы можете получить такой массив индексирует другой с пустым списком,

In [44]: data=np.ones((3,4)) 

In [45]: data[[],...] 
Out[45]: array([], shape=(0, 4), dtype=float64) 

С ограниченной информации вы даете, что трудно быть более точным. Проверьте форму всех подозрительных массивов.


Так Qobj документирована в http://qutip.org/docs/2.2.0/apidoc/classes.html

и mesolve в http://qutip.org/docs/2.2.0/apidoc/functions.html#qutip.mesolve.mesolve

и rho0, как ожидается, будет rho0 : qutip.qobj.

Основной массивом для ground является (7,1) формой, для L1 (проблемы rho0?) Является (7,7) и все 0 для [0,0], за исключением.

Похоже, это ответвление Integration not successful in Python QuTiP

+2

Тогда вам нужно уточнить свой вопрос. Я объяснил вероятную ситуацию, которая вызывает ошибку. Я не могу сказать по ссылке, а также скудное описание, в какой строке возникла ошибка или какая переменная может быть задействована. – hpaulj

+0

Один массив элементов дал бы другую ошибку: 'np.array (1.23) [0]' '0-d массивы не могут быть индексом ', или нет ошибки' np.array ([12.323]) [0] '. – hpaulj

+0

Я уточнил, это лучше? – TanMath

Смежные вопросы