首页 > 编程知识 正文

python计算球体的体积,python求球的体积和表面积具体步骤

时间:2023-05-04 16:11:40 阅读:211139 作者:2524

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

标准思路#

简单来说,$n$维球体积就是如下$n$重积分

$$V_n(r)=int_{x_1^2+x_2^2+dots+x_n^2leq r^2}dx_1 dx_2dots dx_n$$

用更加几何的思路,我们通过一组平行面($n-1$维的平行面)分割,使得$n$维球分解为一系列近似小柱体,因此,可以得到递推公式

$$V_n (r)=int_{-r}^r V_{n-1} left(sqrt{r^2-t^2}right)dt$$

设$t=rsintheta_1$,就有

$$V_n (r)=rint_{-frac{pi}{2}}^{frac{pi}{2}} V_{n-1} left(rcostheta_1right)costheta_1 dtheta_1$$

迭代一次就有

$$V_n (r)=r^2int_{-frac{pi}{2}}^{frac{pi}{2}}int_{-frac{pi}{2}}^{frac{pi}{2}} V_{n-2} left(rcostheta_1costheta_2right)costheta_1cos^2theta_2 dtheta_1 dtheta_2$$

迭代$n-1$次

$$begin{aligned}V_n (r)=&r^{n-1}int_{-frac{pi}{2}}^{frac{pi}{2}}dotsint_{-frac{pi}{2}}^{frac{pi}{2}}int_{-frac{pi}{2}}^{frac{pi}{2}} V_1left(rcostheta_1costheta_2dots costheta_{n-1}right)times\

&costheta_1cos^2theta_2dotscos^{n-1}theta_{n-1} dtheta_1 dtheta_2dots dtheta_{n-1}end{aligned}$$

其中$V_1 (r)=2r$,即两倍半径长的线段。从而

$$V_n (r)=2r^{n}int_{-frac{pi}{2}}^{frac{pi}{2}}dotsint_{-frac{pi}{2}}^{frac{pi}{2}}int_{-frac{pi}{2}}^{frac{pi}{2}} cos^2theta_1cos^3theta_2dotscos^{n}theta_{n-1} dtheta_1 dtheta_2dots dtheta_{n-1}$$

完成这个积分,最终就得到$n$维球体积的公式,这个积分自然是可以求出来的(只是$n-1$个一维积分的乘积)。但是这样的步骤太不容易了,为了将其跟伽马函数联系起来,还要做很多工作。总的来说,这是一个不容易记忆、也不怎么漂亮的标准方法。

绝妙思路#

有一个利用拉长的鞋子积分的绝妙技巧,能够帮助我们直接将球体积跟伽马函数联系起来,整个过程堪称鬼斧神工,而且给人“仅此一家,别无分号”的感觉。据说这个技巧为物理系学生所知晓,我是从百读文库看到的,原始来源则是《热力学与统计力学》cdbd(德),例5.2 理想气体的熵的统计计算。

这一绝妙的思路,始于我们用两种不同的思路计算拉长的鞋子积分

$$G(n)=int_{-infty}^{+infty}dotsint_{-infty}^{+infty}int_{-infty}^{+infty} expleft(-x_1^2-x_2^2-dots-x_n^2right)dx_1 dx_2 dots dx_ntag{1}$$

一方面,将$(1)$当作$n$次累次积分,因为我们已经算得(可以参考这里)

$$int_{-infty}^{+infty}exp(-t^2)dt=sqrt{pi}$$

而$(1)$只不过是这样的$n$个积分的乘积,因此

$$G(n)=pi^{n/2}tag{2}$$

另一方面,将$(1)$当作$n$重积分,由于积分变量只是跟径向长度$r=sqrt{x_1^2+x_2^2+dots+x_n^2}$有关的变量,因此很容易联想到球坐标,在$n$维空间中,可以称为“超球坐标”,不需要将超球坐标完整写出来,只需要注意到,球内的积分,可以化为先对“球壳”进行积分,然后再对球半径进行积分。

$$G(n)=int_{0}^{+infty}drint_{S_n(r)}expleft(-r^2right)dS_ntag{3}$$

这里的$S_n(r)$是半径为$r$的$n$维球体表面(以及表面积,在不至于混淆的情况下,这里不作区分)。但是注意到,被积函数只跟$r$有关,因此对球表面进行积分,等价于原函数乘以球的表面积而已,因此$(2)$式的结果为

$$G(n)=int_{0}^{+infty}drexpleft(-r^2right)S_n(r)tag{4}$$

虽然我们不知道$n$维球的体积和表面积公式,但是我们可以肯定,$n$维球的体积一定正比于$r^n$,即有

$$V_n (r)=V_n(1)r^n$$

球的表面积,就是球体积的一阶导数(考虑球壳分割),那么

$$S_n (r)=n V_n(1)r^{n-1}$$

代入$(4)$,得到

$$begin{aligned}G(n)=&n V_n(1)int_{0}^{+infty}r^{n-1}expleft(-r^2right)dr\

=&frac{1}{2}n V_n(1)int_{0}^{+infty}(r^2)^{n/2-1}expleft(-r^2right)d(r^2)\

=&frac{1}{2}n V_n(1)int_{0}^{+infty}z^{n/2-1}expleft(-zright)dzquadleft(z=r^2right)\

=&frac{1}{2}n V_n(1)Gammaleft(frac{n}{2}right)end{aligned}tag{5}$$

结合$(2)$得

$$pi^{n/2}=G(n)=frac{1}{2}n V_n(1)Gammaleft(frac{n}{2}right)$$

从而

$$V_n(1)=frac{pi^{n/2}}{frac{1}{2}nGammaleft(frac{n}{2}right)}=frac{pi^{n/2}}{Gammaleft(frac{n}{2}+1right)}$$

最后

$$V_n(r)=frac{pi^{n/2}}{Gammaleft(frac{n}{2}+1right)}r^n$$

就这样得到了$n$维球体积公式!!对$r$求导得到$n$维球表面积公式

$$S_n(r)=frac{2pi^{n/2}}{Gammaleft(frac{n}{2}right)}r^{n-1}$$

结合前后两个方法,就得到

$$frac{pi^{n/2}}{Gammaleft(frac{n}{2}+1right)}=2int_{-frac{pi}{2}}^{frac{pi}{2}}dotsint_{-frac{pi}{2}}^{frac{pi}{2}}int_{-frac{pi}{2}}^{frac{pi}{2}} cos^2theta_1cos^3theta_2dotscos^{n}theta_{n-1} dtheta_1 dtheta_2dots dtheta_{n-1}$$

简单评述#

该技巧相当漂亮、简洁,其中拉长的鞋子积分、球坐标变换这些都是物理系学生很熟悉的,只需简单峰回路转,就把结果给算了出来,这俨然就是只有物理系学生才能想出来的绝妙思路!

更妙的是,我们发现这一思路如此奇妙,以至于我们想用它来做更多的事情,但是稍微研究之后就会得到结论:不能再做什么了!也就是说,整个过程似乎就只为计算$n$维球体积而订制的!真的是“只此一家,别无分号”!妙哉~~

更详细的转载事宜请参考:《科学空间FAQ》

如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。

如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!

打赏

微信打赏

支付宝打赏

因为网站后台对打赏并无记录,因此欢迎在打赏时候备注留言。你还可以点击这里或在下方评论区留言来告知你的建议或需求。

如果您需要引用本文,请参考:

ajdyx. (2014, Dec 23). 《鬼斧神工:求n维球的体积 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/3154

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。