■n次元楕円をm次元空間に投影する(その1)

 今回のコラムは「ロボットアームと6次元楕円体」の続編にあたります.まずは,秋田大の佐々木誠先生(makoto@control.mech.akita-u.ac.jp)の論文を前にして,S(佐藤)とT(竹内嬢)とのやりとりから紹介しましょう.
 
S:6次元楕円評価法を車いすに応用すると,この投影図のような3方向からの楕円体が描ける.
T:6次元楕円!!!
S:6次元といっても,驚くことはない.パラメータ数が6になっただけのことで,数学的には,2次元でも6次元でも同じように扱えるのである.
T:6次元は理解できなくても,この投影図の意味は私にもわかりますね.正面図,平面図,側面図からわかることは,要は,車いすの取っ手(ハンドリム)が10°〜15°ほど八の字形になっていればよいということなのでしょう.
S:その通り.これまで車いすの駆動輪を外側に開いて取り付けると漕ぎやすいことは経験的に知られていたのだか,理論的な裏付けがなかったのだ.
T:なるほど,ふむふむ.
S:こんな簡単な図がこれまで描けなかったのだから,驚きとしかいいようがないが,もっと正確にいうと,外側の楕円は6次元楕円の3次元空間への正射影,内側の楕円は6次元楕円の3次元切り口を2次元平面に正射影したものだ.
T:???


 このように,前3作では,6次元楕円の2次元平面上あるいは3次元空間上への射影を扱いました.6次元楕円体を3次元空間で切って・・・とか,初めはイメージできないのは当然です.正射影? 切断面? 6次元が3次元で?・・・聞き手は,さぞかし頭が混乱することでしょう.
 
 しかし,3次元空間内の運動(並進+回転)を解析するには,どうしても6次元空間が必要になりますし,その際,6次元楕円を可視化できるメリットは非常に大きいものがあります.
 
 一般に,n次元楕円をm次元空間に投影する際の輪郭の計算は,接平面(法線ベクトル)を求めるという微分幾何学と線形代数学の基本的な方法によって説明されます.
 
 証明に興味をお持ちの方は少ないと思われますが,今回のコラムでは,証明ならびに実際の計算法を披露することにしました.証明に興味をもたれる読者は煩をいとわず検証してみられることをお勧めします.
 
===================================
 
【1】予備知識として
 
[1]固有値・固有ベクトル
 
 n次正方行列H={hij}に対して,ベクトルxと定数λが存在して,
  Hx=λx
となるとき,この定数λを固有値,ベクトルxを固有値λに対する固有ベクトルといいます.すなわち,Hをかけることが単なる定数倍になるようなうまい方向xが行列Hの固有ベクトルであり,そのときの定数λが固有値です.
 
 固有ベクトルとは,線形変換によって,方向が変わらないベクトルにほかなりませんし,その際の拡大・縮小率が固有値であると言い換えることもできましょう.
 
 単位行列をEと書いて,
  |H−λE|=0
を展開してλの次数の順に書き直すと,λについてのn次方程式(特性方程式)
  pn(−λ)^n+pn-1(−λ)^n-1+・・・+p0=0
が得られます.ただし,
  pn=1
  pn-1=h11+h22+・・・+hnn=tr(H)
  pn-r=Hの中のr次の主対角小行列式の和
  p0=|H|
 
 また,特性方程式のλにHを代入し,定数項は定数×Eとすることによってできる行列の多項式
  pn(−H)^n+pn-1(−H)^n-1+・・・+p0E=O
が,ゼロ行列O(全成分が0の行列)に等しくなるというのが,「ケイリー・ハミルトンの定理」です.
 
===================================
 
[2]正定値2次形式
 
 原点を中心とする2次元楕円は,
  ax^2 +bxy+cy^2=1
あるいは,行列・ベクトル表現すると
  [x,y][a,b/2][x]=1
       [b/2,c][y]
と書けます.左辺のような形の式を2次形式といい,すべての実数x,yに対して正となるためには,
  a>0,D=b^2−4ac<0
が成り立たなくてはなりません.
 
 よく知られているように,D=b^2−4acは2次方程式ax^2 +bx+c=0の判別式であり,行列式
  |a,b/2|=b^2/4−ac
  |b/2,c|
と関係しています.
 
 一般に,原点を中心とする2次超曲面
  Σhijxixj=1   (hij=hji)
が,n次元楕円であるための条件は,左辺の2次形式がすべての実数x1,・・・,xnに対して正定値(positive definitive)であること,すなわち,n×n行列:H={hij}が正定値の行列であることです.
 
 そのための必要十分条件は,k行・k列までを取り出して得られる小行列式|Hk|を
       |h11・・・h1k|
  |Hk |=|・・・・・・・|
       |hk1・・・hkk|
