1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

qiskitのplot_state_paulivec(複数ビット時)

Last updated at Posted at 2021-03-26

はじめに

の記事で、下記のプロットについて書こうと思ったのですが、、、
書き始めたら意外に記事の量が膨らんでしまったので、こちらに切り出しました。
このグラフについて説明していきます。

サンプルコード
# https://qiskit.org/documentation/stubs/qiskit.visualization.plot_state_paulivec.html より引用
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
from qiskit.visualization import plot_state_paulivec
%matplotlib inline

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)

state = Statevector.from_instruction(qc)
plot_state_paulivec(state, color='midnightblue',
     title="New PauliVec plot")

また、他の量子コンピュータ関係の他の記事は、下記で紹介しています。

% basic braket 
\newcommand{\bra}[1]{\left\langle #1 \right|}
\newcommand{\ket}[1]{\left| #1 \right\rangle}
\newcommand{\bracket}[2]{\left\langle #1 \middle| #2 \right\rangle}
\newcommand{\ketbra}[2]{\left| #1 \right\rangle \left\langle #2 \right|}
\newcommand{\ketbraket}[3]{\left| #1 \right\rangle \left\langle #2 \middle| #3 \right\rangle}
% small-size
\newcommand{\bras}[1]{\left\langle {\scriptsize #1}  \right|}
\newcommand{\kets}[1]{\left| {\scriptsize #1}  \right\rangle}
\newcommand{\brackets}[2]{\left\langle {\scriptsize #1} \middle| {\scriptsize #2} \right\rangle}
\newcommand{\ketbras}[2]{\left| {\scriptsize #1} \right\rangle \left\langle {\scriptsize #2} \right|}
\newcommand{\ketbrakets}[3]{\left| {\scriptsize #1} \right\rangle \left\langle {\scriptsize #2} \middle| {\scriptsize #3} \right\rangle}
% Matrix
\newcommand{\tate}[2]{\begin{bmatrix} #1 \\ #2 \end{bmatrix}}
\newcommand{\yoko}[2]{\begin{bmatrix} #1 & #2 \end{bmatrix}}
\newcommand{\mtrx}[4]{\begin{bmatrix} #1 & #2 \\ #3 & #4 \end{bmatrix}}
% Matrix largesize
\newcommand{\tateL}[4]{\begin{bmatrix} #1 \\ #2 \\ #3 \\ #4 \end{bmatrix}}
\newcommand{\yokoL}[4]{\begin{bmatrix} #1 & #2 & #3 & #4 \end{bmatrix}}

計算アウトライン

状態ベクトル$\ket{\psi}$に対し、演算子$\rho=\ketbra{\psi}{\psi}$の計算結果をパウリ行列で分解した結果を表示している旨は、前回の記事で説明しておりますので、今回はこの計算を行い、上記グラフと一致するかを確認します。

サンプルコード
# https://qiskit.org/documentation/stubs/qiskit.visualization.plot_state_paulivec.html より引用
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
from qiskit.visualization import plot_state_paulivec
%matplotlib inline

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)

state = Statevector.from_instruction(qc)
plot_state_paulivec(state, color='midnightblue',
     title="New PauliVec plot")

まずは、サンプルコードを見ると、この量子回路は2量子のもつれあいである$Bell$状態を作ります。
つまり、

\ket{\psi} = \ket{Bell} = \frac{1}{\sqrt{2}}(\ket{00} + \ket{11})

です。

  • $\ket{00} = \ket{0} \otimes \ket{0}$とテンソル積となるので、$\ket{00},\ket{11}$等のテンソル積が必要になります
  • また、パウリ行列も、$XX,YY,ZZ,II$等の行列のテンソル積となるので、こちらも事前に計算が必要です。

よって、

  1. まずは、計算に必要なテンソル積を事前に計算し
  2. 状態ベクトル$\ket{\psi}$に対して、演算子$\rho=\ketbra{\psi}{\psi}$を計算する
  3. qiskitのplot_state_paulivecと見比べてみる

の順で進めたいと思います。

テンソル積を計算する

事前の準備です。計算に必要なテンソル積を計算しておきます。

|00>

\ket{00} = \ket{0} \otimes \ket{0} 
= \tate{1}{0} \otimes \tate{1}{0} 
= \tate{1 \times \tate{1}{0}}{0 \times \tate{1}{0}} 
= \tateL{1}{0}{0}{0}

|11>

\ket{11} = \ket{1} \otimes \ket{1} 
= \tate{0}{1} \otimes \tate{0}{1} 
= \tate{0 \times \tate{0}{1}}{1 \times \tate{0}{1}} 
= \tateL{0}{0}{0}{1}

II

II = \mtrx{1}{0}{0}{1} \otimes \mtrx{1}{0}{0}{1}
= \mtrx{1 \mtrx{1}{0}{0}{1}}{0}{0}{1 \mtrx{1}{0}{0}{1}} 
= 
\begin{bmatrix} 
   1 & 0 & 0 & 0 \\ 
   0 & 1 & 0 & 0 \\ 
   0 & 0 & 1 & 0 \\
   0 & 0 & 0 & 1
\end{bmatrix}

XX

XX = \mtrx{0}{1}{1}{0} \otimes \mtrx{0}{1}{1}{0}
= \mtrx{0}{1\mtrx{0}{1}{1}{0}}{1\mtrx{0}{1}{1}{0}}{0}
= 
\begin{bmatrix} 
   0 & 0 & 0 & 1 \\ 
   0 & 0 & 1 & 0 \\ 
   0 & 1 & 0 & 0 \\
   1 & 0 & 0 & 0
\end{bmatrix}

YY

YY = \mtrx{0}{-i}{i}{0} \otimes \mtrx{0}{-i}{i}{0} 
= \mtrx{0}{-i\mtrx{0}{-i}{i}{0} }{i\mtrx{0}{-i}{i}{0} }{0}
= 
\begin{bmatrix} 
   0 & 0 & 0 & -1 \\ 
   0 & 0 & 1 & 0 \\ 
   0 & 1 & 0 & 0 \\
   -1 & 0 & 0 & 0
\end{bmatrix}

ZZ

ZZ = \mtrx{1}{0}{0}{-1} \otimes \mtrx{1}{0}{0}{-1}
= \mtrx{1\mtrx{1}{0}{0}{-1}}{0}{0}{-1\mtrx{1}{0}{0}{-1}}
= 
\begin{bmatrix} 
   1 & 0 & 0 & 0 \\ 
   0 & -1 & 0 & 0 \\ 
   0 & 0 & -1 & 0 \\
   0 & 0 & 0 & 1
\end{bmatrix}

ρ=|ψ><ψ|を計算する

やっと、準備が整いました。

\ket{\psi} = \frac{1}{\sqrt{2}}(\ket{00} + \ket{11})
 =
\frac{1}{\sqrt{2}}
\left(
\tateL{1}{0}{0}{0} + 
\tateL{0}{0}{0}{1}
\right) = 
\frac{1}{\sqrt{2}}\tateL{1}{0}{0}{1}

の状態$\ket{\psi}$に対し、演算子$\rho=\ketbra{\psi}{\psi}$を計算します。

\rho =\ketbra{\psi}{\psi} = \frac{1}{\sqrt{2}}\frac{1}{\sqrt{2}}\tateL{1}{0}{0}{1}\yokoL{1}{0}{0}{1}
=
\frac{1}{2}
\begin{bmatrix} 
   1 & 0 & 0 & 1 \\ 
   0 & 0 & 0 & 0 \\ 
   0 & 0 & 0 & 0 \\
   1 & 0 & 0 & 1
\end{bmatrix}

この行列と、qiskitのグラフを見比べます

qiskitのplot_state_paulivecと見比べてみる

によると、

\displaylines{
\frac{1}{4}II + \frac{1}{4}XX - \frac{1}{4}YY + \frac{1}{4}ZZ
\\
= \frac{1}{4}
\left(
\begin{bmatrix} 
   1 & 0 & 0 & 0 \\ 
   0 & 1 & 0 & 0 \\ 
   0 & 0 & 1 & 0 \\
   0 & 0 & 0 & 1
\end{bmatrix}
+
\begin{bmatrix} 
   0 & 0 & 0 & 1 \\ 
   0 & 0 & 1 & 0 \\ 
   0 & 1 & 0 & 0 \\
   1 & 0 & 0 & 0
\end{bmatrix}
\color{red}{-1}
\begin{bmatrix} 
   0 & 0 & 0 & -1 \\ 
   0 & 0 & 1 & 0 \\ 
   0 & 1 & 0 & 0 \\
   -1 & 0 & 0 & 0
\end{bmatrix}
+
\begin{bmatrix} 
   1 & 0 & 0 & 0 \\ 
   0 & -1 & 0 & 0 \\ 
   0 & 0 & -1 & 0 \\
   0 & 0 & 0 & 1
\end{bmatrix}
\right)
\\
=\frac{1}{4}
\begin{bmatrix} 
   2 & 0 & 0 & 2 \\ 
   0 & 0 & 0 & 0 \\ 
   0 & 0 & 0 & 0 \\
   2 & 0 & 0 & 2
\end{bmatrix}
=\frac{1}{2}
\begin{bmatrix} 
   1 & 0 & 0 & 1 \\ 
   0 & 0 & 0 & 0 \\ 
   0 & 0 & 0 & 0 \\
   1 & 0 & 0 & 1
\end{bmatrix}
}

よって、先程の演算子$\rho=\ketbra{\psi}{\psi}$の計算結果と一致するので、

\therefore \rho =\ketbra{\psi}{\psi}= 0.25II + 0.25XX - 0.25YY + 0.25ZZ

とplot_state_paulivecのグラフが、上記の通り、Bell状態をパウリゲートのテンソル積で表現されていることがわかりました。

まとめ

別出しでまとめてみましたが、やはり、数式多めとなってしまいました。
どなたかのお役に立てばと。。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?