Shadow Academy トップ > 速習・物理学 > パウリ行列と四元数クォータニオン


パウリ行列と四元数クォータニオン

物理学において、電子のスピンの挙動を示す、「パウリ行列」は、
3DCGで回転の計算に用いられる、「四元数クォータニオン」と関係している。
ここでは、「エルミート行列」や「ユニタリー行列」の定義や、
量子情報で用いられる量子ビットの計算に必要な、
「テンソル積(直積)」と「クロネッカー積」を導入し、
パウリ行列と四元数クォータニオンの対応関係を考察する。
最後に、四元数クォータニオンと回転行列の対応関係についても考察する。
また、「rotation Calculator」のページに、
JavaScriptで書かれた、回転行列を用いて計算するスクリプトを作成した。

※2ch/5chにて、画像番号付きの画像に直接リンクした者がいるようだが、
ページの改修時に、画像番号をずらした際、別画像が表示される、
或いは、それを避けるため、その番号の画像をサーバに残さざるを得なくなる、
等の支障を来すことになるため、画像への直接リンクは避けてほしい。

目次

パウリ行列とは何か
パウリ行列の性質
1量子ビット
スカラー積・ベクトル積・テンソル積
2量子ビット
三重項トリプレット一重項シングレット
3量子ビット
四元数クォータニオン
四元数クォータニオンと回転行列




パウリ行列とは何か

二乗すると、2行2列の単位行列になる行列を考えて、

の様に、変数abcdを置くと、1行2列成分、及び、2行1列成分より、
ad=0」又は「bc=0」
である。1の約数は、自然数の範囲では1のみだが、
実数の範囲では±1、複素数の範囲では±1、±iの4つが存在する。

従って、複素数の範囲で考えると、前者(ad=0)の場合は、
(a, d)=(1, -1), (-1, 1), (i, -i), (-i, i), (0, 0)
の5通りが考えられるが、(0, 0)以外は、(1, -1)と
その-1倍と±i倍に過ぎないので、
実質、(0, 0)と(1, -1)の2通りである。
さらに、1行1列成分、及び、2行2列成分より、
(a, d)=(0, 0)のとき、bc=1を満たすのは、
(b, c)=(1, 1), (-1, -1), (i, -i), (-i, i)
の4通り、しかし、これは、(1, 1), (-i, i)とその-1倍に過ぎないので、
実質的には、(1, 1), (-i, i)の2通りである。
また、(a, d)=(1, -1)のときは、
1行1列成分、及び、2行2列成分より、bc=0であり、さらに、
1行2列成分、及び、2行1列成分より、必然的に、bc=0となる。
∴(a, b, c, d) =(0, 1, 1, 0), (0, -i, i, 0), (1, 0, 0, -1)

後者(bc=0)の場合、1行1列成分、及び、2行2列成分は、
bc=0」且つ「a2d2=1」
となるが、「ad=±1」は、2行2列の単位行列自身と、
その-1倍に他ならないので、あまり意味はない。一方、
a=1, d=-1」
とすると、「ad=0」も成立するが、
「又は」なので、両方とも0でも特に問題はない。
しかし、これは既出であり、勿論、「a=-1, d=1」は、
その-1倍なので、同一扱いとして候補に含めない。
従って、上記の条件を満たす行列は、

の3種類である。これを「パウリ行列(Pauli matrices)」と呼ぶ。
また、2行2列の単位行列はやEやI等で表すが、
これは、「恒等演算子」とも呼ばれるので、
ここでは、以降、1で表すことにする。
特に、2行2列の単位行列の場合、この恒等演算子:

をパウリ行列に含めて、

の様に表すことがある。パウリ行列は、大学の学部2~3年の量子力学で登場するが、
その際、天下り的に与えられることが多い。しかし、「2乗すると単位行列になる行列」
を探す、という思想が背景にあることを理解していれば、丸暗記せずに済む。




パウリ行列の性質

パウリ行列には、以下の様な性質がある。

  1. エルミート(hermite)行列である。
  2. ユニタリー(unitary)行列である。
  3. トレース(trace)、即ち、対角方向成分の総和が0
    (単位行列の場合は、2)
  4. 行列式(determinant)が-1(単位行列の場合は、1)
