20/03/18 14:27:28 Tu49ygg5.net
>>836
数理はさっぱりわからないんだが、Wikipediaによれば正規分布に従う3変数から球面の一様分布座標が作れるらしい。
x1,x2,x3~Norm(0,1) で r=√(x1^2+x2^2+x3^2)として
(x1/r,x2/r,x3/r)が単位球面の一様分布になるという。
URLリンク(ja.wikipedia.org)
Marsaglia(1972)
URLリンク(projecteuclid.org)
実装してみた。
図示すると>836と同じく、x,y,zが一様分布して、球面の一様分布しているようにみえる。
vertex <- function(){ # xi ~ Norm(0,1) , xi/√(Σxi^2)
v=rnorm(3,0,1) # 正規分布N(0,1)する3個からなるベクトル v
v/sqrt(sum(v^2)) # v の長さで割る
}
vtx=replicate(5000,vertex())
par(mfrow=c(3,1))
x=vtx[1,] ; hist(x,col='pink')
y=vtx[2,] ; hist(y,col='orange')
z=vtx[3,] ; hist(z,col='darkgreen')
rgl::plot3d(x,y,z, col='slateblue')
par(mfrow=c(1,1))
# 四面体の体積
sim <- function(r=1,print=F){
v4=replicate(4,vertex()) # 4点の直交座標
if(print) print(v4)
abs(det(v4[,2:4]-v4[,1]))/6 # 四面体の体積
}
k=1e5
tetra=replicate(k,sim()) # k回のシミュレーション
mean(tetra)
summary(tetra)
BEST::plotPost(tetra)
期待値も分布もほぼ同じ。
> mean(tetra)
[1] 0.119512
> summary(tetra)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.0000001 0.0368084 0.0918738 0.1195120 0.1789221 0.5093198
四面体の体積の分布も同様でこんな分布。
URLリンク(i.imgur.com)