任何大于等于1的自然數n階乘:
也即
下表給出了一些自然數的階乘值:
https://en.***.org/wiki/Factorial
100!是一個158位的整數
100!這么大的數到底怎么算出來的呢?
階乘的計算直接求階乘,需要經過大量的乘法運算,位數太多,計算機也無法表示出來。此時,往往采用對數***,將階乘的乘法運算化為加法運算。如
編寫一段Python語言代碼求等式右邊的值:
importmath
digit_num=0.0
foriinrange(100):
digit_num+=math.log10(i+1)
print(digit_num)
運行得到
157.97000365471575(近似值),即
這說明100!是一個158位的數。根據對數函數與指數函數的關系,可以反求出階乘值:
以前不理解對數意義的朋友這里可以體會到對數的強大威力了吧?
另,階乘有一個有趣的近似公式:
斯特林()公式-Stirling'sapproximation
斯特林公式與階乘曲線對比
我們實際驗證一下斯特林公式的誤差。將n=100代入上述公式,得到100!≈9.3248476252693432477647561271787023234709745647418062292817958153368849555554046603086239162755522767325066157982750581730201788648720772023094674209485726744222550819049228652031041119504096696429434529708431163809342056757648101523406286160085266735172818639831611426620941684736285030409855242311268344207307073067790438191255736013812573265362270229118719809726115438569410402607630035313046957956392566366745658132452941877904052886947223641749037779513877635612354880691524914259437590327045612488757528210...×10^157
與我們用對數求得的值之間的誤差大約為0.08329%,即萬分之8.3,相當精準吧!!!
階乘的延拓可以將點(n,n!)即(0,0!),(1,1!),(2,2!),(3,3!),...在平面坐標系上表示出來。
n!,n=0..4
n!,n=0..6
n!,n=0..10
我們能不能找到一條數學曲線,能夠穿越上述所有點(n,n!)呢?找到這樣一條曲線的過程就是數學上的解析延拓,從整數域解析延拓到實數域。
伽瑪函數人類恰恰找到了這樣一個函數,即伽瑪函數(GammaFunction)。伽瑪函數的定義如下:
伽瑪函數是一個用定積分公式定義的函數,所以求伽瑪函數變成了求定積分。不難求得:
進而
伽瑪函數與實數域階層的關系
這些結論我就不做證明了,一方面這些知識可以很便捷地索到,另一也是更重要的方面是,畢竟我的目標不是嚇唬大家和顯擺自己的學問,而是希望盡可能充分地向大家分享、呈現數學的奧妙、美麗和魅力。
從該等式可以看出,階乘不就是伽瑪函數從實數域降維到整數域的降維函數嗎?反之,伽瑪函數不正是階乘序列在從整數域向實數域的延拓嗎?
伽瑪函數衍生出的一個常數,即為弗朗桑-羅賓遜常數(Fransén–RobinsonConstant):
問題:伽瑪函數是階乘運算的唯一解析拓展函數嗎?
答案是否定的,因為滿足這樣的拓展函數有無數個。如如下函數在橫坐標為整數時的值也等于對應的階乘值:
實數域的階乘函數因為
也就是說
用如下方式來表示這個階乘函數:
該階乘函數有如下遞推性質(從小到大,算正數的階乘時用到):
從上面的遞推公式,我們可以得到新的遞推公式(從大到小,算負數的階乘時用到):
我們試著求一下幾個非整數實數的階乘函數值:
根據這個值可以推出其他一系列值:
這π(x)就是實數域階乘函數的一個合理定義公式。階乘函數y=π(x)=x!的曲線如下圖:
我們發現上述階乘函數在負整數處不連續,即不收斂,與我們計算的結果相符:
最后再求兩個特殊的階乘
其實階乘還可以延拓到復數域,如
復函數
曲線圖如下
(cosx+isinx)!的曲線圖
人家在何許?云外一聲雞