よろめくビットはどう回る?
このワークシートはMath by Codeの一部です。
1qビットは、2つの正規基底列ベクトル|0)=(1,0)、|1)=(0,1)の複素係数の線形結合でした。
状態ベクトル|Q)=a|0)+b|1)で、係数(a,b)のノルムも1で、列ベクトルです。
量子状態はいってみれば、千鳥足でよろめいている状態だった。しかも複素数の範囲で。
これ以上考えられないほどの自由なよろめきですね。
ただし、伸びたり縮んだりしてはいけないのです。
複素数としてのノルム=1は絶対ルールです。
今回は、線形代数で学んだユニタリー行列を思い出してほしい。
ユニタリー行列Uは転置して共役にしたU†との積がIになる、UU†=I
という美しい関係があり、ベクトルにかけるとベクトルのノルムを変えない、
つまり、複素数での合同変化、1倍のような行列、だから、Unit的行列、ユニタリー行列なんだね。
というわけで、U|Q)で|Q)がどうなるかをさぐるところから始めてみたい。
1.パウリとアダマールはどう回しているのか
<パウリ行列>
パウリ行列というものがあります。
これを基底ベクトルに作用させてみよう。
Iは無変化、恒等作用です。
次はXです。
X|0)=Xの左の列ベクトル=|1)、
X|1)=Xの右の列ベクトル=|0)。
南極と北極を反転させてますね。0,1をノー・イエスとしたら、否定になってます。
だから、Xを反転ゲート、NOTゲートと呼ばれます。
Y|0)=Xの左の列ベクトル=-i|1), Y|1)=Xの右の列ベクトル=i|0)。
Yは否定してしかも虚軸で互いに逆向き90°回転してます。
Z|0)=|0)、Z|1)=-|1)
Zは、否定はせずに、片方だけ符号を反転してます。
影響しているのは|1)だけなので、南極|1)にいる状態のときだけ複素平面で反転しますね。
<アダマール行列>
さっきパウリ行列をみたときに、Yは否定して回転もしてました。
X,Zは単独では、否定か反転でした。これを合体すると、否定と反転の合わせ技が生まれます。
よろめいている状態をさらによろめかせる感じですね。
列ベクトルを取り出したあとに正規化するために1/sqrt(2)倍をつけるのを忘れないようにします。
これが、噂のアダマール行列です。
H=
Hの働きを確認しよう。
H|0)=1/sqrt(2)(1,1)=1/sqrt(2)(|0) + |1))
H|1)=1/sqrt(2)(1,-1)=1/sqrt(2)(|0) - |1))
北極も、南極もHをかけると、どっちもあるところ、赤道に引き倒されるようですね。
混乱の極みのような気がするでしょう。
でもHHと2回連続してかけるとどうでしょう。
HH|0)=1/sqrt(2)(H|0) + H|1))=1/sqrt(2)(1/sqrt(2)(|0) + |1)) + 1/sqrt(2)(|0) - |1)))=1/sqrt(2)(2/sqrt(2)|0) =|0)
HH|1)=1/sqrt(2)(H|0) - H|1))=1/sqrt(2)(1/sqrt(2)(|0) + |1)) - 1/sqrt(2)(|0) + |1)))=1/sqrt(2)(2/sqrt(2)|1) =|1)
あ~ら不思議。
HでひどくなったふらつきがHHと2回かけたらピタッともとにもどってますね。
HH=Iということですね。
また、H|0)の結果とH|1)の結果が非常に似ていて、|1)の係数が+1かー1かだけですね。
そこで、H|0)=|+), H|1)=|-)と略記すると、Hさんが活躍する場面の数式がカンタンになったりします。
たとえば、Hの働きは、
H|0)=|+)、H|1)=|-)、H|+)=|0)、H|-)=|1)、まとめてHH=I
と一行でかけますね。
ところで、
Hはユニタリー行列だからHH†=Iから、H†=H-1。
しかも、Hは実数で対称行列なんだから、H=H†。
そうすれば、HH=H†H=H-1H=Iになることは、自明だよね。
2.位相を変える行列
<位相をかえるS,T>
列ベクトル|0)と列ベクトル(0, e^iθ)を並べた行列
それが位相行列P(θ)だ。
これ自体よりも、この派生が面白い。
θ=π/2とすると、e^iθは複素平面での90°回転だから虚数単位iになる。
それが、
S=P(π/2)=[(1,0), (0,i) ]。
また、
θ=π/4とすると、e^iθは複素平面での45°回転だから(1+i)/sqrt(2)になる。
それが、
T=P(π/4)=[(1, 0), (0, e^iπ/4) ]
となるね。
SとTはPの子どもで、特にSとTは兄弟のようなものだ。
なぜか、
もちろん、S|0)=T|0)=|0)と北極は動かさない。
S|1)= (0,i)=i|1)=e^iπ/2 |1)
同様にT|1)= e^iπ/4 |1)だから、
TT|1)= T(e^iπ/4 |1)=e^iπ/4 T|1)=e^iπ/4*e^iπ/4 |1)=e^iπ/2 |1) = S|1)
T^2=S
となる。
<重ね合わせ状態を変換しよう>
さて、これまで、X,Y,Z,H,S,Tの6個の変換ゲートをみてきた。
重ね合わせ状態がどうなるかを数式でかいて眺めてみよう。
けっこう美しい。
状態|Q)= a|0) + b|1)とするとき、
X|Q)=X(a|0)+b|1))=aX|0)+bX|1) = a|1)+ b|0)
Y|Q)=Y(a|0)+b|1))=aY|0)+bY|1) = ai|1) - bi|0)
Z|Q)=Z(a|0)+b|1))=aZ|0)+bZ|1) = a|0) - b|1)
H|Q)=H(a|0)+b|1))=aH|0)+bH|1)=a|+) + b|-)
S|Q)=S(a|0)+b|1))=aS|0)+bS|1)= a|0) + bi|1)
T|Q)=T(a|0)+b|1))=aT|0)+bT|1)= a|0) + b(1+i)/sqrt(2) |1)
なんといっても、X,Z,H,Sが美しい。
Tはあまり美しくないね。
でも、TはSのかわいい弟分でPの大事な子どもだから大切にしよう。
<係数a,bとブロッホ球の点位置の関係の謎にせまる>
r=1の球面座標(x、y、z)=( cosφsinθ、 sinφsinθ、 cosθ )で、
ブロッホ球でa=cos(θ/2), b=e^iφ sin(θ/2)=cosφsin(θ/2)+i sinφsin(θ/2)と係数を計算しました。
そのとき、θは半分になっているけれど、
bの実部がPのx座標で、bの虚部がPのy座標に似てる感じがしませんでしか?
また、では、z座標はaと関係がないのか?
たとえば、a^2+b^2=cos^2(θ/2)+(e^iφ)^2 sin^2(θ/2)=1となるには、(e^iφ)^2=1が必要。
では2乗の差は?
(e^iφ)^2=1を使うとカンタンになります。
倍角の公式が使えますよ。cos 2 α = cos 2 α − sin 2 α
|a|^2ー|b|^2=cos^2(θ/2) - sin^2(θ/2)=cosθ=z
2乗といえば、次数をそろえて、abを求めてみましょう。複素数のノルム2乗がa*aで求めるように、
abもa*bとab*を求めてみよう。倍角公式sin 2 α = 2 sin α cos α が使えますよ。
a*b+ab*=2cos(θ/2)cosφsin(θ/2)=cosφ*2sin(θ/2)cos(θ/2)=cosφ sinθ=x
では、yはどうでしょうか。
符号をかえてi倍してみよう。
i(a*b-ab*)=i2cos(θ/2) (-i sinφsin(θ/2))=sinφ *2sin(θ/2)cos(θ/2)=sinφ sinθ=y
(x,y,z)=(a*b+ab*, i(a*b-ab*), a^2ーb^2)です。
係数a,bから重ね合わせの状態を球面上の点Pのデカルト座標を求めることができました。
すばらしい。
<ブロッホ球と変換ゲートをつなごう>
2次元のはずが3次元になるブロッホ球の謎が解けました。
さあ、2Dの3D化をしよう。
北極|0)=(1,0)⇒(x,y,z)=(0,0,1)
南極|1)=(0,1)⇒(x,y,z)=(0,0,-1)
では、|+)は1/sqrt(2)(|0)+|1))=(1/sqrt(2), 1/sqrt(2))⇒
a=b=1/sqrt(2)。だからa*b=ba*=ab=|a|^2=|b|^2=1/2。(x,y,z)=(1,0,0)となり、x軸の正切片だ。
赤道の西の方位としよう。
|-)は1/sqrt(2)(|0)ー|1))=(1/sqrt(2), -1/sqrt(2))⇒
だから|a|^2=|b|^2=1/2。a*b=ba*=ab=-1/2だから、(x,y,z)=(-1,0,0)となり、x軸の負切片だ。
赤道の東の方位としよう。
6つの操作による具体的な動きを探ってみよう。
状態ベクトルの基底を|0),|1)とするとき、
状態|Q)= (a, b)とするとき、点P(x,y,z)がどう動くだろうか。
X|Q)= (b,a) ⇒(x, -y,-z) ということはx軸を中心にyz平面を180°回転する。
Y|Q)= (- bi,ai) ⇒(-x, y,-z) y軸を中心にxz平面を180°回転する。
Z|Q)= (a, -b) ⇒(-x, -y, z) z軸を中心にxy平面を180°回転する。
H|Q)=1/sqrt(2) (a+b,a-b) 南北が東西に入れ替わる。x軸とz軸の中央を軸として180°回転。
xとzが入れ替わり、y座標が反転するから ⇒(z, -y,x)
S|Q)= (a,bi) ⇒z軸中心に90度回転 (-y,x, z)
T|Q)= (a, b(1+i)/sqrt(2)) ⇒兄貴Sの半分の動きだから、z軸中心に45度回転
(x cos(π/4) -y sin(π/4), x sin(π/4) + y cos(π/4), z)
由来はともかく、ブロッホ球での点のデカルト座標で比べると、
TT=S、SS=Zと、STZ兄弟が浮かび上がります。X,Y,Z,S,Tは親戚です。パウリファミリーですね。
Hだけは異質で、xとzの2軸の交換とy軸反転というドラマチックな操作ですね。
課題:状態に対する操作で点Pがどう変わるかを視覚化しよう。
xx=cosφsinθ
yy=sinφsinθ
zz=cosθ
たとえば、 Px=(xx,-yy,-zz) Py=(-xx,yy,-zz) Pz=(-xx,-yy,zz) Ph=(zz,-yy,xx) Ps=(-yy,xx,zz) px=Vector(A,Px) py=Vector(A,Py) pz=Vector(A,Pz) ph=Vector(A,Ph) ps=Vector(A,Ps) などとおき、 オンオフ表示ができるように、各点とベクトルをセットにしてチェックボックスを順に Xゲート、Yゲート、Zゲート、Hゲート、Sゲートのように並べて貼っていけばよいですね。
A = (0,0,0)
θ = Slider(0, 2π, 0.01) (アニメーション)
φ = Slider(0, 2π, 0.01)(初期値は0でいいでしょう)
P = ( xx, yy, zz )
に対して、