现实生活中,我们只要掌握圆的周长和面积公式,了解球的表面积和体积公式就够用了,没有什么可以深究的。本篇将带你走进高维度球的表面积和体积公式
以下都假设球的半径为r,表面积为S,体积为V。球心为坐标原点O,具有n个维度的点X坐标为
,球内任意一点X,都满足距离条件
。
对于向量空间,距离测度分多种:
1范式 曼哈顿距离(Manhattan distance)
,
2范式 欧几里德距离(Euclidean distance)
,
n范式
范式 切比雪夫距离( Chebyshev distance)
。
超立方体
无穷大范式最简单,我们先作讨论。所有维度上的坐标的绝对值不超过r,这样的形状是一个边长为2r的超立方体。超(hyper,不是super)是一个泛化的概念,用以延伸到所有的维度上。
超立方体的各个轴都是正交的,所以体积
上的积分等于在各个轴上的长度的乘积,即
。
每个轴都有左右两个超平面限定,于是n维体有2n个面。在向高维扩展时,n维球的“体”就会沦落为n+1维球的“面”。我们有
,然后连同上面的式子,我们得到
。可以对着正方形和正方体检查一下,是符合的。对于一维情况,“体”就是线长
无疑。但是根据公式,“面”
,与半径无关,没有量纲。有点奇怪,相当于零维空间点的左右两个面?
超锥体
在曼哈顿距离下,
构成什么形状呢?可以从低维度入手。一维情况下是一条直线,二维情况下是一个围住
的正四边形,或者倾斜的正方体。三维情况下是正八面体,与各轴的交点是
。同理,n维情况下的交点是
构成超多面体,每个轴上有左右两个交点,每个轴上选一个交点,张成一个超平面。仅考虑正半轴,则形状分别是三角形,三角锥,四角锥,……超角锥。超角锥的体积公式是
个超角锥,每个超角锥的体积为
,于是体积公式就是
。
超球体
最后,我们来看一下常用的欧几里德距离——平方和后再开方。
先回忆一下公式:
圆的周长、面积公式
球的表面积、体积公式
根据上面的结论,一维球的“体”是二维球的“面”,对于一维球而言,其体积就是直线长度(类比二维球,即圆的周长),
。
关于圆的公式都涉及到
,结合上面超体的结论,再从量纲上分析,我们可以先大胆地推测
,其中 C, K为待求的常数。
我们可以选取笛卡尔坐标系或极坐标系,笛卡尔坐标系下的式子比较繁琐。
转化成极坐标系,就是
从一个空间映射到另一个空间,或者从一个坐标系变换到另一个坐标系,需要乘以雅可比矩阵( Jacobi matrix )。
球是中心对称的,由n维球
移项得
,如果固定
(切片操作),就得到n-1维半径为
的球,我们根据这个思想n维球的任意切片都是n-1维球,在
轴上平行切片,体积累加起来。对于3维球,每个切片薄得可以看成一个个半径为
圆柱体,
,换成积分得到体积递推公式:
这个结论可以通过数学归纳法来证明。
基于被积函数是偶函数,缩小积分范围为
然后令
,则
,换元得
整理一下
积分是Beta函数形式,Beta函数的定义为
于是,
Beta函数与Gamma函数存在关系
Gamma函数的定义
,性质
到这里就是常见的一类积分了,同济大学高等数学教材有讲过高斯分布。平方后转换成平面直角坐标系二重积分,然后转换成极坐标系求解,用这样巧妙的方法得到
带入常数
得
通过一系列的迭代,Gamma函数分子分母相消,
带入
和
得
。
很显然有
。
三角函数积分
由于
是相对x而言是常量,可以移到积分式子外面去。加上被积的函数是偶函数,我们有
。
换元,设
,则
;
你也可以
,则
。
好了,这一节的主角登场了。求积分
或者
。
n取1或2时容易求解,这引导着我们用分部积分法(integration by parts )
达到降次的效果。
带入
,然后化简
得到递推公式
。
接着,限定下上限分别为0和
,在边界,因为
和
总有一个为0,导致第一项的结果总是为0,于是得到更简单的递推形式
,然后分奇数、偶数迭代求解。
如何体面
球可以由半径逐渐递增的壳来填充,类似俄罗斯套娃。当填充的壳的厚度趋近于0时,我们就得到球的体积。由于球、球面的各向同性,球面上任何一个微元(facet)都可以近似看成平面,其体积为
,球面的体积为
,积分得
,反之
。对n维球的体积求导得n维球的表面积,这样也解释了对圆面积
求导得圆周长
,对球体积
求导得球表面积
。
通过求导,我们很体面地从“体”计算出“面”。(no pun intended)
其实,体积与面积之间还存在这样一个比例关系
。
公式细究
Γ函数有很多的性质,是符合整数点阶乘运算的最佳连续函数。
当
为偶数时,令
,则
;
当
为奇数时,令
,则
。
当
时,
,这个系数很是熟悉, 根据 Taylor 级数展开式
凑一下,有
。看!我们就这样构造到了一个神奇的数字
。半径取1的所有偶数维度球的体积之和为
。
是个超越数(Transcendental Number)。
有了公式之后,任意维度的体积
对于n维单位球,我们用matplotlib画一下体积V关于维度n的函数图。
#!/usr/bin/env python3
import matplotlib
import numpy as np
import scipy
import matplotlib.pyplot as plt
from scipy.special import gamma
# For unit sphere of dimension n, the volume is
# V_n = \frac {\pi^{\frac n 2}} {\Gamma(\frac n 2 + 1)}
t0 = -5.0
t1 = 20.0
t = np.arange(t0, t1, 0.1)
V = np.pi ** (t / 2.0) / gamma(t / 2.0 + 1.0)
n = np.arange(t0, t1, 1.0)
V_n = np.pi ** (n / 2.0) / gamma(n / 2.0 + 1.0)
figure, ax = plt.subplots()
ax.plot(t, V)
ax.plot(n, V_n, color='green', marker='o', linestyle='')
ax.set_xlabel('n (dimensionality)')
ax.set_ylabel('C_n m^n')
ax.set_title('volume of n dimensional unit sphere')
ax.grid()
figure.savefig("volume.png")
plt.show()
需要安装numpy, scipy, matplotlib这三个Python库,没安装的可以安装一下,以后科学计算和作图用得到的。控制台下输入命令 pip3 install numpy, scipy, matplotlib。代码运行无误后,得到图:
上面顺带也画出了负维空间的情况。从正整数维度到分数维度,再到负数维度,一直扩充到了实数范围。从图中看到,对于单位球,五维空间的体积最大。五维空间是什么概念?不清楚。克里斯托弗·诺兰是一个商业和艺术结合最好的导演,他在电影《星际穿越》中向我们描述了一个五维空间的存在。
固定半径r,我们可以看到,随着n的增长,分母以越来越大的正整数增加,分子以系数
稳定增长,不敌增长的最终结果是,体积趋近于0。分析是没错,但这是一个反直觉(counter-intuitive)的结论。下面的图可以帮忙纠正错觉。
维度越高,越靠近坐标轴。很形象的一个比喻就是海胆,核越来越小,刺突越来越长,也越来越尖。想看动画效果?可以观察
在平面直角坐标新中,p从无穷大到0,图形的变化。顺便,维度灾难
参考