Qiskitで状態ベクトルを確認する(statevector_simulator)

Qiskitで量子回路を構築した後、量子ビットがどのような状態になっているかを確認したい場合がある。

statevector_simulatorAerによりバックエンドとして提供され、量子ビットの状態を状態ベクトルとして出力することができる。

Simulators — Qiskit 0.43.1 documentation

qiskit.result.Result.get_statevector — Qiskit 0.43.1 documentation

例えば、0番目のビットにXゲートを作用させる X_0|00\rangle = |01\rangleを確認するには以下のようにする。

from qiskit import QuantumCircuit, Aer, execute

qc = QuantumCircuit(2)
qc.x(0)
 
job = execute(qc, Aer.get_backend('statevector_simulator'))
    
print(job.result().get_statevector())
# Statevector([0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j], dims=(2, 2))

または、以下のようにバックエンドのrunメソッドを利用することもできる。 どちらも結果は同じ。

from qiskit import QuantumCircuit, Aer

qc = QuantumCircuit(2)
qc.x(0)
 
job = Aer.get_backend('statevector_simulator').run(qc)
    
print(job.result().get_statevector())
# Statevector([0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j], dims=(2, 2))

なお、回路の行列表現を確認するunitary_simulatorについては以下の記事を参照。

happy-quantum.hateblo.jp

また、回路の初期化方法については以下の記事を参照。

happy-quantum.hateblo.jp