として
  |H1|=h11>0,|H2|=|h11 h12|>0,・・・,
                |h21 h22|
  |Hn|=|H|>0
となることです.
 
===================================
 
[3]2次形式の標準化
 
 さて,おおまかな用語の説明が済んだところで,行列の対角化によって,n次元楕円を標準化することを考えてみましょう.
 
 n次元楕円
  Σhijxixj=x’Hx=1
  x’=[x1,x2,x3,・・・,xn]
を直交座標系(o:x1,x2,x3,・・・)での関数式で表すと交差項xixjが出現するため,取り扱いが厄介です.そこで,このn次元楕円が適当な座標変換により,別の直交座標系(O:X1,X2,X3,・・・)において,以下のような標準形
  X1^2/a^2+X2^2/b^2+・・・+Xn^2/n^2=1
で表されるように変換するのです.
 
 また,その際の座標変換の式を
 [x1,x2,x3,・・・,xn]’=U[X1,X2,X3,・・・,Xn]’
  X’=[X1,X2,X3,・・・,Xn]
すなわち
  x=UX
とします.ここで(’)は転置行列を意味します.変数が2個ならば平面の回転,変数が3個ならば空間の回転となりますが,n変数の場合,Uは方向余弦を要素とするn×n次の直交行列になります.直交行列とは,n次正則行列Uの転値行列が逆行列となる行列のことです.
  U’=U~
ここで,(~)は逆行列を表します.
 
 直交行列Uを得て標準形に直するための定石が,固有値問題と呼ばれる線形代数の基本的な知識なのですが,それによると,対称行列Hの固有値を
  λ1,・・・,λn
とすると,適当な座標の回転により,対角行列(対角要素以外はすべて0の行列)
  Λ=diag(λ1,・・・,λn)
に変換されます.
 
 対称行列は,直交行列によって対角行列に直せるというわけです.
  x’Hx=X’U’HUX=X’U~HUX=X’ΛX=1
その際,
  Λ=U~HU
の固有値はHの固有値と一致します.
 
 以上の座標の回転によって,Σhijxixjは変数Xiに関する平方和ΣλiXi^2の形に変換されます.そして,Hが正定値(positive definite)対称行列のとき,すべての固有値は正であり,
  λ1X1^2+λ2X2^2+・・・+λnXn^2=1
が成り立ちますから,n次元楕円の楕円半径は
  a^2=1/λ1,b^2=1/λ2,・・・,n^2=1/λn
で表されることになります.
 
===================================
 
[4]固有値の性質
 
 [1]と重複する項目もあるのですが,固有値の性質として知っておいたほうががよいと思われる基礎知識をいくつかピックアップして,以下に掲げておきます.
 
1)固有多項式の根と係数の関係より,トレース(対角線の項の和)=固有値の総和,すなわち,
  h11+h22+・・・+hnn=λ1+・・・+λn
が成り立ちます.トレースは全固有値の和であり,大切な不変式になっています.
 
 一方,行列式は全固有値の積と一致します.
  |H|=λ1λ2・・・λn(=平行多面体の体積)
 
2)逆行列の固有値はもとの行列の固有値の逆数となる.
 
3)実対称行列の固有値は実数である.
 
4)実対称行列の異なる固有値に対応する固有ベクトルは直交する.
 
5)指数とは,対称行列を対角化したとき,対角成分のうち+のものがp個,−のものがm個あるとすると,その差:p−mのことであって,対称行列には指数(または符号数)と呼ばれる不変量が対応します.
 
 行列Aの指数はAだけで決まり,対角化の仕方には依存しないことは,初等解析学の「シルヴェスターの慣性法則」で学んだとおりですが,これが空間の符号数の不変性なのです.
 
===================================
 
[復]予備知識の中で重要な事実は,対称行列の固有値は実数であり,固有ベクトルは直交するということです.そして,対称行列を係数とする2次形式は固有ベクトルを基底とする座標系で表すと標準形になります.
 
 対称行列でない場合は固有値が複素数になったり,重解のときにはジョルダン標準形になったりしますが,実際の問題ではほとんどが対称行列の場合の固有値問題が扱われます.
 
[補]n次の対称行列Hの固有値はすべて実数であり,それらを並べて,
  λ1≦λ2≦・・・≦λn
とするとき,n→∞のときの挙動,すなわち,固有値の漸近分布について,1958年,ウィグナーは,
  a√n≦λ≦b√nなる固有値の数/n → ∫(a,b)φ(t)dt
     ここで,φ(t)=1/2πm^2√(4m^2-t^2)
