1qビットのよろめき
このワークシートはMath by Codeの一部です。
1.量子論理って何?
量子論理の特徴をつかむために対比をしてみよう。
<量子力学VS量子論理>
量子力学は物理で、量子論理は情報科学だ。
なぜこのちがいがあるのだろうか。
量子力学では
シュレーディンガー方程式を解くことが主役だった。
もともと運動エネルギーとポテンシャルエネルギーの和としてのハミルトニアンという物理量Hを
演算子^Hとした。これを状態ベクトルψに作用させると、ベクトルのスカラーE倍になるというのが
シュレーディンガー方程式だったね。
^H ψ(r)=Eψ(r)
この偏微分方程式の解が波動関数ψ(r)だった。
線形代数で見ると、固有値Eに対応する、固有ベクトルψ(r)が波動関数だった。
そもそも波動関数ψ(r)とは、線形代数では<r|ψ>であり、
位置の行ベクトル<r|と状態の列ベクトル|ψ>の内積だった。
量子論理では、物理量で重要な位置ベクトルがテーマからはずれる。
変わりに、量子状態ベクトル|ψ>そのものを情報として扱う。
だから、物理学から情報科学に変わるということだね。
でも安心してください。
偏微分方程式の変数置換や境界値による曲線の連続化
3次元空間での波として伝わる粒子群の挙動のイメージ化
これらの苦労から解放されます。
無限次元空間ではなく、有限次元になります。
多変数関数の連続変化の接続から段階的な行列積の接続になります。
ミクロの自然の解明から論理のゲームへ変わります。
<古典論理と量子論理>
※他のリソースとの違う規約をします。ご注意ください。
geogebraのテキストプログラムの制約から<、>は(,)を使うことにします。
・古典論理でも量子論理との共通点
列ベクトルaを、|a)とかき、ケットa と読む。状態ベクトルをさします。
行ベクトルbを、(b|とかき、ブラbと読む。
列ベクトル のことを簡単に、(a,b)とかくことがある。
状態aとは、a番目の成分が1の基底ベクトルをさす。
だから、2次元の基底は0番と1番があるとして、
2個の基底の例|0)=(1,0)、|1)=(0,1)の2つ。
また、基底ベクトルに限らず、状態ベクトルのサイズ(ノルム)は1。
(例)3次元の基底の例{|0),|1),|2)}={(1,0,0),(0,1,0),(0,0,1)}
重ね合わせ状態|φ)=a|0) + b|1)=(a,b)のとき、係数のノルムは1
・古典論理でも量子論理とのちがい
ベクトルの成分は古典論理では実数ですが、量子論理では複素数です。
ベクトルのサイズ(ノルム)は古典論理では、成分の和=1ですが、
量子論理では成分の2乗和=1です。(もちろん、成分xの2乗和は複素数ですから|x|^2=x*xです。)
2.ノルムの定義のちがいを実感しよう
古典論理でも量子論理でも重ね合わせはあります。
重ね合わせ状態|φ)=a|0) + b|1)=(a,b)のとき、係数のノルムは1
しかし、ノルムの定義がちがうため、重ね合わせ状態の意味が全く変わりますよ。
<古典論理はただの確率>
たとえば、コインの裏が0、表が1だとすると、
コインの目の確率が(a,b)=(1/2, 1/2)であることを
重ね合わせ状態|φ)=a|0) + b|1)=(a,b)のとき、a+b=1
と書けます。
コインをふっている間はまだ、結果はわかりませんから、可能性は半々です。
しかし、ふれば、表か裏のどちらかが出ます。
0.5の目がでたりしません。
表と裏と垂直な部分が接地して、コインが机の上に立つとかではないでしょう。
<量子論理は干渉性をもつ確率>
コインの目の裏と表の係数が変わります。
係数を(a,b)=(1/sqrt(2), 1/sqrt(2))としましょう。
重ね合わせ状態|φ)=a|0) + b|1)=(a,b)のときます。
重ね合わせの状態ベクトルのノルムが|a|^2+|b|^2=1/2+1/2=1になってますね。
これでは、たたの数式の規約のちがいのように思えるかもしれません。
係数は今正の実数でしたが、量子論理では負の数や虚数もOKです。
なぜでしょうか?
量子論理の重ね合わせの係数は
ただの確率ではなく、波の確率振幅だからです。
波ならば、負の振幅になったり、波の位相がずれたりすることがあるからです。
状態を波として重ねることができる。
波だから、ヤングの2重スリット実験のときのように波が強め合ったり、消しあったりする。
それが確率振幅です。
なぜ、線形結合の係数をなぜ、複素数にひろげたのか?
イメージがわきましたか。
もはや「粒」が「波」として伝わるという説明のための量子論ではなく、
波そのものの状態が重ね合わせということです。
たとえていうと、量子論理は酔っ払いのコインのようによろめいているのわけですね。
これが、量子の重ね合わせの状態です。
<重ね合わせの重ね合わせ>
たとえば、重ね合わせを重ね合わせてみよう。
|ψ1) = 1/sqrt(2)(|0) + e^i0 |1) )
|ψ2)= 1/sqrt(2)(|0) + e^kπ|1) )
2つの状態のノルムは1と1なので、
単純にたすと、ノルムは1をこえてしまいます。
だから、ノルムを1/sqrt(2)倍してたしましょう。
この2つを重ね合わせるとどうなるでしょうか。
|1)の係数の和を求めると、
オイラー等式から、
e^i0+e^iπ=(cos0+i sin0) + (cosπ+i sinπ)= (cos 0+cosπ) + i(sin0+sinπ)
=(1-1)+i(0+0)=0です。
極座標で考えると一瞬でわかります。(1;0)+(1;π)=1+(-1)=0
だから、重ね合わせは1/sqrt(2)( |ψ1)+ |ψ2))=1/sqrt(2) (2/sqrt(2)|0))=|0)
何と確率1で|0)に確定してしまいました。
ψ1とψ2の状態の波が干渉して、
|1)の係数は消しあい、|0)の係数は強めあったのです。
量子論理の係数は、ただの確率ではなく状態が干渉しあう波だということです。
よろめき具合が真逆な状態があわさると、
シャキーンと決まる。ファジーさがなくなることもある。
これが量子論理の重ね合わせの面白さです。
課題:geogebraで古典論理と量子論理の係数の自由度のちがいを視覚化しよう。
タイトルを
古典論理の重ね合わせの係数
とします
A=(0,0)
B=(1,0)
C=(0,1)
k0=Vector(A,B), k1=Vector(A,C)
provable=Curve(t,1-t, t, 0,1)
この線分上の点(a,b)をアニメーションで動かしましょう。
a=slider(0,1,0.1)
b=1-a
Classic=(a,b)
これで、いかに古典論理の自由度が小さいかがわかります。
同様にして
タイトルを
量子論理の重ね合わせの係数
とします。
A,B,C,k0,K1までは同じです。
theta=0~2πでスライダーでアニメーションします。
r=0~1でスライダーでアニメーションします。
a=r e^iθとします。
c=abs(a)^2
R=sqrt(1-c)
x^2+y^2=Rとして、円周に表示する名前をb-areaとします。
aがアニメーションで動くのに連動して、
bが存在する円周が動き、自由度の違いが目で見てわかりますね。
古典論理
量子論理
3.ブロッホ球で視覚化しよう
<1qビット>
0と1はコインの裏と表という話でしたが、
もともとは1ビットの2値からきています。
だから、これまでの話は1ビットの論理を古典と量子の対比をしてきたことになります。
古典の1ビットはbitですが、量子の1ビットは1qビット(qubit)と言います。
2の状態は I0)および |1 )を取りるので、
観測したときの状態は|Q)=a|0)+b|b)とかき、
係数a,bのノルムは1になり、
ガウス平面の半径1の円周内の2点の自由度がある、揺れ動く波の状態、千鳥足状態にある。
状態|Q)を観測して|0)がでる確率は|a|^2で、|1)がでる確率は|b|^2であるということしか言えない。
|0),|1)のどちらになるかは、観測で決まり、観測のたびに変わる。
その意味でa,bは確率でもある。
観測によって0か1のどちらかになるというのは古典論理のコインと何もかわらない。
<ブロッホ球>
状態を表す図がある。
それは球面極座標の図だ。
半径r、北極からの南緯θ、東経φの点Pがあるとしたら、
Pの極座標(r、θ、φ)を直交座標(x、y、z)に変換する式は有名だね。
(x、y、z)=(r cosφsinθ、 r sinφsinθ、 r cosθ )
量子論理では、状態も係数もベクトルのノルムが1だから、r=1とするのはよいですね。
(x、y、z)=( cosφsinθ、 sinφsinθ、 cosθ )
ここまでは、ふつうの球面極座標の話しだ。
ブロッホ球では、さらに次の設定が加わる。
北極を|0), 南極を|1)とする。
ここで、a= cos( θ/2), b= e^iφ sin(θ/2 )とおいてみよう。
すると、球面で観測できるのはx、y、zが実数の位置だけなので、a,bを実数にしてみよう。
zのθをθ/2にするとaに対応する。
e^iφ=cosφ+i sinφとして、
b=(cosφ+i sinφ) sin(θ/2 )=cosφsin(θ/2 )+i sinφsin(θ/2 )
だから、xのθをθ/2にすると、bの実部に対応する。すると、yはbの虚部に対応することがわかる。
θを図ではθ/2にすることはどんな効果があるのだろうか。
カンタンのためにφ=0としてみよう、(cosφ、sinφ)=(1,0)。
このとき、(x、y、z)=( sinθ、 0、 cosθ )、a= cos( θ/2), b= sin(θ/2 )と単純になった。
θを0→π→2πの順に動かすと、球面上の点Pのxは0→0→0、zは1→-1→1と変わる。
つまり、Pは「北極⇒南極⇒北極」と動くね。
θ/2は0→π/2→πの順に変わるので、a=cosは1→0→-1、b=sinは0→1→0と変わるね。
とういことは
重ね合わせ|Q)=a|0)+b|1)=1|0)+0|1)=0|0)+1|1)=-1|0)+0|1)
-1でも1でもノルム計算で2乗されるので、状態Qも「北極⇒南極⇒北極」となる。
ブロッホ球はノルム計算ルールにあう巧妙な視覚化だということがわかるね。
課題:ブロッホ球をgeogebraで作るにはどうしますか。
タイトルを「ブロッホ球にある状態ベクトルと係数の変化」としましょう。
x^2+y^2+z^2=1(ブロッホ球です。色の濃さを5くらいに下げます)
数式は右辺部分を入れてエンターしてから、自動でつく名前を左辺のように変えましょう。
表示するテキストを数式エディタにかきます。 Text_a = "a = cos(θ/2)=" + aa Text_b = "b =e^{iφ}sin(θ/2)= " + f g + "=" + h
立体図形のビューでテキストを追加します。 "θ="+θ+"\\φ="+φ+"\\"+Text_a+"\\"+Text_b
"と"の間が入力する部分で、+x+のx部分がgeogebraアイコンタブから選ぶ変数オブジェクトです。
しかし、これだけだと係数が数値だけしかわからないので、 オブジェクトhの見出しを「b」にして、表示したままにします。
また、(0,0,aa)という点を作り、見出しを「a」にしましょう。
こうすると、点Pの位置に連動して係数a,bがどう変わるかがわかりますね。
おもしろことに、geogebraはおりこうさんで、bつまりオブジェクトのhがfとgの2次元に分解されて
2Dのオブジェクトビューに表示されます。φを変えてみるとわかります。
また、点(0,0,1)をとり、見出しを「|0>」にして、
点(0,0,-1)をとり、見出しを「|1>」にすると、
よりブロッホ球らしくなるでしょう。
A = (0,0,0)
θ = Slider(0, 2π, 0.01) (アニメーション)
φ = Slider(0, 2π, 0.01)(初期値は0でいいでしょう)
P = ( sin(θ)*cos(φ), sin(θ)*sin(φ), cos(θ) )
(球面の点)
v = Vector(A, P)
aa=cos(θ/2)f=e^{(i φ)}g=sin(θ/2)h=f g