よろめくビットはどう回る?

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

Information: よろめくビットはどう回る?