■この門くぐるべからず(その12)

 n次元正単体は(n+1)個の点からなる完全グラフとみなすことができるので,k次元胞の数は(n+1,k+1)である.

 正五角形に対角線を描き入れると星形五角形(ソロモンの星)ができるが,正五角形と星形五角形の入れ子はペンタグラムと呼ばれる.この図形が4次元正単体の2次元投影図であることを知っている人は少ないだろう.

 正n角形にすべての対角線を引くことを考える.nが偶数のときは中心では必ず対角線が交わるので穴は開かない.nが奇数のとき穴は開くが,nが大きくなると,穴はどんどん小さくなる.

 n次元正単体の場合は,正n+1角形にすべての対角線を引くことと同じである.したがって,nが奇数のときは中心では必ず対角線が交わるので穴は開かない.nが偶数のとき穴は開くが,nが大きくなると,穴はどんどん小さくなるのである.

===================================

  xk=cos(2(k−1)π/(n+1))

  yk=sin(2(k−1)π/(n+1)),  k=1〜n+1

  [x1,・・・,xn]=R[v1,・・・,vn]=Rv

  [y1,・・・,yn]

  [z1,・・・,zn]

  [・・・・・・・・]

  [w1,・・・,wn]

 この場合,

  v1=[1/2,−√3/6,−√6/12,−/2√10]

  v2=[−1/2,−√3/6,−√6/12,−/2√10]

  v3=[0,√3/3,−√6/12,−/2√10]

  v4=[0,0,√6/4,−/2√10]

  v5=[0,0,0,√(2/5)]

直交回転行列は

  [x1,・・・,x4]=[1,.309018,-.809016,-.809019]

  [y1,・・・,y4] [0,.951056,.587787,-.587783]

  [z1,・・・,z4] [.647936,-.400448,.647936,0]

  [w1,・・・,w4] [.393338,.514884,-.0751214,.757981]

  [x1,・・・,xn]v^-1=R

  [y1,・・・,yn]

  [z1,・・・,zn]

  [・・・・・・・・]

  [w1,・・・,wn]

として,Rv1〜Rv5を結ぶと単体ができあがる.

===================================

【1】正単体

 線分,三角形,四面体(三角錐)はそれぞれ最も簡単な1次元図形,2次元図形,3次元図形であるが,次元数nより1つ多い数の頂点によって作られる高次元図形を単体(シンプレックス)と呼ぶ.線分は一次元単体,三角形は二次元単体,三角錐は三次元単体とも呼ばれる所以である.

 n次元正単体の場合,

  頂点数: n+1,

  稜数:  (n+1)n/2,

  三角形数:n(n^2−1)/6

である.すなわち,各頂点からはn本の稜がでて,すべての頂点を結ぶと単体ができあがることになる.

 n次元正単体の頂点の座標を

  (1,0,・・・,0)

  (0,1,・・・,0)

  ・・・・・・・・・・・

  (0,0,・・・,1)

としよう.これらの頂点間距離は√2である.

 これらの座標が与えられたとき,残りの1点の座標は

  (x,x,・・・,x)

とすることができる.他の頂点との距離は√2であるから,

  (x−1)^2+(n−1)x^2=2

すなわち,

  nx^2−2x−1=0

を満たさなければならないことより,

  x={1±√(1+n)}/n

が得られる.

 あるいは同じことであるが,頂点を原点に平行移動させ,n個の頂点の座標を

  V1(0,0,0,・・・,0)

  V2(a,b,b,・・・,b)

  V3(b,a,b,・・・,b)

  ・・・・・・・・・・・・・・・

  Vn+1(b,b,b,・・・,a)

とするn次元単体(a>b>0)を考えることができる.ここで,各辺の長さが1であるとすれば

  a^2+(n−1)b^2=1,2(a−b)^2=1

が成り立つので,これを解いて

  b={√(1+n)−1}/n√2

  a=b+1/√2

を得ることもできるだろう.

 以下には,

  x={1−√(1+n)}/n

とした場合の正単体を描くためのプログラムを掲載する.

5720 '

5730 ' *** 正単体 ***

5740 '

5750 *SIMPLEX:

5760 T=1:' [non-stochastic]

5770 FOR IS=1 TO M:EDGE(IS)=SQR(T*AZ(IS,IS)):NEXT IS

5780 '

5790 FOR IS=1 TO M

5800 FOR KS=1 TO M:S(KS)=0:NEXT KS

5810 S(IS)=1:GOSUB *VERTEX:GXS=GX:GYS=GY

5820 '

5830 FOR JS=1 TO M

5840 IF JS=IS THEN 5880

5850 FOR KS=1 TO M:S(KS)=0:NEXT KS

5860 S(JS)=1:GOSUB *VERTEX:GXE=GX:GYE=GY

5870 LINE(GXS,-GYS)-(GXE,-GYE),7

5880 NEXT JS

5890 '

5900 FOR KS=1 TO M:S(KS)=(1-SQR(1+M))/M:NEXT KS

5910 GOSUB *VERTEX:GXE=GX:GYE=GY

5920 LINE(GXS,-GYS)-(GXE,-GYE),7

5930 NEXT IS

5940 RETURN

===================================