Google ClassroomGoogle Classroom
GeoGebraClasse GeoGebra

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

このワークシートは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θ= 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θ= では、yはどうでしょうか。 符号をかえてi倍してみよう。 i(a*b-ab*)=i2cos(θ/2) (-i sinφsin(θ/2))=sinφ *2sin(θ/2)cos(θ/2)=sinφ sinθ= (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θ
  • A = (0,0,0)
  • θ = Slider(0, 2π, 0.01) (アニメーション)
  • φ = Slider(0, 2π, 0.01)(初期値は0でいいでしょう)
  • P = ( xx, yy, zz )
  • に対して、
  • たとえば、
  • 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ゲートのように並べて貼っていけばよいですね。
  • ブロッホ球で状態をまわそう