现实生活中,我们只要掌握圆的周长和面积公式,了解球的表面积和体积公式就够用了,没有什么可以深究的。本篇将带你走进高维度球的表面积和体积公式

以下都假设球的半径为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,图形的变化。顺便,维度灾难

参考

python计算球体体积_漫谈超球体的体积公式相关推荐

  1. python求圆柱体的体积_漫谈超球体的体积公式

    现实生活中,我们只要掌握圆的周长和面积公式,了解球的表面积和体积公式就够用了,没有什么可以深究的.本篇将带你走进高维度球的表面积和体积公式[1]. 我们生活在三维空间,对更高维度的空间难以构想.笛卡尔 ...

  2. python计算圆柱体积_如何用PYTHON计算体积公式

    用PYTHON计算体积公式 工具/原料 PYTHON 方法/步骤 1 打开PYTHON,新建一个空白的PY文档. 2 import math dir() 首先我们要引入模块,然后查看目录是否已经引入成 ...

  3. python计算圆柱体积_用Python怎么用类的方法计算圆柱的表面积和体积,麻烦帮我写出代码,谢谢...

    展开全部 12345678910111213import mathclass cylinder(): def __init__(self,r,h): self._r=r self._h=h def v ...

  4. python计算球体体积_如何在Python中用MonteCarloMethod计算10维球体的体积?

    你的日常生活中有很多问题.在 你得到的错误信息来自你的线路r = 2.0*np.random.uniform(0,1,iter) - 1.0 函数调用np.random.uniform(0,1,ite ...

  5. python计算长方体体积最简单代码_python处理DICOM并计算三维模型体积

    python处理DICOM并计算三维模型体积 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  python处理DICOM并计算三维模型体积.txt ] (友情提示 ...

  6. python计算现场得分_浅谈用 Python 计算文本 BLEU 分数

    浅谈用 Python 计算文本 BLEU 分数 BLEU, 全称为 Bilingual Evaluation Understudy(双语评估替换), 是一个比较候选文本翻译与其他一个或多个参考翻译的评 ...

  7. python计算召回率_分词结果准确率、召回率计算-python

    原博文 2016-06-19 13:01 − 使用python计算crf根据模型的分词结果的准确率,召回率和F值 测试文件output.txt,第一列是字,第二列是人工标注的分词结果,第三列是根据模型 ...

  8. python计算连续复利_复利的Python程序

    python计算连续复利 Given principle amount, rate and time and we have to find the compound interest in Pyth ...

  9. python计算长方体体积最简单代码_C语言编程简单的小程序,计算长方体体积!...

    计算长方体体积 有朋友会说长方体体积还不好算吗?长X宽X高.没错用计算器一下就可以出结果,编程反而麻烦些,但是我们说的是这种思维,如果复杂的重复运算的话写好程序就非常简单了. 简单运算下一个固定高度的 ...

  10. python计算球体体积_鬼斧神工:求n维球的体积

    今天早上同学问了我有关伽马函数和$n$维空间的球体积之间的关系,我记得我以前想要研究,但是并没有落实.既然她提问了,那么就完成这未完成的计划吧. 标准思路# 简单来说,$n$维球体积就是如下$n$重积 ...

最新文章

  1. 前沿研究丨基于驾驶脑的智能驾驶车辆硬件平台架构
  2. 热榜第四:GitHub开源代码数据集界ImageNet,推出代码搜索挑战赛
  3. re:Invent解读:没想到你是这样的AWS
  4. 解决PyCharm中报出 “Shadows built-in name xxx“ 的警告
  5. wxWidgets:wxDir类用法
  6. 干货 | 那些高产的学者都是怎样工作的?
  7. 完全卸载NI系列软件的方法
  8. java c3p0 jar包_c3p0 jar包下载-c3p0-0.9.1.2.jar包下载 --pc6下载站
  9. html中哪些是行内元素,html行内元素有哪些
  10. Matlab程序控制示波器,基于MATLAB的虚拟示波器设计.PDF
  11. CentOS7.6安装MySQL5.7
  12. “一晚上” 拿到阿里offer的详细准备经历
  13. elementUI-收起与展开
  14. 脑壳疼,好好的系统,为什么要分库分表?
  15. 你好,智·世界竞赛大神社团达人专场,来听听赛场师兄的升级打怪心法
  16. 计通网项目四更新日志2021-06-10
  17. java在电脑上的用法,java怎么安装,java安装后怎么使用
  18. redhat6.9 安装ganglia监控服务
  19. 在docker容器中使用easyconnect
  20. oracle 排版,oracle中查看信息的时候修改它的排版相当的麻烦!

热门文章

  1. 网络1711班 C语言第七次作业批改总结
  2. BZOJ_5369_[Pkusc2018]最大前缀和_状压DP
  3. 我的公司不是家 【联想员工亲历联想大裁员】
  4. Java根据模板导出PPT
  5. 从左逆右逆广义逆到求解线性方程组的最小二乘解
  6. yjv是电缆还是电线_yjv电缆中的yjv是什么意思?yjv与yjv22电缆区别有哪些?
  7. cdr怎么做文字路径_CorelDRAW如何制作环绕圆形的路径文字
  8. 日本外贸市场开发攻略
  9. Mac下打印机提示保持以备鉴定无法进行打印
  10. html js实现省市区联动调节下拉框菜单