量子力学の基本：スピンと測定の不思議

$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$

自作の量子計算シミュレータを使って、量子力学の基本を確認するよ（デバッグも兼ねて、汗）。

* [量子計算シミュレータ、つくってみた](https://qiita.com/Sam_N/items/310b18c584e6fc686387)
* [qlazy - Quantum Computer Simulator](https://github.com/samn33/qlazy)

量子力学の歴史に残る有名な実験に、シュテルン・ゲルラッハの実験というのがあります。磁場を使って電子の角運動量（スピン）を測定したところ、とても不思議なことが起きることがわかり、量子力学の理論構築に多大な影響を与えたということで、大抵の量子力学の教科書に載っています。これの詳細な内容については、例えば、以下に良い解説がありますので、そちらを見ていただくとして、ここでは、その実験装置をイメージしながら、シミュレータで机上実験することを通して、量子力学の不思議さを実感してみたいと思います。

* [EMANの物理学:量子力学:スピンの振る舞い](http://eman-physics.net/quantum/spin2.html)

といっても、そんな難しいことをやる気はないので、あんまり身構えないで、気軽にお付きあいくださいませ。

## 机上実験

これからやってみようと思うのは、ある方向をもったスピンを用意して、別の角度からの測定を繰り返して、その結果を確認する、ということです。

まず、[qlazy](https://github.com/samn33/qlazy)を対話モードで起動して、1つの量子ビット（電子のスピンと思ってください）の状態を $\ket{0}$ に初期化します。

```sh
$ qlazy
>> init 1
```

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391058/b3e845e6-252b-c597-4a59-de254d90d77f.png" width=50%>


ブロッホ球でいうと、量子状態は北極の地点にあります。showで確認すると、

```sh
>> show
c[0] = +1.0000+0.0000*i : 1.0000 |+++++++++++
c[1] = +0.0000+0.0000*i : 0.0000 |
```

となります（c[0]は $\ket{0}$ の係数、c[1]は $\ket{1}$ の係数を表しています）。ここで、このスピンに対して、Z軸方向に磁場をかけて、上向き・下向きのどっちの状態が観測されるかを見てみます。mzとやると、それをシミュレートできます。デフォルトでは100回測定して、100回目の状態をlast stateとして表示します。

```sh
>> mz
direction of measurement: z-axis
frq[0] = 100
last state => 0
```

当たり前ですが、最初にZ軸方向上向きのスピンを用意したので、100回とも全部上向きの測定結果になります。さらにmzを何度繰り返しても、同じ結果になりますので、このスピンの方向は確かにZ軸上向きである、と結論づけても良さそうです。

では、次に、測定する方向、つまり磁場の方向を変えて測定してみましょう。例えば、X軸方向に磁場をかけたら、どうなるでしょうか？たったいま、スピン方向は、100%の確率でZ軸の上向きであると確認しました。それと垂直方向であるX軸方向の成分を測定することになるので、答えはゼロかなー、とか、あるいは磁場の影響でX軸プラス方向に100%寝てしまうかなー、という気がしてきます。が、ここで不思議なことが起きます。では、測定してみましょう。mxとやります。

```sh
>> mx
direction of measurement: x-axis
frq[u] = 49
frq[d] = 51
last state => u
```

なんと、X軸方向とその反対方向の成分が大体同じ確率で測定されました。最後の測定結果はX軸プラス方向です（ここで、測定軸に対して上向き（正の方向）をu、下向き（負の方向）をdで表現しています。Z軸の上向き下向きを0,1で通常表すので、それと区別するためです。もしかすると、u/dではなく+/-の方がこの場合しっくりくるかもしれませんが、適宜読み替えてください）。

もう一回、同じ測定をやると、100%の確率でX軸プラス方向という結果になります。

```sh
>> mx
direction of measurement: x-axis
frq[u] = 100
last state => u
```

状態を見ると、

```sh
>> show
c[0] = +0.7071-0.0000*i : 0.5000 |++++++
c[1] = +0.7071-0.0000*i : 0.5000 |++++++
```

となり、これは$\ket{0}$と$\ket{1}$が均等に重なり合った状態を表しています。式で書くと、

```math
\ket{\psi} = \frac{1}{\sqrt{2}} (\ket{0} + \ket{1})
```

です。ブロッホ球でいうと、X軸のプラス方向をまさに表しています。

次に、再びZ軸方向の測定をやってみると、どうなるか見てみましょう。

```sh
>> mz
direction of measurement: z-axis
frq[0] = 46
frq[1] = 54
last state => 1
```

今度は、半々の確率で上下の結果が別れました。最後の測定結果は下向きです。状態を見ると、

```sh
c[0] = +0.0000+0.0000*i : 0.0000 |
c[1] = +1.0000-0.0000*i : 1.0000 |+++++++++++
```

てな感じで、ちゃんと下向きになっています。

ここまで、やってきたことをまとめると、

1. Z軸上向きスピンを用意した（つもり）
2. Z軸方向の測定をやった、上向きだった（確かに）
2. X軸方向の測定をやった（プラス方向マイナス方向が半々、ん？）
3. Z軸方向の測定をやった、下向きだった（あれ？）

ということで、不思議ですねー、という机上実験でした。

## 数式による説明

何が起きていたか、数式で確認しておきます。

* Z軸上向きスピンを用意した

```math
\ket{\psi} = \ket{0}

```

* Z軸方向の測定（確率）
    * 上向きの確率：  $|\braket{0}{\psi}|^{2}=|\braket{0}{0}|^{2}=1$  
    * 下向きの確率：  $|\braket{1}{\psi}|^{2}=|\braket{1}{0}|^{2}=0$

* 上向きだった（測定後の状態）

```math
\ket{0} \rightarrow \ket{0}\braket{0}{0} = \ket{0}
```

* X軸方向の測定（確率）

    * 上向きの確率：$|\braket{+}{0}|^{2}=|\frac{1}{\sqrt{2}}(\bra{0}+\bra{1})\ket{0}|^{2}
= \frac{1}{2} |\braket{0}{0}|^{2} = \frac{1}{2}$
    * 下向きの確率：$|\braket{-}{0}|^{2}=|\frac{1}{\sqrt{2}}(\bra{0}-\bra{1})\ket{0}|^{2}
= \frac{1}{2} |\braket{0}{0}|^{2} = \frac{1}{2}$

* X軸プラス方向だった（測定後の状態）

```math
\begin{align}
\ket{0} &\rightarrow \ket{+}\braket{+}{0} \\  
&= \frac{1}{2} (\ket{0} + \ket{1})(\bra{0} + \bra{1}) \ket{0} \\
&= \frac{1}{2} (\ket{0} + \ket{1}) \\
&normalize: \rightarrow \frac{1}{\sqrt{2}} (\ket{0} + \ket{1}) = \ket{+}
\end{align}
```

* Z軸方向の測定（確率）

    * 上向きの確率：$|\braket{0}{+}|^{2}=|\frac{1}{\sqrt{2}}\bra{0}(\ket{0}+\ket{1})|^{2}
= \frac{1}{2} |\braket{0}{0}|^{2} = \frac{1}{2}$
    * 下向きの確率：$|\braket{1}{+}|^{2}=|\frac{1}{\sqrt{2}}\bra{1}(\ket{0}+\ket{1})|^{2}
= \frac{1}{2} |\braket{1}{1}|^{2} = \frac{1}{2}$

* Z軸下向きだった（測定後の状態）

```math
\begin{align}
\ket{+} &\rightarrow \ket{1}\braket{1}{+} \\
&= \frac{1}{\sqrt{2}}\ket{1}\bra{1}(\ket{0}+\ket{1})
= \frac{1}{\sqrt{2}} \ket{1} \\
&normalize: \rightarrow \ket{1} = \ket{\psi^{\prime}}
\end{align}
```

以上