が成り立つことを証明しました.
 
 分布関数φをもつ分布を「ウィグナー分布」といい,そのグラフは半円で与えられるますから,この定理を「半円則」ともいうのですが,ウィグナーの半円則は近年大いに発展したランダム行列の原型となっています.
 
 ところで,数論における楕円曲線のヴェイユ・ゼータに関する佐藤(幹夫)予想と,対称行列の固有値分布に関するウィグナーの半円則は,一方は物理学,他方は数論に関係していて出所はまったく異なる.にも関わらず,佐藤予想
  偏角が[a,b]となる素数密度 → 2/π∫(a,b)sin^2θdθ
ここで,t=cosθとおけば,
  偏角が[a,b]となる素数密度 → 2/π∫(α,β)√(1-t^2)dt
となるから,これも1種の半円則である.
 
 角分布がsin^2θに比例するという佐藤予想の最初の記述は,資料によると,昭和38年のことである.
 
===================================
 
【2】超曲面の輪郭
 
 いよいよ原点を中心とするn次元楕円
  Σhijxixj=1   (hij=hji)
を(xi,xj)平面上に正射影することを考えてみましょう.
 
 より一般的には,n次元楕円をm次元空間に正射影することですが,この問題は(x1,x2,・・・,xm)空間に正射影することにしても,一般性は失われません.そこで,x1,x2,・・・,xmが最初のm行・m列に来るようにn×n行列:Hを並べ替えることにします.
 
 こうしてできあがった行列を,あらためて
    [h11・・・h1n] [A,B]
  H=[・・・・・・・]=[C,D]
    [hn1・・・hnn]
とします.部分行列Aは左上のm×m行列,部分行列Bは右上m×(n−m)行列,部分行列Cは左下(n−m)×m行列,部分行列Dは右下(n−m)×(n−m)行列を表します.
 
 また,
  X1’=[x1,x2,・・・,xm]
  X2’=[xm+1,xm+2,・・・,xn]
とおくことにします.こうすれば,
  X’=[x1,x2,・・・,xn]=[X1’,X2’]
と書くことができます.
 
 ここで,曲面上の点の法線方向のベクトルは,
  f=Σhijxixj−1=X’HX−1
として
  gradf=(∂f/∂x1,・・・,∂f/∂xn)
であり,(x1,x2,・・・,xm)空間への正射影では,これが単位ベクトル
  (0(1),・・・,0(m),1(m+1),0(m+1),・・・,0(n))
  (0(1),・・・,0(m),0(m+1),1(m+2),・・・,0(n))
  ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  (0(1),・・・,0(m),0(m+1),0(m+2),・・・,1(n))
と垂直になればよいのですから,内積=0より,
  ∂f/∂xm+1=0,・・・,∂f/∂xn=0
 
[注]gradientは曲面の勾配を与えるものであるが,接線ベクトルではなくて,法線ベクトルに平行となる.
 
 これを実際に計算すると,
  h(m+1,1)x1+h(m+1,2)x2+・・・+h(m+1,n)xn=0
  ・・・・・・・・・・・・・・・・・・・・・・・・・・
  h(n,1)x1+h(n,2)x2+・・・+h(n,n)xn=0
となるのですが,上で定義した行列・ベクトルを使うと,直交条件は
  CX1+DX2=0
と書くことができます.ここで,0は数字の0ではなく,ゼロ行列(全成分が0の行列)の意味です.すなわち,
  X2=−D~CX1
であり,(~)は逆行列を意味します.
 
 この直交条件を用いて,変数xm+1〜xnを消去するのですが,
  HX=[A,B][X1]=[AX1+BX2]=[AX1+BX2]
     [C,D][X2] [CX1+DX2] [  0   ]
 
 したがって,n次元楕円:X’HX=1の(x1,x2,・・・,xm)空間への正射影は,
  X’HX=[X1’,X2’][AX1+BX2]
               [  0   ]
 =X1’AX1+X1’BX2
 =X1’AX1−X1’BD~CX1=1
より,
  X1’[A−BD~C]X1=1
