- -正単体は、-次元空間にある、頂点数の正単体
- 重心から頂点までの距離が1であるようなそれを考える
- 次元に-正単体を置くには、個のデカルト座標軸上にのように頂点を取ることで作成できる
- 重心はであるので、確かにこの重心からの距離が1であることを確かめることは容易である
- このような次元座標の正単体の重心を原点に移動すると…
- 、またはというような頂点座標になる
make.simplex.n1 <- function(n){
ret <- matrix(-1/sqrt(n*(n-1)),n,n)
diag(ret) <- (n-1)/sqrt(n*(n-1))
ret
}
make.simplex.n1(4)
- 他方、次元にこれと同じ大きさの-正単体を置くと…
- ちなみに、次元座標だけれど、第番目の座標が0となるのも、次元に置いたことと同じなので、そのようにしてみる
- 回転行列を作る
CategoryVector<-function (d = 3){
df <- d - 1
diagval <- 1:d
diagval <- sqrt((d)/df) * sqrt((d - diagval)/(d - diagval + 1))
others <- -diagval/(d - (1:d))
m <- matrix(rep(others, d), nrow = d, byrow = TRUE)
diag(m) <- diagval
m[upper.tri(m)] <- 0
as.matrix(m[, 1:df])
}
rotation.simplex <- function(k){
cv <- CategoryVector(k)
rbind(t(cv*sqrt(1-1/k)),rep(1/sqrt(k),k))
}
R <- rotation.simplex(4)
A <- make.simplex.n1(4)
R %*% A -> B
B
apply(B^2,2,sum)
t(B) %*% B