■この門くぐるべからず(その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
===================================