단위구 내의 두 지점을

따라서 사이거리의 평균은
이전 포스팅에서 거리 역수의 평균이
아래 그림은 거리에 대한 확률밀도함수를 Monte Carlo 시뮬레이션으로 구한 결과이다. 실제로 거리에 따른 확률밀도함수를 임의의 차원에서 구할 수 있는데, 3차원의 단위구는(ref: J. Math. Phys., Vol. 41, No. 4, April 2000, https://kipl.tistory.com/733)
로 계산이 된다. 이 확률밀도함수의 최대값은

#define TWO_PI 6.28318530717958647692
// picking a random vector inside an unit ball;
void randomVector(double &x, double &y, double &z) {
double a = double(rand()) / RAND_MAX; //[0,1] = radius;
double b = double(rand()) / RAND_MAX * 2 - 1; //[-1,1] = cos(theta);
double c = double(rand()) / RAND_MAX * TWO_PI; //[0, 2PI] = azimuthal;
a = pow(a, 1.0 / 3.0);
x = a * sqrt(1 - b * b) * cos(c);
y = a * sqrt(1 - b * b) * sin(c);
z = a * b;
}
// Calculate the distance between two randowm points selected
// inside an unit ball;
double randomDistance() {
double x1, y1, z1, x2, y2, z2;
randomVector(x1, y1, z1);
randomVector(x2, y2, z2);
x1 -= x2;
y1 -= y2;
z1 -= z2;
return sqrt(x1 * x1 + y1 * y1 + z1 * z1);
}
void meanDistSphere(CRaster& raster) {
double R = 100;
int trials = 5000000;
srand(unsigned(time(NULL)));
std::vector<int> hist(2 * int(R + .5) + 1, 0);
for (int i = trials; i-->0;) {
double d = R * randomDistance();
hist[int(d)]++;
}
double s = 0, sx = 0, sxx = 0;
double maxh = 0;
for (int i = hist.size(); i--> 0; ) {
double h = hist[i];
maxh = max(h, maxh);
s += h;
sx += h * i;
sxx += h * i * i;
}
double mean = sx / s;
double var = (sxx - sx / s) / s;
double sdev = sqrt(var);
// CRaster raster;
raster.SetDimensions(hist.size(), hist.size(), 24);
CSize sz = raster.GetSize();
memset(raster.GetDataPtr(), 0xFF, raster.GetDataSize());
for (int x = sz.cx; x--> 0; ) {
int h = int(double(sz.cy) * hist[x] / maxh);
for (int y = h; y--> 0; )
raster.SetPixel(x, sz.cy-1-y, 0);
}
// SaveRaster(raster, "hist.bmp");
}
728x90
'Mathematics' 카테고리의 다른 글
단위구에서 거리에 대한 확률밀도함수(distribution of distance in a unit ball) (0) | 2025.02.07 |
---|---|
단위원 내부점 사이의 평균 거리(mean distance between two points in a circular disk) (0) | 2025.02.07 |
단위구 내부점 사이의 평균 거리역수(mean reciprocal distance between points in a unit ball) (0) | 2025.02.04 |
쌍곡선의 반사특성(Reflective Property of Hyperbola) (5) | 2025.01.26 |
2025 (0) | 2025.01.01 |