- k次元空間にn個の単位ベクトルがある
- ベクトル同士の内積が関係を表す
- ペアワイズな内積が個計算される
- その内積から、k次元単位球面上にn個のベクトルを再配置する
library(sphere)
k<-5
n<-30
X<-RandomSphere(df=k,n=n)
X
Y<-X%*%t(X)
diag(Y)<-1
Y
Z<-acos(Y)
Z
VectorsFromPairwise<-function(X,k){
n<-length(X[,1])
M<-matrix(0,n,n)
M[1,1]<-1
M[2,1]<-X[2,1]
M[2,2]<-sqrt(1-M[2,1]^2)
for(i in 3:n){
M[i,1]<-X[i,1]
for(j in 2:(i-1)){
M[i,j]<-1/M[j,j]*(X[i,j]-sum(M[i,1:(j-1)]*M[j,1:(j-1)]))
}
M[i,i]<-sqrt(1-sum(M[i,]^2))
}
M<-M[,1:k]
M
}
M<-VectorsFromPairwise(Y,k)
M
Y2<-M%*%t(M)
max(abs(Y-Y2))
k<-5
t1<-acos(0.9)
t2<-acos(0.2)
Y<-SimplexAroundTip(k,t1,t2)
Y
A<-Y%*%t(Y)
A
MA<-VectorsFromPairwise(A,k+1)
MA
MA%*%t(MA)
Y2<-SimplexAtTip(k,t1)
Y2
B<-Y2%*%t(Y2)
B
MB<-VectorsFromPairwise(B,k+1)
MB
MB%*%t(MB)