问题标签 [qutip]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - QuTiP:解决不一致的 Qobj 形状
之前在QuTiP TypeError: Incompatible Qobj shapes with tensor product中对此进行了探索,但我不确定那里的答案。
假设我定义A = tensor(qeye(2), qeye(2))
和B = qeye(4)
,我不能将它们相乘,因为对象形状不一致。
但是,矩阵具有相同的维度,我想“展平”A
以使其乘以B
. 如果我有可分离运算符和不可分离运算符的组合,我如何将它们一起使用?换句话说,B
不能进一步简化,所以我应该怎么做才能A
让它们成倍增加?
编辑:看起来笨重的 Qobj(A.data.toarray()) 有效,但如果有人有更好的想法或理解 QuTiP 这样做的原因,我会保持打开状态。
python - 如何在 Bloch 球体上绘图时更改线宽
我正在使用 QuTiP 在 Python 中绘制 Bloch 球体。如果我在 Bloch 球体上有几个点,那么我可以使用命令将它们与一条线连接起来
我想知道如何更改连接这些点的线的线宽。
python - 如何在使用 QuTiP 绘制 Bloch 球体时给出 aplot 标题
我正在使用 QuTiP 绘制一个 Bloch 球体图。我想给它一个标题。我怎样才能做到这一点?我在谷歌上搜索但找不到答案。
python - 如何在 cvxpy 变量上使用非原子函数?
考虑我定义一个 CVXPY 变量的场景,一个 4x4 半定矩阵,如下所示
x = cvxpy.Semidef(4)
如果我想写一个涉及这个跟踪的约束,看来我必须使用原子函数
cvxpy.atoms.affine.trace.trace(x)
我想对 执行一个特定的约束x
,即它有一个正的部分转置。在这种情况下,没有像 trace 这样的原子函数,但是已经编写了这样的方法(参见http://qutip.org/docs/3.1.0/modules/qutip/partial_transpose.html#partial_transpose)。我可以让 CVXPY 允许我根据这些在其他地方已经存在的非原子函数(例如 numpy、qutip 等)编写约束吗?
谢谢!
qutip - 来自 qutip 的 mesolve 的密度矩阵元素作为时间的函数
我正在将 qutip 的 mesolve 用于系统的开放系统动力学。我需要将所有密度矩阵元素保存为时间的函数。mesolve 提供了仅返回任何给定运算符的期望值的选项。我想知道是否有一种方法可以将密度矩阵的每个元素作为时间的函数,而不必为每个元素编写一个运算符。如果您有任何建议,请提供帮助。
python - 如何用 qutip/python 调用时间相关的哈密顿?
我正在尝试实现一些代码来描述系统的连贯控制。问题是我想使用以下形式的汉密尔顿: {H}_ij = u(t) * h_ij * exp(omega_ij * t) 用于第 i^th 行和第 j^th 列,h_ij = conj(h_ji)并且 h_ii = 0。由于每个术语的时间依赖性不同,因此无法使用使用用户手册中详述的前三个选项编写时间依赖性 hamiltonian 的技术来编写此 hamiltonian ( http://qutip.org/downloads /4.4.0/qutip-doc-4.4.pdf#subsection.3.5.6)更准确地说是在第 61 页。
然而,它可以通过第四个(过时的)选项来实现:
最后的选项 #4,将哈密顿量表示为 Python 函数,是 QuTiP 1.x 中时间依赖性的原始方法。但是,这种方法比前面提到的方法效率要低一些。然而,与其他选项相比,该方法可用于实现时间相关的哈密顿量,这些哈密顿量不能表示为具有时间相关系数的常数算子的函数。
我认为这正是我想要的,但我不明白如何将哈密顿量实现为 python 函数。有人可以给我看一个“汉密尔顿作为 Python 函数”的例子吗?
编辑:这是我迄今为止尝试过的:
在这个简单的案例中,我尝试了不同定义的 hamiltonian 函数(Hamiltonian_1 到 4),并且我尝试了 mesolve 函数的多种组合(暂时在此代码中注释)......它们都不起作用。
谢谢你,保罗
python - 如何分析使用 python 多处理的脚本
我有一个使用函数parallel_map 的脚本文件。( qutip.parallel.parallel_map 的源代码)来自QuTiP包。正如人们在单击该函数的源代码时所看到的那样,它使用了 python 的多进程模块。我查看了这个问题的串行版本的答案。我决定Snakeviz阅读zaxiliu 的解决方案。但是在我的代码上天真地尝试它失败了。那么我必须做什么来分析我的代码?我的心不在Snakeviz上。我不介意使用任何其他图形工具。
python - python中的两种模式Wigner函数
我试图调整 qutip Wigner 函数,让它处理两种模式状态,特别是迭代方法。
但是我的输出给出的数组大小太大,我不确定为什么?那就是当我尝试使用它计算 Wigner 对数负性时,积分以数组而不是奇异值的形式出现。
它的用途的代码和描述如下:
参数
state : qobj 状态向量或密度矩阵。
xvec1 : array_like x 坐标,用于计算 Wigner 函数。
yvec1 : array_like 计算 Wigner 函数的 y 坐标。
xvec2 : array_like x 坐标,用于计算 Wigner 函数。
yvec2 : array_like 计算 Wigner 函数的 y 坐标。
g: float 缩放因子a = 0.5 * g * (x + iy)
,默认g = sqrt(2)
。
方法:字符串 {'iterative'} 选择方法 'iterative',其中 'iterative' 使用迭代方法来评估密度矩阵的 Wigner 函数 :math: |m><n|
。'iterative' 方法是默认的,通常推荐使用,但'laguerre' 方法对于非常稀疏的密度矩阵(例如,大希尔伯特空间中的 Fock 状态的叠加)更有效。'fft' 方法是处理具有大量激发 (>~50) 的密度矩阵的首选方法。
退货
W : 表示在指定范围 [xvec1,yvec1] 和 [xvec2,yvec2] """ 上计算的 Wigner 函数的数组值
"""使用迭代方法评估 Fock 状态的 wigner 函数 :math: |mp><nq|
Wigner 函数计算为 :math:W = \sum_{mpnq} \\rho_{mpnq} W_{mpnq}
其中 :math:W_{mpnq}
是密度矩阵 :math: 的 Wigner 函数|mp><nq|
。在此实现中,对于每个第 m*p 行,Wlist 包含 Wigner 函数 Wlist = [0, ..., W_mpmp, ..., W_mpnq]。只要计算出一个 W_mpnq Wigner 函数,相应的贡献就会添加到总 Wigner 函数中,加权通过密度矩阵中的相应元素 :math: rho_{mpnq}
."""
python - 如何在 Qutip 上的 Bloch 球体中绘制状态向量?
很简单。我定义了一个 Qutip 状态对象
我想要的是在布洛赫球体中绘制这种状态,但如果我只是这样做:
它给了我一个错误
IndexError:索引 1 超出轴 0 的范围,大小为 1
我想这是由于将我的状态解释为正常的 3D 向量。那么,这种情节有一种简单的方法吗?