1. の「エルミート(hermite)行列」及び、
2. の「ユニタリー(unitary)行列」の定義は、
次の表の様になる。
実正方行列:A
転置行列:tA
複素正方行列:A
共軛 きょうやく転置行列:A
差が0(零行列) tAA0tAA
:対称行列
AA0AA
:エルミート行列
和が0(零行列) tAA0tA=-A
:反対称行列
(歪対称行列、交代行列)
AA0A=-A
:反エルミート行列
(歪エルミート行列)
積が1(単位行列) tAA1tAA-1
:直交行列(orthogonal matrix)
AA1AA-1
:ユニタリー行列(unitary matrix)

※直交行列(orthogonal matrix)のうち、行列式が1のもの全体が
行列の乗法に関してなす群を、「特殊直交群」と呼び、
n次の(nn列の)特殊直交群をSO(n)群と書く。
n=2ならSO(2)群、n=3ならSO(3)群である。
また、ユニタリー行列(unitary matrix)のうち、行列式が1のもの全体が
行列の乗法に関してなす群を、「特殊ユニタリ群」と呼び、
n次の(nn列の)特殊ユニタリ群をSU(n)群と書く。
n=2ならSU(2)群、n=3ならSU(3)群である。

さらに、エルミート行列の性質を述べると、

  1. エルミート行列は、ユニタリー変換に対し、エルミート性を保つ。
  2. 固有値が全て実数。
  3. 全ての固有ベクトルが直交する。
ここで、「ユニタリー変換」とは、ユニタリー行列を用いた変換である。
また、3. の「トレース(trace)」は、次式で表される。

同様に、4. の「行列式(determinant)」も、次式で表される。

また、パウリ行列の積は、

及び、

である。従って、

を得る。ここで、クロネッカーのデルタδij

及び、レビ・チビタの記号(3階の反対称テンソル)εijk

を用いれば、より簡潔に、

と表すこともできる。さらに、パウリ行列の
交換関係と反交換関係も、δijεijkを用いて、

と表すことができる。

また、「パウリ行列」σxσyσzを利用すれば、
a2b2c2
という式を因数分解することができる。
これは、複素数の範囲でも因数分解できないので、
2行2列の単位行列を1で表す
(或いは、EやI等で表す)ことによって、
(aσxbσycσz)2
a2σx2b2σy2c2σz2
ab(σx σyσy σx)
bc(σy σzσz σy)
ca(σz σxσx σz)
=(a2b2c2)1

と展開できるから、逆に、
(a2b2c2)1= (aσxbσycσz)2
の様に分解出来る。パウリは、この計算を巧く使って、
電子の二価性(「上向きスピン」、「下向きスピン」)を示した。




1量子ビット

量子コンピュータの情報の基本単位は、
「量子ビット(quantum bit)」または「キュービット」と呼ばれる。
1量子ビットは、二状態系であり、「ケット」記号を用いて記述されるが、
その表現は、テキストによって異なっている。
例えば、2進数のアナロジーから|0>と|1>で表現しても、
電子のスピンのアナロジーから、|↑>と|↓>で表現してもよい。
或いは、|α>と|β>で記述しているテキストも存在する。
ここでは、2進数表記である、|0>と|1>を主に使っていくことにしよう。
1量子ビットは、ケット記号や列ベクトルを用いて、

の様に表せる。 一方、これを転置した行ベクトルを用いた表記として、
<0|=<↑|=<α|=(1 0)
<1|=<↓|=<β|=(0 1)
の様に表したものをケットに対して、「ブラ」と呼ぶ。

「ブラ(bra)」と「ケット(ket)」は、「括弧」を意味する、
「ブラケット(bracket)」に由来するが、両者の内積

も「ブラケット」と呼ぶ。「ケット」と「ブラ」は、非可換であり、
掛ける順番を逆にした場合には、積の交換法則は成立せず、

の様に2行2列の行列になるが、単位行列1やパウリ行列は、
これらの行列を用いて、次の様に表現することもできる。

1量子ビットにパウリ行列を作用させると、

となる。結果をまとめたものが次の表である。

σx σy σz
|0> |1> i|1> |0>
|1> |0> i|0> -|1>




スカラー積・ベクトル積・テンソル積

