複製鏈接
請複製以下鏈接發送給好友

斯特林公式

鎖定
斯特林公式(Stirling's approximation)是一條用來取n的階乘近似值的數學公式。一般來説,階乘的計算複雜度為線性。當要為某些極大的n求階乘時,常見的方法複雜度不可接受。斯特林公式能夠將求解階乘的複雜度降低到對數級。而且,即使在n很小的時候,斯特林公式的取值已經十分準確。
中文名
斯特林公式
外文名
Stirling's approximation
分    類
數學
功    能
取n階乘的近似值
應    用
概率論
別    名
斯特靈公式

目錄

斯特林公式定義

斯特林公式在理論和應用上都具有重要的價值,對於概率論的發展也有着重大的意義。在數學分析中,大多都是利用Г函數、級數展開和含參變量的積分等知識進行證明或推導,這種證明比較複雜,有許多技巧,篇幅較大,不容易理解。 [2]  近年來,一些國內外學者利用概率論中的指數分佈泊松分佈、χ²分佈證之。

斯特林公式形式

或更精確的

斯特林公式證明

所以
,即單調遞減,又由積分放縮法有
,即
單調有界定理
的極限存在 [1] 
利用Wallis公式
所以

斯特林公式程序

斯特林數判斷階乘位數
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
const double e = 2.71828182845;
const double pi = 3.1415926;
int main(void) {
int t, i, f, v;
double a, s;
const double log10_e = log10(e);
const double log10_2_pi = log10(2.0*pi)/2.0;
while (scanf("%d", &t) != EOF && t) {
for (i = 0; i < t; ++i) {
scanf("%d\n", &v);
if (1 == v) {printf("1\n"); continue;}
a = v;
s = log10_2_pi + (a+0.5)*log10(a) - a * log10_e;
f = ceil(s);
printf("%d\n", f); } }
return 0; }
參考資料