1
1

量子コンピュータと量子通信2章 解答例【2.1, 2.2, 2.3, 2.4, 2.5】

Posted at

記事の内容

量子コンピュータと量子通信 I-量子力学とコンピュータ科学-の演習問題の解になります。演習問題を解いた後の採点に使っていただきたいで
す!また、プログラミングで解を求められる部分はQuTipを使った解を示しますので、実際にコーディングで理解を深めることもおすすめです!

私から

記事をかく際の励みになります!
役に立ったらいいねをお願いします(m´・ω・`)m

演習2.1

1\begin{pmatrix}
   1 \\
   -1  
\end{pmatrix}+
1\begin{pmatrix}
   1 \\
   2  
\end{pmatrix}-1
\begin{pmatrix}
   2 \\
   1  
\end{pmatrix}=
\begin{pmatrix}
   0 \\
   0  
\end{pmatrix}

となり、定義から3つのベクトルは線形従属である。

演習2.2

A=\begin{pmatrix}
   a_{00} & a_{01} \\
   a_{10} & a_{11}  
\end{pmatrix}

とすると、題意より

a_{00} = 0,\ a_{01} = 1,\ a_{10} = 1,\ a_{11} = 0,\ A=\begin{pmatrix}
   0 & 1 \\
   1 & 0  
\end{pmatrix}

となる。

|+\rangle = \frac{|0\rangle+|1\rangle}{2},\ |-\rangle=\frac{|0\rangle+|1\rangle}{2}

という基底を準備し、

A|+\rangle=|-\rangle,\ A|-\rangle=|-\rangle

を満たすAの行列表現は、

A=\begin{pmatrix}
   1 & 0 \\
   0 & -1  
\end{pmatrix}
Python
A = Qobj([[0,1],[1,0]])
ket0 = Qobj([[1],[0]]).unit()
ket1 = Qobj([[0],[1]]).unit()
print('A|0>=', A*ket0)
print('A|1>=', A*ket1)

A = Qobj([[1,0],[0,-1]])
ketxp = Qobj([[1],[1]]).unit()
ketxn = Qobj([[1],[-1]]).unit()
print('A|+>=', A*ketxp)
print('A|->=', A*ketxn)
出力
A|0>= Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[0.]
 [1.]]
A|1>= Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[1.]
 [0.]]
A|+>= Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[ 0.70710678]
 [-0.70710678]]
A|->= Quantum object: dims = [[2], [1]], shape = (2, 1), type = ket
Qobj data =
[[0.70710678]
 [0.70710678]]

演習2.3

題意より、

A|v_j\rangle = \sum_iA_{ij}|w_i\rangle,\ B|w_i\rangle = \sum_kB_{ki}|x_k\rangle

である。$|v_j\rangle$に$BA$を左から作用させると、

\begin{matrix}
BA|v_j\rangle = B(A|v_j\rangle) \\
     \ \ = \sum_iA_{ij}(B|w_i\rangle \\ 
      \  \ \ = \sum_i\sum_kA_{ij}B_{kj}|x_k\rangle \\
    \  = (BA)_{kj}|x_k\rangle
\end{matrix}

のように変形できる。この式変形により、$BA$の行列表現は$B$と$A$の行列積であることが示せた。

演習2.4

$n$次元ベクトル空間$V$の基底を$|v_i\rangle$とする。また、線形オペレータ$A:V→V$を定義する。この線形オペレータの行列の形はわからず、$|v_i\rangle$を入力し、$|v_i\rangle$を出力するオペレータであるとする。すると、

A|v_i\rangle = 1|v_i\rangle + \sum_{j≠i}0|v_j\rangle

と式変形できる。これはクロネッカーのデルタを用いて、

A|v_i\rangle = \sum_{j}\delta_{i,j}|v_j\rangle

と書き換えることができる。これにより$A_{i,j} = \delta_{i,j}$であることがわかるので、この$A$は対角成分がすべて$1$で、ほかの成分がすべて$0$の行列であることがわかる。

演習2.5

$\textbf{C}^n$上で内積$(・,・)$は以下のように定義される。

\begin{matrix}
((y_1, ..., y_n), (z_1, ..., z_n)) ≡ \sum_{i}y_i^*z_i \\
                \ \ = [y_1^*,..., y_n^*] 
\begin{bmatrix}
   z_1  \\
   ⋮ \\
   z_n 
\end{bmatrix}
\end{matrix}

これが内積空間かどうかを教科書の$(1)~(3)$に対してチェックする。

(1)

\begin{matrix}
((y_1,...,y_n),\sum_k\lambda_k(z_1,...,z_n))=\sum_iy_i^*\sum_k\lambda_kz_{ik} \\
               \ \ =\sum_k\lambda_k\sum_iy_i^*z_{ik}\\
                        \ =\sum_k\lambda_k((y_1,...,y_n),(z_1,...,z_n)_k)
\end{matrix}

(2)

\begin{matrix}
((y_1,...,y_n),(z_1,...,z_n))=\sum_iy_i^*z_{i} \\
             \ \ =\sum_i(y_iz_i^*)^*\\
         \     \ 
                        = (\sum_iz_i^*y_i)^* \\
                                          \ = (((y_1,...,y_n),(z_1,...,z_n)))^*
\end{matrix}

(3)

任意のベクトル$|y\rangle$に関して、

(|y\rangle, |y\rangle)=\sum_iy_i^2 (\ge 0)

等号成立は$|y\rangle$がゼロベクトルの時である。

(\textbf{0}, \textbf{0})=0

参考

  • 量子コンピュータと量子通信 I-量子力学とコンピュータ科学-

  • J. R. Johansson, P. D. Nation, and F. Nori: “QuTiP 2: A Python framework for the dynamics of open quantum systems.”, Comp. Phys. Comm. 184, 1234 (2013), DOI: 10.1016/j.cpc.2012.11.019.

  • J. R. Johansson, P. D. Nation, and F. Nori: “QuTiP: An open-source Python framework for the dynamics of open quantum systems.”, Comp. Phys. Comm. 183, 1760–1772 (2012), DOI: 10.1016/j.cpc.2012.02.021.

1
1
0

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
1