ベクトル同士の積には、スカラー積(内積)や
ベクトル積(外積)の他にも、テンソル積(直積)がある。
ここで、テンソル積(直積)を導入するのは、
1量子ビット同士のテンソル積(直積)から、
2量子ビットを生成する為である。

x軸、y軸、z軸の各方向の単位ベクトル
(基本ベクトル)を、e1e2e3とすると、
スカラー積(内積)は、上述のクロネッカーのデルタを用いて、
eiejδij ((i, j, k)={1, 2, 3})
と表せる。ベクトル積(外積)は、これもやはり上述の
レビ・チビタの記号(3階の反対称テンソル)を用いて、
ei × ejεijk ek ((i, j, k)={1, 2, 3})
と表せる。

これに対し、ベクトルa及び、ベクトルbが、

で与えられたとき、そのテンソル積(直積)は、

の様に定義される。また、行列A及び、行列Bが、

で与えられたとき、テンソル積(直積)の行列版である、
クロネッカー積も、同様の記号を用いて、

の様に定義される。




2量子ビット

1量子ビット同士のテンソル積(直積)を用いて、2量子ビットを生成することができる。
2量子ビットは、ケット記号や列ベクトルを用いて、

の様に表せる。2量子ビットにおいても、
ケットを転置した行ベクトルを用いた表記として、
<0|=<00|=<↑↑|=<αα|=(1 0 0 0)
<1|=<01|=<↑↓|=<αβ|=(0 1 0 0)
<2|=<10|=<↓↑|=<βα|=(0 0 1 0)
<3|=<11|=<↓↓|=<ββ|=(0 0 0 1)
の様にブラを表現することができる。
※計算基底のブラを考える時には、2進数の順番を
「そのまま」にしておくのが普通である。

ここで、 σ1xσ1yσ1zは、
「左から1番目の量子ビットにのみ」
作用する演算子であると定義し、 σ2xσ2yσ2zは、
「左から2番目の量子ビットにのみ」
作用する演算子であると定義すると、
これらは、クロネッカー積を用いて、
次の様に表現することが出来る。

ここでは、左から順に、

  • テンソル積(直積)による表現
  • 行列やベクトルによる表現(表現行列)
  • ブラケットによる表現(ブラケット表示)
という3種類の表現を示した。
これは、量子ビットでも、パウリ行列でも、同様に表現可能である。

2量子ビットに、これらのパウリ行列を
作用させた結果をまとめると、次の表の様になる。
但し、ケット記号内の数字は、4進法の表記で示してある。

σ1x σ1y σ1z σ2x σ2y σ2z
|0> |2> i|2> |0> |1> i|1> |0>
|1> |3> i|3> |1> |0> i|0> -|1>
|2> |0> i|0> -|2> |3> i|3> |2>
|3> |1> i|1> -|3> |2> i|2> -|3>




三重項トリプレット一重項シングレット

二電子状態として、三重項(tripletトリプレット)と、 一重項(singletシングレット)という概念に対し、
これらに、スピン角運動量演算子を作用させ、固有値、固有状態を考えるとき、
2量子ビットと、「左から1番目の量子ビットにのみ」、及び、
「左から2番目の量子ビットにのみ」作用するパウリ行列の考え方を応用できる。

一電子状態に対する、スピン角運動量演算子は、 パウリ行列σx, σy, σz
ディラック定数ℏ(≒1.05×10-34)[J・sec]を掛けて2で割り、
ベクトルの様に束ねた演算子であるから、ベクトルの様に
矢線を付けるか、太字にしてsで表す。或いは、
演算子であることを明示する為に、「ハット記号」、或いは、
「サーカムフレックス」と呼ばれる記号「^」 を付けて、ŝと表す。
ここでは、強調の為、その両方を用いて、ŝと表すことにしよう。
更に、スピン角運動量演算子の二乗の演算子ŝ2も計算すると、

となる。ここで、ŝ2
|0>=|↑>=|α>
|1>=|↓>=|β>
に作用させると、その固有値が、3ℏ2/4である ことが分かり、ŝz
|0>=|↑>=|α>
|1>=|↓>=|β>
に作用させると、その固有値が、±ℏ/2の2つであることも分かる。

