common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Contact
Event
Project
Research

Terms of service (Web service)

Terms of service (Quantum and ML Cloud service)

Privacy policy


Sign in
Sign up
common.title

中性原子量子シミュレータBloqade.jlをみてみる。その5。量子多体ラビ振動。

Yuichiro Minato

2022/10/31 12:49

原子が熱平衡状態にならず、いつまでも動的な変化をし続ける状態を量子多体スカー(傷跡)状態と呼ぶようです。今回はbloqade.jlをみてみて、量子多体スカー状態をリュードベリ原子で確認してみます。

参考

https://queracomputing.github.io/Bloqade.jl/dev/tutorials/3.quantum-scar/main/

using Bloqade
using PythonCall
using Random

plt = pyimport("matplotlib.pyplot");

多体ラビ振動

最初にスカー状態を確認する前に、多体系でのラビ振動のふるまいについて確認しています。

3量子ビット用意します。

atom1 = generate_sites(ChainLattice(), 1, scale = 3.0)
atom2 = generate_sites(ChainLattice(), 2, scale = 3.0)
atom3 = generate_sites(ChainLattice(), 3, scale = 3.0)

距離は3マイクロメートルです。

h1 = rydberg_h(atom1; Δ = 0, Ω = 2π * 2)
h2 = rydberg_h(atom2; Δ = 0, Ω = 2π * 2)
h3 = rydberg_h(atom3; Δ = 0, Ω = 2π * 2)

パラメータはデルタを0にして、ガンマのみを操作しています。

nqubits: 3
+
├─ [+] ∑ 2π ⋅ 8.627e5.0/|r_i-r_j|^6 n_i n_j
├─ [+] 2π ⋅ ∑ σ^x_i
└─ [-] 2π ⋅ 0.0 ⋅ ∑ n_i

原子同士の距離は固定、ガンマだけ操作されています。

reg1 = zero_state(1)
reg2 = zero_state(2)
reg3 = zero_state(3)

初期状態は全部0です。

total_time = 1.5
clocks = 0.0:1e-2:total_time
prob1 = KrylovEvolution(reg1, clocks, h1)
density1 = zeros(1, length(clocks));

for info in prob1
density1[1, info.step] = rydberg_density(info.reg, 1)
end

fig, ax = plt.subplots()
ax.plot(clocks, density1[1, :])
ax.set_xlabel("Time (μs)")
ax.set_ylabel("Single Rydberg Probability")
ax.set_title("Rabi Oscillation: Single Atom Case")
fig

ここではクリロフ部分空間法を使ったクリロフ時間発展を使ってるらしいですが、何のことかさっぱりなので、グラフを見ます。

時間がたつごとに、1量子ビットが0と1を行ったり来たりがわかります。

ここでリュードベリ原子が十分に離れていればいいんですが、原子同士が近づくとブロッケードでそう簡単にはならないようです。

prob2 = KrylovEvolution(reg2, clocks, h2);
density2 = zeros(2, length(clocks));

for info in prob2
for i in 1:2
density2[i, info.step] = rydberg_density(info.reg, i)
end
end
density2 = sum(density2, dims = 1);

prob3 = KrylovEvolution(reg3, clocks, h3);
density3 = zeros(3, length(clocks));

for info in prob3
for i in 1:3
density3[i, info.step] = rydberg_density(info.reg, i)
end
end
density3 = sum(density3, dims = 1);

量子ビット数によって、ルートNにラビ周波数が変化するようです。

fig, ax = plt.subplots()
ax.plot(clocks, density1[1, :])
ax.plot(clocks, density2[1, :])
ax.plot(clocks, density3[1, :])
ax.set_xlabel("Time (μs)")
ax.set_ylabel("Rydberg Probability")
ax.set_title("Many-body Rabi Oscillation for 1-, 2-, and 3-atom system")
ax.legend(["1 atom", "2 atoms", "3 atoms"], loc = "lower right")
fig

この図から、量子ビット数が増えてもリュードベリ半径内で複数の原子が励起できないため、populationが1以上にならないのと、周波数が変わるという現象が確認できるということです。この次の記事で量子多体スカー状態を見てみたいと思います。

© 2025, blueqat Inc. All rights reserved