-2

我一直在研究一些代码,这些代码可以进行集成、一些操作,然后是更多的集成。这是代码(感谢@JRichardSnape!)。基本上这段代码解决了一个矩阵方程,这就是mesolve它的作用。它需要一个哈密顿量(一个关键的物理矩阵)、一个初始密度矩阵rho0和一个时间列表来评估 rho(t) 在(我们正在解决的问题)和坍缩算子L1, L2, L3, L4, L5, L6, L7。然后我提取结果并乘以另外两个数组并绘制它。

我使用 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 数字的单元素数组)。到底是怎么回事?

4

1 回答 1

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。 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

mesolvehttp://qutip.org/docs/2.2.0/apidoc/functions.html#qutip.mesolve.mesolve

并且rho0预计会rho0 : qutip.qobj

for 的底层数组ground是一个(7,1)形状,因为L1(问题rho0?)是(7,7)除 [0,0] 之外的所有 0。

看起来这是集成在 Python QuTiP 中不成功的衍生产品

于 2015-08-22T00:59:59.337 回答