如何在 Python 中获取数组的虚部(或实部)?
How do I get the imaginary part (or real part) of an array in Python?
我的 N 量子比特波函数有问题。我尝试准备状态 psi = a|0> + b*exp(2i\pi\theta)|1>
,我想检查 b*exp(2i\pi\theta)
的值是否分布均匀。
这是我得到波函数的方法:
N = 100
psi = np.full([100, 2], None)
for i in range(N) :
x = np.random.random()
y = y = np.exp(2j*np.pi*np.random.random())*np.sqrt(1-x**2)
psi[i] = [x,y]
然后我用这条线得到一个只有 y 的数组,并试图在复平面上绘制它们:
psi2 = psi[:,1]
plt.plot(psi2.real,psi2.imag)
我不明白为什么它不绘制虚部,我只是得到:
Result of psi2 in the complex plane
您需要使输出数组 psi
具有“复杂意识”。一种简单的方法是用复杂的值而不是 None
个对象来填充它:
psi = np.full([100, 2], None)
print(psi.dtype)
# object ... not good
psi = np.full([100, 2], 0j)
print(psi.dtype)
# complex128 ... numpy inferred the complex data type for psi
现在 .real
和 .imag
属性应该可以正常工作了。
plt.plot(psi2[:,1].real,psi2[:,1].imag, '.')
我的 N 量子比特波函数有问题。我尝试准备状态 psi = a|0> + b*exp(2i\pi\theta)|1>
,我想检查 b*exp(2i\pi\theta)
的值是否分布均匀。
这是我得到波函数的方法:
N = 100
psi = np.full([100, 2], None)
for i in range(N) :
x = np.random.random()
y = y = np.exp(2j*np.pi*np.random.random())*np.sqrt(1-x**2)
psi[i] = [x,y]
然后我用这条线得到一个只有 y 的数组,并试图在复平面上绘制它们:
psi2 = psi[:,1]
plt.plot(psi2.real,psi2.imag)
我不明白为什么它不绘制虚部,我只是得到:
Result of psi2 in the complex plane
您需要使输出数组 psi
具有“复杂意识”。一种简单的方法是用复杂的值而不是 None
个对象来填充它:
psi = np.full([100, 2], None)
print(psi.dtype)
# object ... not good
psi = np.full([100, 2], 0j)
print(psi.dtype)
# complex128 ... numpy inferred the complex data type for psi
现在 .real
和 .imag
属性应该可以正常工作了。
plt.plot(psi2[:,1].real,psi2[:,1].imag, '.')