命题

本文要证明的是高n维空间中,任意两个向量都几乎正交,注意:不是两个向量正交的概率大,而是”几乎正交,即夹角接近$\frac{π}{2}$。基本思路就是考虑两个随机向量的夹角$\theta$分布,然后求导得到概率密度,就可以看出在$\theta$在哪个范围内最大。

命题重定义

随机两个向量不好求,我们可以先固定一个,让另一个随机即可,假设固定向量为:

随机向量为:

现在我们把原命题重新定义为n维单位超球面上,任意一个点与原点组成的单位向量和$(1,0,0,…,0)$向量都几乎正交
直接计算可以得到:

现在要求的就是公式(3)的概率分布和密度,到这里还是一筹莫展。

球坐标系

将$y$直角坐标转为球坐标系后为:

其中,$\varphi_{n-1} \in[0,2π]$, $\varphi_{0…n-2} \in[0,π]$
此时,公式(3)中$cos \langle x,y \rangle$恰好等于$\varphi_1$,即两者之间的角度就是$\varphi_1$

n维超球面上的积分微元是$\sin^{n−2}(\varphi_1)\sin^{n−3}(\varphi_2)⋯sin(\varphi_{n−2})d\varphi1d\varphi2⋯d\varphi_{n−2}d\varphi_{n−1}$
因此n维球面积积分为:

故:

小插曲:
n维球体积:$V_n=\frac{\pi^{\frac{n}{2}}}{\Gamma(n/2)}r^{n-1}$,n维球面积$S_n=\frac{2\pi^{\frac{n}{2}}}{\Gamma(\frac{n}{2})}r^{n-1}=V_n’$

因此, 概率密度为:

密度函数图像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python
# coding=utf-8

import math

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd


def fun(n, x):
return (math.gamma(n / 2) * math.pow(math.sin(x), n - 2)) / (math.sqrt(math.pi) * math.gamma((n - 1) / 2))


if __name__ == '__main__':
datas_dict = dict()
xs = np.arange(0, 3, 0.01)
ys = list()
for n in [2, 3, 5, 10, 50, 100]:
for x in xs:
ys.append(fun(n, x))
datas_dict[str(n)] = ys.copy()
ys.clear()
data = pd.DataFrame(datas_dict, index=list(xs))
sns.lineplot(data=data)
plt.show()

参考:
https://spaces.ac.cn/archives/7076
https://zhuanlan.zhihu.com/p/379317902