数学杂谈:高维空间向量夹角小记
Posted Espresso Macchiato
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数学杂谈:高维空间向量夹角小记相关的知识,希望对你有一定的参考价值。
1. 问题描述
故事起源于long long ago的时候看到的苏剑林某一篇博客当中提到了一个结论:
- 高维空间中两个随机向量大概率是相互正交的。
当时就对这个结论比较在意了,今天突然地又想到了这个问题,就想着趁着放假把这个结论验证一下。
显然,苏剑林在博客中提到的这个结论的表述是比较随意的,为了更好地定义我们的问题,我们将其细化一下:
- 对于n维中间的单位球面上的两个随机向量,他们之间的夹角 θ \\theta θ在n取大值时,趋近于90度。
要证明这个结论感觉比较难,但是要演示说明一下这个结果确实相对容易的,我们的第一反应就是蒙特卡洛模拟一下,实际生成 N N N组 n n n维空间上的均匀单位向量,然后考察一下他们之间的角度分布。
但是,要做到这件事,我们首先需要生成一下n维空间当中的均匀分布的单位向量。
2. n维空间中的均匀向量
1. 2维以及3维空间中的特殊情况
首先,我们来考察一些简单的情况,即2维和3维空间当中的情况。
1. 2维空间中的均匀分布向量
二维空间中的均匀分布向量其实就是单位圆上面的均匀分布向量,因此,我们只需要给出一个 0 0 0到 π \\pi π之间均匀分布的角度 ϕ \\phi ϕ即可得到一个均匀分布的单位向量 v ⃗ = ( s i n θ , c o s θ ) \\vecv = (sin\\theta, cos\\theta) v=(sinθ,cosθ)。
3. 3维空间中的均匀分布向量
对于三维的情况,事实上我相信大部分读者只要熟悉坐标系变换的话就还是很轻易能够写出解答的。
我们极坐标系下的坐标如下:
x
=
r
⋅
s
i
n
θ
⋅
s
i
n
ϕ
y
=
r
⋅
s
i
n
θ
⋅
c
o
s
ϕ
z
=
r
⋅
c
o
s
θ
\\left \\ \\beginaligned x & = r\\cdot sin\\theta \\cdot sin\\phi \\\\ y & = r\\cdot sin\\theta \\cdot cos\\phi \\\\ z & = r\\cdot cos\\theta \\endaligned \\right.
⎩⎪⎨⎪⎧xyz=r⋅sinθ⋅sinϕ=r⋅sinθ⋅cosϕ=r⋅cosθ
进而我们可以得到,单位体积元的表达公式为:
ρ
=
d
x
d
y
d
z
=
r
2
s
i
n
θ
d
r
d
θ
d
ϕ
\\beginaligned \\rho & = dxdydz \\\\ & = r^2sin\\theta drd\\theta d\\phi \\endaligned
ρ=dxdydz=r2sinθdrdθdϕ
可以看到,对于单位面元而言,其具体的表达式为 ρ = C ⋅ s i n θ d θ d ϕ = C ′ ⋅ d c o s θ ⋅ d ϕ \\rho = C \\cdot sin\\theta d\\theta d\\phi = C' \\cdot dcos\\theta \\cdot d\\phi ρ=C⋅sinθdθdϕ=C′⋅dcosθ⋅dϕ。因此,要生成一个均匀分布,我们只需要按照 c o s θ cos\\theta cosθ的分布生成一个 θ \\theta θ,然后生成一个 0 0 0到 2 π 2\\pi 2π上面均匀分布的 ϕ \\phi ϕ即可。
给出具体的python实现如下:
import numpy as np
def dummy():
theta = np.arccos(np.random.uniform(-1, 1))
phi = np.random.uniform() * 2 * np.pi
x = np.sin(theta) * np.sin(phi)
y = np.sin(theta) * np.cos(phi)
z = np.cos(theta)
return (x, y, z)
2. n维坐标系中的均匀向量
现在,我们来考察n维空间中的情况。
我们仿照3维空间的情况,只要先给出体积元的极坐标表达式,然后考察其中空间角的表达式即可。
给出n维空间下的极坐标转换如下:
x 1 = r ⋅ c o s θ 1 x 2 = r ⋅ s i n θ 1 ⋅ c o s θ 2 x 3 = r ⋅ s i n θ 1 ⋅ s i n θ 2 ⋅ c o s θ 3 . . . x n − 1 = r ⋅ s i n θ 1 ⋅ s i n θ 2 ⋅ . . . ⋅ s i n θ n − 2 ⋅ c o s θ n − 1 x n = r ⋅ s i n θ 1 ⋅ s i n θ 2 ⋅ . . . ⋅ s i n θ n − 2 ⋅ s i n θ n − 1 \\left\\ \\beginaligned & x_1 = r \\cdot cos\\theta_1 \\\\ & x_2 = r \\cdot sin\\theta_1 \\cdot cos\\theta_2 \\\\ & x_3 = r \\cdot sin\\theta_1 \\cdot sin\\theta_2 \\cdot cos\\theta_3 \\\\ & ... \\\\ & x_n-1 = r \\cdot sin\\theta_1 \\cdot sin\\theta_2 \\cdot ... \\cdot sin\\theta_n-2 \\cdot cos\\theta_n-1 \\\\ & x_n = r \\cdot sin\\theta_1 \\cdot sin\\theta_2 \\cdot ... \\cdot sin\\theta_n-2 \\cdot sin\\theta_n-1 \\endaligned \\right. ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧x1=r⋅cosθ1x2=r⋅sinθ1⋅cosθ2x3=r⋅sinθ1⋅sinθ2⋅cosθ3...xn−1=r⋅sinθ1⋅sinθ2⋅...⋅sinθn−2⋅cosθn−1xn=r⋅sinθ1⋅sinθ2⋅...⋅sinθn−2⋅sinθn−1
可以得到n维空间上的体积元: 以上是关于数学杂谈:高维空间向量夹角小记的主要内容,如果未能解决你的问题,请参考以下文章
d
x
1
d
x
2
.
.
.
d
x
n
=
∂
(
x
1
,
x
2
,
.
.
.
,
x
n
)
∂
(
r
,
θ
1
,
θ
2
,
.
.
.
,
θ
n
−
1
)
)
⋅
d
r
d
θ
1
d
θ
2
.
.
.
d
θ
n
−
1
=
d
e
t