同様に、二電子状態に対して、σ1xσ1yσ1z及び、 σ2xσ2yσ2z
ディラック定数ℏを掛けて2で割り、ベクトルの様に束ねた演算子も、
ベクトルの様に矢線を付けるか、太字にして、それぞれ、
s1, s2で表す。 或いは、演算子であることを明示する為に、
「ハット記号」、或いは、「サーカムフレックス」と呼ばれる
記号「^」 を付けて、 ŝ1, ŝ2と表す。 やはり、ここでは、強調の為、
その両方を用いて、ŝ1, ŝ2で表すことにしよう。


続いて、二電子状態に対して、全体のスピンを大文字Ŝ
個々のスピンを小文字ŝ1, ŝ2で表すと、前者は後者の総和となって、
Ŝŝ1ŝ2
で表される。更に、この演算子の二乗の演算子Ŝ2は、

と計算することが出来る。ここで、パウリ行列の積:

を上式に代入すると、スピン角運動量演算子の 二乗の演算子Ŝ2の行列表示:

を得る。また、同様にして、二電子状態全体の
スピン角運動量演算子のz成分Ŝzの行列表示:

も得られる。

|0>=|00>=|↑↑>=|αα>
(|1>+|2>)/√2=(|01>+|10>)/√2 =(|↑↓>+|↓↑>)/√2 =(|αβ>+|βα>)/√2
|3>=|11>=|↓↓>=|ββ>
の3つを「三重項(triplet)」状態、或いは、
そのまま片仮名で「トリプレット」状態と呼び、
(|1>-|2>)/√2=(|01>-|10>)/√2 =(|↑↓>-|↓↑>)/√2 =(|αβ>-|βα>)/√2
を「一重項(singlet)」状態、或いは、
そのまま片仮名で「シングレット」状態と呼ぶ。
これらに、Ŝ2及び、Ŝzを作用させるのだが、
まずは、行列表示を用いずに計算してみることにしよう。
Ŝ2を三重項(トリプレット)に作用させると、

という計算結果が得られ、その固有値が2ℏ2であることが分かる。
また、Ŝ2を一重項(シングレット)に作用させると、

という計算結果が得られ、その固有値が0であることも分かる。
同様に、Ŝzを三重項(トリプレット)に作用させると、

という計算出来て、3つの固有値として、ℏ, 0, -ℏが導出される。
そして、Ŝzを一重項(シングレット)に作用させると、

という計算結果から、その固有値が0であることも示される。

今度は、行列表示を用いて計算してみよう。
分かり易くするため、先程の計算とは記号を変えてある。
Ŝ2を三重項(トリプレット) 及び、一重項(シングレット)に作用させると、

となって、三重項(トリプレット)のとき、固有値が2ℏ2
一重項(シングレット)のとき、固有値が0であることがより簡単に導出できる。
同様に、Ŝzを三重項(トリプレット) 及び、一重項(シングレット)に作用させると、

となって、こちらも、三重項(トリプレット)のとき、固有値がℏ, 0, -ℏの3つであること、
一重項(シングレット)のとき、固有値が0であることがより簡単に導出できる。




3量子ビット

2量子ビットのときと同様、3量子ビットも、1量子ビット同士のテンソル積(直積)を用いて、
生成することができ、ケット記号や列ベクトルを用いて、

の様に表せる。同様に、ケットを転置し、行ベクトル表記として、3量子ビットのブラ:
<0|=<000|=<↑↑↑|=<ααα|=(1 0 0 0 0 0 0 0)
<1|=<001|=<↑↑↓|=<ααβ|=(0 1 0 0 0 0 0 0)
<2|=<010|=<↑↓↑|=<αβα|=(0 0 1 0 0 0 0 0)
<3|=<011|=<↑↓↓|=<αββ|=(0 0 0 1 0 0 0 0)
<4|=<100|=<↓↑↑|=<βαα|=(0 0 0 0 1 0 0 0)
<5|=<101|=<↓↑↓|=<βαβ|=(0 0 0 0 0 1 0 0)
<6|=<110|=<↓↓↑|=<ββα|=(0 0 0 0 0 0 1 0)
<7|=<111|=<↓↓↓|=<βββ|=(0 0 0 0 0 0 0 1)
も表現することができる。

