用户:Peter Luschny/FactorialFunction
目录
近似值
阶乘函数。
介绍
-
.
-
.
-
.
-
.
斯蒂尔特杰斯近似
新近似值
新公式的系数
c:=数组(0..20,[1/24]):w:=“w”: 近似值:=proc(deg,n)局部n,A,k,p; N:=N+1/2; A:=N; 对于k从deg到-1到0的do A:=N+c[k]/A od; p:=N^2/A; ln(2*Pi)/2+N*(ln(p)-1); exp(%)结束: coeffCF:=proc(度)全局w,c; 局部R,k; R:=1..0美元; 如果w=“w”,则R:=$1..度; w:=度 elif deg>w,然后R:=$w+1..deg; w:=度fi; 对于R do中的k c[k]:=a; 转换(asympt(近似(k,m)-m!, m、 2*k+4),多项式): c[k]:=求解(%=0,a); 打印(`coeff:`,k,c[k]); od端:
系数CF(5); 近似值(3,10):evalf(%,20); 3628800.0000007818727 近似值(5,10):evalf(%,20); 3628800.0000000002108
Wehmeier公式
W:=数组(0..20):W:=“W”: wehmeier:=proc(deg,n)局部A,k; A:=n; 对于k从deg到-1到0的do A:=A+W[k]/n^k od; sqrt(2*Pi*A)*n^n*exp(-n)结束: coeffW:=程序(deg)全局w,w; 局部R,k; R:=$0.0; 如果w='w',则R:=$0..deg; w:=度 elif deg>w,然后R:=$w.deg; w:=度fi; 对于R do中的k W[k]:=a; 转换(asympt(wehmeier(k,m)-m!, m、 k+2),多项式): W[k]:=求解(%=0,a); 打印(`coeff:`,k,W[k]); od端:
系数W(5); 韦梅尔(3,10):评估值(%,20); 3628799.9727503853301 wehmeier(5,10):评价(%,20); 3628800.0002087858324
Nemes-G公式
H:=数组(0..20):w:=“w”: nemesG:=程序(deg,n)局部A,n,k; A: =1; N:=N+1/4; 对于k,从度乘-1到2 do A:=A+H[k]/N^k od; sqrt(2*Pi*(n+1/6))*n^n*exp(-n)*A端: 系数H:=proc(deg)全局w,H; 局部R,k; R:=2..0美元; 如果w=“w”,则R:=$2.deg; w:=度 elif deg>w,然后R:=$w.deg; w:=度fi; 对于R do中的k H[k]:=a; 转换(asympt(nemesG(k,m)-m!, m、 k+1),多项式): H[k]:=求解(%=0,a); print(`coeff:`,k,H[k]); od端:
系数H(5); nemesG(3,10):评价(%,20); 3628800.4061837742630 nemesG(5,10):评价(%,20); 3628799.9981087549165
高斯珀公式
G:=数组(0..20):w:=“w”: gosper:=proc(deg,n)局部A,k; A:=1; 对于k从deg乘以-1到2的do A:=A+G[k]/n^k od; A*sqrt(2*Pi*(n+1/6))*(n/exp(1))^n结束: coeffG:=proc(deg)全局w,G; 局部R,k; R:=$2.0; 如果w=“w”,则R:=$2.deg; w:=度 elif deg>w,然后R:=$w.deg; w:=度fi; 对于R do中的k G[k]:=a; convert(asympt(gosper(k,m)-m!, m、 k+1),多项式): G[k]:=求解(%=0,a); 打印(`coeff:`,k,G[k]); od端:
系数G(8); 鹅(3,10):评估值(%,20); 3628799.9289952224556 小鹅(5,10):evalf(%,20); 3628800.0001794192645
斯特林公式
h:=proc(k)选项记忆; 局部j` 如果`(k=0,1, (h(k-1)/k-加((h(k-j)*h(j))/(j+1),j=1..k-1)) /(1+1/(k+1))结束: coeffStirling:=proc(n)选项记忆; h(2*n)*2^n*pochhammer(1/2,n)结束:
一个小基准
新:=proc(n)局部C,n,A; N:=N+1/2; C:=[1/24,3/8018029/453606272051/14869008]; A:=N^2/(N+C[1]/(N+C[2]/(N+C[3]/(N+C[4]/N))); sqrt(2*Pi)*exp(N*(ln(A)-1))结束: wehmeier:=proc(n)局部W,n,A; N:=N+1/6; 宽度:=[1/72,-31/6480,-139/1555209871/6531840]; A:=N+W[1]/N+W[2]/N^2+W[3]/N^3+W[4]/N^4; sqrt(2*Pi*A)*n^n*exp(-n)结束: nemes:=proc(n)局部n,H,A; N:=N+1/4; H:=[1/144,-1/12960,-257/207360,-53/2612736]; A:=1+H[1]/N^2+H[2]/N^3+H[3]/N^4+H[4]/N^5; A*sqrt(2*Pi*(n+1/6))*n^n*exp(-n)结束: gosper:=proc(n)局部A,G; G:=[1/144,-23/6480,5/414724939/6531840]; A:=1+G[1]/n^2+G[2]/n^3+G[3]/n^4+G[4]/n^5; A*sqrt(2*Pi*(n+1/6))*n^n*exp(-n)结束: 斯特林:=proc(n)局部A,S; S:=[1/12,1/288,-139/51840,-571/2488320]; A:=1+S[1]/n+S[2]/n^2+S[3]/n^3+S[4]/n^4; A*sqrt(2*Pi)*n^(n+1/2)*exp(-n)结束:
edd:=程序(a,t)评估(-log[10](abs(1-a/t)),60)结束: 对于[100100010000]中的V,执行VF:=V!: printf(“斯特林%.5d!%6.1f\n”,V,edd(斯特林(V),VF)); printf(“Nemes-G%.5d!%6.1f\n”,V,edd(Nemes(V),VF)); printf(“Wehmeier%.5d!%6.1f\n”,V,edd(Wehmeier(V),VF)); printf(“Gosper%.5d!%6.1f\n”,V,edd(Gosper(V),VF)); printf(“新%.5d!%6.1f\n”,V,edd(新(V),VF)); 日期: