60度か直角か

  • 正単体は正三角形を多次元に貼り合わせて作る
  • 正三角形を構成する3辺のうちの2辺は60度の角をなす
  • ある辺とその辺自身とのなす角は0度
  • 三角形を構成しない辺同士は直交する
  • k個の頂点を持つk-1正単体
  • 辺の数は\frac{k(k-1)}{2}
  • 原点から、正単体の辺のベクトルをとる
  • 辺のベクトルは両方向ともとる
  • 原点からN=2\times \frac{k(k-1)}{2}のベクトルが出ている
  • このベクトルのペアをとって、その内積(余弦)を調べると、1,0.5,0,-0.5,-1のいずれかになって
  • 1,-1になるペアの数はN
  • 0.5,-0.5になるペアの数は2\times N \times(k-2)
  • 0になるペアの数はN^2-2\times N -2\times(2\times N \times(k-2))=k(k-1)(k-2)(k-3)
ks<-2:20
outs<-outs2<-matrix(0,length(ks),5)
for(t in 1:length(ks)){
	k<-ks[t]
	Nv<-k
	Ne<-Nv*(Nv-1)
		tmp<-CategoryVector(k)
	tmp2<-NULL
	n<-length(tmp[,1])
	for(i in 1:(n-1)){
		for(j in (i+1):n){
			x<-(tmp[i,]-tmp[j,])
			tmp2<-rbind(tmp2,x,-x)
		}
	}
	tmp2<-tmp2/sqrt(sum(tmp2[1,]*tmp2[1,]))
	
	ttt<-tmp2%*%t(tmp2)
	
	
	#plot(sort(ttt))
	outs[t,1]<-length(which(ttt>0.8))
	outs[t,2]<-length(which(ttt> 0.4 & ttt < 0.6))
	outs[t,3]<-length(which(ttt> -0.4 & ttt < 0.4))
	outs[t,4]<-length(which(ttt> -0.6 & ttt < -0.4))
	outs[t,5]<-length(which(ttt<(-0.8)))

	outs2[t,1]<-Ne
	outs2[t,5]<-outs2[t,1]
	outs2[t,2]<-Ne*2*(Nv-2)
	outs2[t,4]<-outs2[t,2]
	outs2[t,3]<-k*(k-1)*(k-2)*(k-3)
}


outs
outs2