パウリ行列も同様に、「左から1番目の量子ビットにのみ」作用する演算子 σ1xσ1yσ1zは、

「左から2番目の量子ビットにのみ」作用する演算子 σ2xσ2yσ2zは、

「左から3番目の量子ビットにのみ」作用する演算子 σ3xσ3yσ3zは、

の様に表現することが出来る。ここでも、左から順に、

  • テンソル積(直積)による表現
  • 行列やベクトルによる表現(表現行列)
  • ブラケットによる表現(ブラケット表示)
である。

3量子ビットに、これらのパウリ行列を
作用させた結果をまとめると、次の表の様になる。
但し、ケット記号内の数字は、8進法の表記で示してある。

σ1x σ1y σ1z σ2x σ2y σ2z σ3x σ3y σ3z
|0> |4> i|4> |0> |2> i|2> |0> |1> i|1> |0>
|1> |5> i|5> |1> |3> i|3> |1> |0> i|0> -|1>
|2> |6> i|6> |2> |0> i|0> -|2> |3> i|3> |2>
|3> |7> i|7> |3> |1> i|1> -|3> |2> i|2> -|3>
|4> |0> i|0> -|4> |6> i|6> |4> |5> i|5> |4>
|5> |1> i|1> -|5> |7> i|7> |5> |4> i|4> -|5>
|6> |2> i|2> -|6> |4> i|4> -|6> |7> i|7> |6>
|7> |3> i|3> -|7> |5> i|5> -|7> |6> i|6> -|7>




四元数クォータニオン

複素数:zxiyは、実数部xと虚数部yを持つ、「二元数」であった。
このとき、虚数単位:iには、i2=-1という性質があった。
ここでは、これを拡張した、「四元数(quaternion)」を考える。
四元数:QwIxJyKzは、「クォータニオン」とも呼ばれる。
ここで、IJKは、「クォータニオン単位」と呼び、虚数単位:iとの区別の為、
大文字で表すことにする。また、以降は「四元数」を「クォータニオン」と呼ぶ。

クォータニオン単位:IJKには、自身を二乗すると-1になるという、
虚数単位の様な性質と、互いの積が循環的 サイクリックになる、基本ベクトルの外積の様な性質がある。
また、クォータニオン単位同士の積は、非可換である。掛けられる側をA
掛ける側をBとして、ABの群表を書いたものを次に示す。

A \ B 1 I J K -1 I J K
1 1 I J K -1 I J K
I I -1 K J I 1 K J
J J K -1 I J K 1 I
K K J I -1 K J I 1
-1 -1 I J K 1 I J K
I I 1 K J I -1 K J
J J K 1 I J K -1 I
K K J I 1 K J I -1

上述の関係を鑑みれば、パウリ行列とクォータニオン単位の構造が
酷似していることに気付くであろう。
各クォータニオン単位IJKは、パウリ行列を用いて、

と表現することが出来る。ここで、-i 倍ではなく、
i 倍すると、順序が逆になってしまうので、注意が必要である。
パウリ行列の積の積の関係式において、各クォータニオン単位を-i 倍すると、
 (-iσx)2 =(-iσy)2 =(-iσz)2=-1 
(-iσx)(-iσy) =-(-iσy)(-iσx) =-iσz
(-iσy)(-iσz) =-(-iσz)(-iσy) =-iσx
(-iσz)(-iσx) =-(-iσx)(-iσz) =-iσy
となって、各クォータニオン単位間の関係:

を得る。また、パウリ行列をを用いて、クォータニオンを表すと、

となって、クォータニオンが、実数部を単位行列の実数倍、
虚数部を反エルミート行列とする、
行列の和で構成されていることが分かる。

クォータニオンを表した行列:

の固有方程式:

を解くと、二次方程式の解の公式より、その固有値λ

で表されることが分かった。ここで、

と置くと、複素数の場合と同様に扱えることが分かるだろう。
クォータニオン、或いは四元数は、超複素数系と呼ばれ、
その内部に複素数を含む、メタ的な概念である。
上述の固有値に対応する複素数Q及び、その共軛 きょうやく複素数Q*は、

で与えられ、その絶対値を|Q|とすると、

となる。また、偏角を

とすると、

及び、

