python-3.x - 使用 QuTiP 绘制相干态的维格纳函数时,会出现奇怪的图案

标签 python-3.x qutip

今天,当我使用 Python 中的开源量子工具箱 QuTiP 绘制相干态的维格纳函数时,我注意到了一些奇怪的事情。

当我绘制情节时,我注意到情节边缘周围有这些不应该出现的奇怪图案。我相信这只是某种数字错误,但我不知道如何消除或最小化它们,或者最重要的是:是什么导致了它们。

这是代码

# import packages
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib as mpl
from matplotlib import cm
from qutip import *

N = 60 # number of levels in Hilbert space

# density matrix of a coherent state
rho_coherent = coherent_dm(N, 1-1j)

X = np.linspace(-3, 3, 300)
Y = np.linspace(-3, 3, 300)

# Wigner function
W = wigner(rho_coherent, X, Y, 'iterative', 2)

X, Y = np.meshgrid(X, Y)

# Color Normalization
class MidpointNormalize(colors.Normalize):
    def __init__(self, vmin=None, vmax=None, midpoint=None, clip=False):
        self.midpoint = midpoint
        colors.Normalize.__init__(self, vmin, vmax, clip)
    def __call__(self, value, clip=None):
        x, y = [self.vmin, self.midpoint, self.vmax], [0, 0.5, 1]
        return np.ma.masked_array(np.interp(value, x, y))

# contour plot
plt.subplot(111, aspect='equal')
plt.contourf(X, Y, W, 100, cmap = cm.RdBu_r, norm = MidpointNormalize(midpoint=0.))
plt.show()

这是情节

enter image description here

您可以清楚地看到边缘周围的蓝色 Blob 不应该在那里!蓝点表示维格纳函数在该点为负,但相干态应该具有到处为正的维格纳函数!

我还注意到,当我将 linspace 步骤从 300 减少到 100 时,蓝色部分消失了。

如果有人能解释导致此问题出现的原因,我们将不胜感激。

最佳答案

这只是由于截断造成的。当使用有限数量的模式(在您的情况下 N=60)时,维格纳函数将在某个时刻变为负值。

减少 linspace 步长会将您在绘图上看到的负区域带入零值增量,并将这些区域显示为零。减少 linspace 步骤可能是解决您问题的最佳方案。您的绘图只会与截断引入的错误一样准确,因此只需降低分辨率,直到这些错误消失即可。

关于python-3.x - 使用 QuTiP 绘制相干态的维格纳函数时,会出现奇怪的图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51176196/

相关文章:

python - Matplotlib 中 X 轴中的换行符导致不希望的窗口大小调整/跳跃/闪烁行为

python - 在 Python 3 上使用 winsound 同时演奏多个音符

python - 如何对输入列表重复一个函数?

python - 如何在布洛赫球体上绘图时更改线宽

python - 使用 Qutip 和 slepc4py 在 HPC 上快速寻找特征向量

Python aiohttp 请求停止但没有引发异常

Python 和 Nameko - GreenSSLSocket 没有公共(public)构造函数。实例由 SSLContext.wrap_socket() 返回。

Python:将文本文件中的特定单词大写