記事の内容
量子コンピュータと量子通信 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}
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
参考
-
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.