三角関数から by RY
- 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