であることが分かる。ここでは、複素数Qがプラス、
その共軛きょうやく複素数 Q*がマイナスをとることにしよう。さらにオイラーの公式により、
QQReiQIm =|Q|(cos θi sin θ)=|Q|eiθ
と表現できる。ここで、w=0を満たすものを純虚四元数と呼び、

を満たすものを単位四元数、或いは、アイデンティティ・クォータニオンと呼ぶ。
両方の条件を満たすものは、特に、単位純虚四元数と呼ぶ。




四元数クォータニオンと回転行列

今、線型写像:

を考える。単位四元数qとその共軛 きょうやく四元数q*
純虚四元数vv’ 及びそれらの関係を

と定義する。この定義に従って計算した結果を確かめよう。

x軸を中心に回転する場合は、一般的にロール(roll)と呼ばれる。
y=0, z=0として、
qxwIx= cos θI sin θeIθ
q*xwIx= cos θI sin θeIθ
v'=Ia'+Jb'+Kc' =qvq*
=(cos θI sin θ) (IaJbKc)(cos θI sin θ)
={-a sin θIa cos θJ(b cos θc sin θ) +K(b sin θc cos θ)} (cos θI sin θ)
a(-sin θ cos θ+cos θ sin θ) +Ia(cos2θ+sin2θ)
J(b cos2θc sin θ cos θb sin2θc cos θ sin θ)
K(b sin θ cos θc cos2θb cos θ sin θc sin2θ)
IaJ(b cos 2θc sin 2θ) +K(b sin 2θc cos 2θ)
を得る。この計算は、回転行列:

を掛けたものと等価である。

y軸を中心に回転する場合は、一般的にピッチ(pitch)と呼ばれる。
x=0, z=0として、
qywJy= cos θJ sin θeJθ
q*ywJy= cos θJ sin θeJθ
v'=Ia'+Jb'+Kc' =qvq*
=(cos θJ sin θ) (IaJbKc)(cos θJ sin θ)
={-b sin θI(a cos θc sin θ) +Jb cos θK(-a sin θc cos θ)} (cos θJ sin θ)
b(-sin θ cos θ+cos θ sin θ) +Ia(cos2θc sin θ cos θ -sin2θc cos θ sin θ)
Jb(cos2θ+sin2θ) +K(-a sin θ cos θc cos2θa cos θ sin θc sin2θ)
I(a cos 2θc sin 2θ) +JbK(-a sin 2θc cos 2θ)
を得る。この計算は、回転行列:

を掛けたものと等価である。

z軸を中心に回転する場合は、一般的にヨー(yaw)と呼ばれる。
x=0, y=0として、
qzwKz= cos θK sin θeKθ
q*zwKz= cos θK sin θeKθ
v'=Ia'+Jb'+Kc' =qvq*
=(cos θK sin θ) (IaJbKc)(cos θK sin θ)
={-c sin θI(a cos θb sin θ) +J(a sin θb cos θ) +Kc cos θ}(cos θK sin θ)
a(-sin θ cos θ+cos θ sin θ) +I(a cos2θb sin θ cos θa sin2θb cos θ sin θ)
J(a sin θ cos θb cos2θa cos θ sin θbsin2θ) +Kc(cos2θ+sin2θ)
I(a cos 2θb sin 2θ) +J(a sin 2θb cos 2θ)+Kc
を得る。この計算は、回転行列:

を掛けたものと等価である。

※書籍や文献の扱う分野によっては、
x-y平面内での回転をロール(roll)、
x-z平面内での回転をピッチ(pitch)、
y-z平面内での回転をヨー(yaw)
と定義しているものもある。このように、
定義には、複数の流儀があり得る為、
テキストの文脈には、注意をする必要がありそうだ。

これらの計算途中で、三角関数の2倍角の公式を用いていることからも明らかに、
計算結果は、2θの回転が行われたことを示している。
逆に言えば、x軸を中心にαy軸を中心にβz軸を中心にγ
回転させる効果を持つクォータニオンは、それぞれ、

で与えられる。勿論、これらに対応する回転行列はそれぞれ、

である。




参考文献

  1. 「3D‐CGプログラマーのためのクォータニオン入門」(工学社、2004年)



Shadow Academy トップへ戻る

inserted by FC2 system