斯特林公式

斯特林公式

斯特林公式(Stirling's approximation)是一條用來取n的階乘的近似值的數學公式。一般來說,當n很大的時候,n階乘的計算量十分大,所以斯特林公式十分好用,而且,即使在n很小的時候,斯特林公式的取值已經十分準確。

基本信息

定義

斯特林公式(Stirling's approximation)是一條用來取n的階乘的近似值的數學公式。一般來說,當n很大的時候,n階乘的計算量十分大,所以斯特林公式十分好用,而且,即使在n很小的時候,斯特林公式的取值已經十分準確。

斯特林公式在理論和套用上都具有重要的價值,對於機率論的發展也有著重大的意義。在數學分析中,大多都是利用Г函式、級數和含參變數的積分等知識進行證明或推導,很為繁瑣冗長。近年來,一些國內外學者利用機率論中的指數分布、泊松分布、χ²分布證之。

形式

斯特林公式 斯特林公式

或更精確的

斯特林公式 斯特林公式

斯特林公式 斯特林公式

證明

斯特林公式 斯特林公式

斯特林公式 斯特林公式

斯特林公式 斯特林公式
斯特林公式 斯特林公式
斯特林公式 斯特林公式
斯特林公式 斯特林公式
斯特林公式 斯特林公式

所以 即 ,即單調遞減,又由積分放縮法有

斯特林公式 斯特林公式
斯特林公式 斯特林公式

即 ,即

斯特林公式 斯特林公式

由單調有界定理 的極限存在 ,

斯特林公式 斯特林公式

斯特林公式 斯特林公式
斯特林公式 斯特林公式

利用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; }

相關詞條

相關搜尋

熱門詞條

聯絡我們