と表される曲線(曲面)であることが理解されます.
 
 また,参考までに掲げておきますが,n次元楕円X’HX=1の(x1,x2,・・・,xm)空間での切断面は,X2=0ですから
  HX=[A,B][X1]=[AX1]
     [C,D][0 ] [CX1]
 
  X’HX=[X1’,0 ][AX1]=X1’AX1=1
              [CX1]               [ すなわち,切断面は
  X1’AX1=1
で表されます.
 
===================================
 
【3】数値計算のために
 
 ところで,切断面
  X1’AX1=1
を描くのであれば,
  (1)行列Aの固有値・固有ベクトルを求める
  (2)軸の長さを1/√λとする
だけで済みますが,それに対して,曲線(曲面)
  X1’[A−BD~C]X1=1
を描くには,
  (1)行列Dの逆行列D~の計算
  (2)行列の積BD~Cの計算
  (3)行列の差A−BD~Cの計算
  (4)行列[A−BD~C]の固有値・固有ベクトルを求める
  (5)軸の長さを1/√λとする
の手順が必要となり,結構手間のかかる仕事であることがわかります.
 
 つまり,この式は正射影の解析的な表現には適していても,実際の数値計算には不便であるというわけです.そこで,別の方法でn次元楕円の輪郭を描くことを考えてみましょう.
 
 Hの逆行列H~は,n×n行列:H={hij}のi行とj列を取り除いた小行列式に符号(−1)^(i+j)をつけたものをΔijとおくと,Δji/|H|を(i,j)要素とする行列
  H~={Δji/|H|}
で表されるのですが,前項と同様に,4つの部分行列に分割して
  H~ =[O,P]
     [Q,R]
を考えることにします.
 
 ここで,部分行列Oはm×m行列,部分行列Pはm×(n−m)行列,部分行列Qは(n−m)×m行列,部分行列Rは(n−m)×(n−m)行列を表します.決して,
  H~ =[D/|H|,−B/|H|]
     [−C/|H|,A/|H|]
とか
  H~ =[A~,B~]
     [C~,D~]
などというでたらめを書かないように!
 
 このあと,ヤコビの公式やシルヴェスターの定理などを用いて証明する方法もあるのですが,それでは歯切れが悪く,結局,次のようなやり方(行列の分割)が一番簡単でありかつエレガントな証明と思われました.
 
 k次の単位行列をEkで表すことにすると,
  HH~=En
また,ゼロ行列(全成分が0の行列)を0とすると,
  [A,B][O,P]=[AO+BQ,AP+BR]=[Em,0 ]
  [C,D][Q,R] [CO+DQ,CP+DR] [0,En-m]
 
 CO+DQ=0より,
  Q=−D~CO
これをAO+BQ=Emに代入して
 AO+BQ=AO−BD~CO=(A−BD~C)O=Em
これより,
  O~=A−BD~C
であることが証明されます.
 
 参考までに記しておきますが,→【補】
  O=[A−BD~C]~,P=−A~B[D−CA~B]~
  Q=−D~C[A−BD~C]~,R=[D−CA~B]~
 
 以上のことによって,超楕円体の輪郭を描く手順は
  (1)Hの逆行列(H~)を求める
  (2)逆行列の小行列(O)の固有値・固有ベクトルを求める
  (3)軸の長さを√λとする
となりますから,計算量を大幅に節約することができることがおわかり頂けるでしょう.
 
===================================
 
【4】総括
 
 まとめると,以下のようになります.
 
[1]n次元楕円
  X’HX=[X1’,X2’][A,B][X1]=1
               [C,D][X2]
 ここで,行列式について
  |H|=|D||A−BD~C|=|A||D−CA~B|
が成り立つ.
 
[2]m次元空間への正射影
  X1’[A−BD~C]X1=1
あるいは,Hの逆行列の小行列Oを用いて
  X1’O~X1=1
と表されるが,実際の数値計算には後者が便利である.
 
[3]m次元空間での切断面
  X1’AX1=1
Oに対応するのがAであるから,これはm次元空間への正射影と表裏の関係になる(O~ ←→ A).
 
 また,これらの式より,n次元楕円[1]のn次元空間への正射影[2],n次元空間での切り口[3]は一致する
  [1]=[2]=[3]
ことが,直ちに理解されるでしょう.
 
===================================
 
【補】分割行列の逆行列についての補足
 
  H=[A,B]   H~ =[O,P]
    [C,D]      [Q,R]
 
 ここではHは対称行列ですから,C=B’.このときH~も対称行列となり,Q=P’ですから,
  D~C[A−BD~C]~=(A~B[D−CA~B]~)’
が成り立ちます.
 
 また,対称行列において,
  (A+BDC)~=A~−A~B(CA~B+D~)CA~
上記の
  O=[A−BD~C]~,P=−A~B[D−CA~B]~
  Q=−D~C[A−BD~C]~,R=[D−CA~B]~
  O=A~+A~B[D−CA~B]~CA~
  P=−[A−BD~C]~BD~
  Q=−[D−CA~B]~CA~
  R=D~+D~C[A−BD~C]~BD~
とも書くことができます.これらの式は次数の高い逆行列の計算を,より次数の低い行列の逆行列から求める際に有用となります.
 
===================================