- 2次元の場合
- 半径1の円がある
- その周は
- 今、この円周上の点の座標を
で与えることができる
- この点は、ある基準点
から角度
だけ円周に沿って移動した点
- この弧の長さが
であり、この角度も
と言う
を考えてみよう
- 2つの点(
から、順方向(角
を計っている方向)にどのくらいの距離を行くと、点
になるかをもって、この点を表すとすると、
という値のペアが得られる
であり、点の座標は
と表される
:これは、総量が
を2つの成分に分けるわけ方である(ただし、
はk-次元球の表面積(今は
なので円周)であり、右辺の分母
の指数は次元(
)
- ここで、ちょっと考え方を変えて、
を使って、第1成分の値を、
を使って第2成分の値を表すことにすれば、
と表せる
- 3次元を考える
- 球面の
を考える
- この部分球面上に点をとって、その点と、3基準点
のそれぞれを通る大円を描く
- この大円によって、
部分球面は3等分できる
- 今、この部分球面の面積は、単位球表面積の
であって、計算でき、3つの値は、
を"底辺"とする球面上の三角形と、同様に、2基準点を結ぶ大円を"底辺"とする球面上三角形の"面積(立体角)"に分割される
- この立体角を
とする
- ただし、3つの
は
のとき第t成分であるとする
- 定義より
- ここで、部分球面上の点のユークリッド座標を
であるとし、
であるような関数
が定義できるのだろうか
- このfは「3次元における三角関数(自由度が2(3変数で、1制約(
))
- このような分割が球面上の点を一意に定めるが、問題は、そのときに
が等しいときに
が等しいか、ですが、次のように試してみると、そのようことは言えないようである
- 球面の
KyuumenSankaku<-function(v1,v2,v3){ t12<-acos(sum(v1*v2)) t23<-acos(sum(v2*v3)) t31<-acos(sum(v3*v1)) s1<-acos((cos(t23)-cos(t31)*cos(t12))/(sin(t12)*sin(t31))) s2<-acos((cos(t31)-cos(t12)*cos(t23))/(sin(t12)*sin(t23))) s3<-acos((cos(t12)-cos(t31)*cos(t23))/(sin(t31)*sin(t23))) area<-s1+s2+s3-pi list(vs=matrix(c(v1,v2,v3),ncol=3,byrow=TRUE),t=c(t12,t23,t31),s=c(s1,s2,s3),area=area,area2=area/(pi/2)) } v1<-c(0,1,0) v2<-c(0,0,1) library(MCMCpack) Niter<-1000 v3s<-rdirichlet(Niter,c(1,1,1)) v3s<-sqrt(v3s) area<-rep(0,Niter) for(i in 1:Niter){ #v3<-runif(3) #v3<-v3/sqrt(sum(v3^2)) #v3<-c(1/sqrt(3),1/sqrt(3),1/sqrt(3)) area[i]<-KyuumenSankaku(v1,v2,v3s[i,])$area2 } plot(v3s[,1],area,xlab="x1",ylab="rittaikaku")
*1:\phi_1,\phi_2,...,\phi_k