球面分布の特性を特異値分解で

  • 多次元単位球面上に多数の点があるような状況は、解析でよく出くわす
  • この点の分布が気になる
  • たとえば、n次元空間に線形独立なn個の単位ベクトルがあるときにその分布を知りたいとする
  • nxn行列として、全情報を表す
  • 行列の特性を抜き出す方法の一つが特異値分解
  • 特異値は一般に複素数になって、複素数を角座標で表したときに、特異値のの絶対値が「倍」の程度、その角度が「回転」の程度
  • こんな記事もあるので、できそう
d<-3
rs<-c(pi/4,pi/4,pi/4)

M<-diag(rep(1,d))
M

tmpM<-diag(rep(1,d))

M.e<-eigen(M)
abs(M.e[[1]])
tmpM[c(1,2),c(1,2)]<-c(cos(rs[1]),sin(rs[1]),-sin(rs[1]),cos(rs[1]))
tmpM
M<-tmpM%*%M
M
M.e<-eigen(M)
abs(M.e[[1]])
tmpM<-diag(rep(1,d))

tmpM[c(2,3),c(2,3)]<-c(cos(rs[2]),sin(rs[2]),-sin(rs[2]),cos(rs[2]))
tmpM
M<-tmpM%*%M
M
M.e<-eigen(M)
abs(M.e[[1]])

tmpM<-diag(rep(1,d))

tmpM[c(3,1),c(3,1)]<-c(cos(rs[3]),sin(rs[3]),-sin(rs[3]),cos(rs[3]))
tmpM
M<-tmpM%*%M
M

M.e<-eigen(M)
abs(M.e[[1]])

M<-matrix(runif(d^2),d,d)
M.e<-eigen(M)
abs(M.e[[1]])

apply(abs(M.e[[2]])^2,2,sum)
t(M.e[[2]])%*%M.e[[2]]


> z<-complex(real=3,imaginary=2)
> z
[1] 3+2i
> Re(z)
[1] 3
> Im(z)
[1] 2
> Mod(z)
[1] 3.605551
> Arg(z)
[1] 0.5880026
> Conj(z)
[1] 3-2i
>