斯特林公式 ——Stirling公式(取N階乘近似值)(轉)


斯特靈公式是一條用來取n階乘近似值數學公式。一般來說,當n很大的時候,n階乘的計算量十分大,所以斯特靈公式十分好用。從圖中可以看出,即使在n很小的時候,斯特靈公式的取值已經十分准確。

                                                    

公式為   n! \approx \sqrt{2\pi n}\, \left(\frac{n}{e}\right)^{n}.

 從圖中看出,對於足夠大的整數n,這兩個數互為近似值。更加精確地:   

      \lim_{n \rightarrow \infty} {\frac{e^n\, n!}{n^n \sqrt{n}}} = \sqrt{2 \pi}.       或者        \lim_{n \rightarrow \infty} {\frac{n!}{\sqrt{2\pi n}\, \left(\frac{n}{e}\right)^{n}}} = 1

 

 這個公式,以及誤差的估計,可以推導如下。我們不直接估計n!,而是考慮它的自然對數

   \ln(n!) = \ln 1 + \ln 2 + \cdots + \ln n.

按一般方法計算N的階乘,其時間復雜度為O(N):    N!= 1 * 2 * 3 * 4 * 5 * ............ * N;


如果要計算N后得到的數字為幾位數,則我們可以知道其位數等於lgN!+1;

則: \ln(n!) = \ln 1 + \ln 2 + \cdots + \ln n.

但是當N很大的時候,我們可以通過斯特林公式進行優化:(即Stirling公式)

n! \approx \sqrt{2\pi n}\, \left(\frac{n}{e}\right)^{n}.(e = 2.718)

斯特林公式可以用來估算某數的大小,結合lg可以估算某數的位數,或者可以估算某數的階乘是另一個數的倍數。

例題:  http://acm.hdu.edu.cn/showproblem.php?pid=1018
題目給出的N的范圍是: 1<= N <= 107  

用普通方法肯定算不出N的階乘后的出的數字位數,但運用斯特林公式則很好解決.

 

 

Stirling 公式


即:


    Stirling公式的意義在於:當n足夠大時,n!計算起來十分困難,雖然有很多關於n!的等式,但並不能很好地對階乘結果進行估計,尤其是n很大之后,誤差將會非常大。但利用Stirling公式可以將階乘轉化成冪函數,使得階乘的結果得以更好的估計。而且n越大,估計得越准確。


 

利用Stirling公式求解n!的位數:易知整數n的位數為[lgn]+1。利用Stirling公式計算n!結果的位數時,可以兩邊取對數,得:


故n!的位數為:

 

url : https://blog.csdn.net/liangzhaoyang1/article/details/51145807#commentBox


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM