python球的體積公式 鬼斧神工 求n維球的體積

2021-10-11 11:51:30 字數 3023 閱讀 9993

今天早上同學問了我有關伽馬函式和$n$維空間的球體積之間的關係,我記得我以前想要研究,但是並沒有落實。既然她提問了,那麼就完成這未完成的計畫吧。

標準思路#

簡單來說,$n$維球體積就是如下$n$重積分

$$v_n(r)=\int_dx_1 dx_2\dots dx_n$$

用更加幾何的思路,我們通過一組平行面($n-1$維的平行面)分割,使得$n$維球分解為一系列近似小柱體,因此,可以得到遞推公式

$$v_n (r)=\int_^r v_ \left(\sqrt\right)dt$$

設$t=r\sin\theta_1$,就有

$$v_n (r)=r\int_}^} v_ \left(r\cos\theta_1\right)\cos\theta_1 d\theta_1$$

迭代一次就有

$$v_n (r)=r^2\int_}^}\int_}^} v_ \left(r\cos\theta_1\cos\theta_2\right)\cos\theta_1\cos^2\theta_2 d\theta_1 d\theta_2$$

迭代$n-1$次

$$\beginv_n (r)=&r^\int_}^}\dots\int_}^}\int_}^} v_1\left(r\cos\theta_1\cos\theta_2\dots \cos\theta_\right)\times\\

&\cos\theta_1\cos^2\theta_2\dots\cos^\theta_ d\theta_1 d\theta_2\dots d\theta_\end$$

其中$v_1 (r)=2r$,即兩倍半徑長的線段。從而

$$v_n (r)=2r^\int_}^}\dots\int_}^}\int_}^} \cos^2\theta_1\cos^3\theta_2\dots\cos^\theta_ d\theta_1 d\theta_2\dots d\theta_$$

完成這個積分,最終就得到$n$維球體積的公式,這個積分自然是可以求出來的(只是$n-1$個一維積分的乘積)。但是這樣的步驟太不容易了,為了將其跟伽馬函式聯絡起來,還要做很多任務作。總的來說,這是乙個不容易記憶、也不怎麼漂亮的標準方法。

絕妙思路#

有乙個利用高斯積分的絕妙技巧,能夠幫助我們直接將球體積跟伽馬函式聯絡起來,整個過程堪稱鬼斧神工,而且給人「僅此一家,別無分號」的感覺。據說這個技巧為物理系學生所知曉,我是從百讀文庫看到的,原始**則是《熱力學與統計力學》顧萊納(德),例5.2 理想氣體的熵的統計計算。

這一絕妙的思路,始於我們用兩種不同的思路計算高斯積分

$$g(n)=\int_^\dots\int_^\int_^ \exp\left(-x_1^2-x_2^2-\dots-x_n^2\right)dx_1 dx_2 \dots dx_n\tag$$

一方面,將$(1)$當作$n$次累次積分,因為我們已經算得(可以參考這裡)

$$\int_^\exp(-t^2)dt=\sqrt$$

而$(1)$只不過是這樣的$n$個積分的乘積,因此

$$g(n)=\pi^\tag$$

另一方面,將$(1)$當作$n$重積分,由於積分變數只是跟徑向長度$r=\sqrt$有關的變數,因此很容易聯想到球座標,在$n$維空間中,可以稱為「超球座標」,不需要將超球座標完整寫出來,只需要注意到,球內的積分,可以化為先對「球殼」進行積分,然後再對球半徑進行積分。

$$g(n)=\int_^dr\int_\exp\left(-r^2\right)ds_n\tag$$

這裡的$s_n(r)$是半徑為$r$的$n$維球體表面(以及表面積,在不至於混淆的情況下,這裡不作區分)。但是注意到,被積函式只跟$r$有關,因此對球表面進行積分,等價於原函式乘以球的表面積而已,因此$(2)$式的結果為

$$g(n)=\int_^dr\exp\left(-r^2\right)s_n(r)\tag$$

雖然我們不知道$n$維球的體積和表面積公式,但是我們可以肯定,$n$維球的體積一定正比於$r^n$,即有

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

球的表面積,就是球體積的一階導數(考慮球殼分割),那麼

$$s_n (r)=n v_n(1)r^$$

代入$(4)$,得到

$$\beging(n)=&n v_n(1)\int_^r^\exp\left(-r^2\right)dr\\

=&\fracn v_n(1)\int_^(r^2)^\exp\left(-r^2\right)d(r^2)\\

=&\fracn v_n(1)\int_^z^\exp\left(-z\right)dz\quad\left(z=r^2\right)\\

=&\fracn v_n(1)\gamma\left(\frac\right)\end\tag$$

結合$(2)$得

$$\pi^=g(n)=\fracn v_n(1)\gamma\left(\frac\right)$$

從而$$v_n(1)=\frac}n\gamma\left(\frac\right)}=\frac}+1\right)}$$

最後$$v_n(r)=\frac}+1\right)}r^n$$

就這樣得到了$n$維球體積公式!!對$r$求導得到$n$維球表面積公式

$$s_n(r)=\frac}\right)}r^$$

結合前後兩個方法,就得到

$$\frac}+1\right)}=2\int_}^}\dots\int_}^}\int_}^} \cos^2\theta_1\cos^3\theta_2\dots\cos^\theta_ d\theta_1 d\theta_2\dots d\theta_$$

簡單評述#

該技巧相當漂亮、簡潔,其中高斯積分、球座標變換這些都是物理系學生很熟悉的,只需簡單峰迴路轉,就把結果給算了出來,這儼然就是只有物理系學生才能想出來的絕妙思路!

更妙的是,我們發現這一思路如此奇妙,以至於我們想用它來做更多的事情,但是稍微研究之後就會得到結論:不能再做什麼了!也就是說,整個過程似乎就只為計算$n$維球體積而訂製的!真的是「只此一家,別無分號」!妙哉~~

打賞支付寶打賞

蘇劍林. (2014, dec 23). 《鬼斧神工:求n維球的體積 》[blog post]. retrieved from

求兩個球的體積並

兩個球和兩個圓一樣,有三種情況。相交,分離 包括兩種情況 對於分離的兩種情況,好計算。但是對於相交的情況,不好計算。需要計算球冠的大小。就是這樣。昨天晚上牛客上有乙個關於這樣的題 如下 includeusing namespace std const double pi acos 1.0 doubl...

C語言 求球的表面積和體積

1.相關數學公式 球體表面積公式 s 4 r d 球體體積公式 2.演算法分析 計算表面積和體積,均依賴球體半徑。所以需要先輸入球體半徑,然後根據公式計算出球體表面積和體積。最終輸出。3.include define pi 3.1415927 定義 值,根據需要確定精度。intmain 4.注意事項...

python計算6的階乘 python求n的階乘

階乘是基斯頓 卡曼 christian kramp,1760 1826 於1808年發明的運算符號,是數學術語。乙個正整數的階乘 factorial 是所有小於及等於該數的正整數的積,並且0的階乘為1。自然數n的階乘寫作n 下面我們來看一下使用python計算n的階乘的方法 第一種 利用functo...