階乘的概念能否推廣到全體實數,甚至是全體複數?

如題。正的非整數與負數的階乘有定義嗎?或者是說,階乘的概念能否推廣到全體實數,甚至是全體複數?要是有定義的話,那麼它又是如何定義的?


  • 300年前, 哥德巴赫也思考過同樣的問題(長文預警).

有時候提出有趣的問題也是一種本事, 好的問題即使自己沒法解決也可以大大推進數學的發展.

哥德巴赫就很擅長提問, 同時他與當時的數學家們私交甚好, 他寫信向當時著名的數學家族伯努利兄弟請教.

哥哥尼古拉斯沒能解決這個問題, 多年以後弟弟丹尼爾給出了一個漂亮的解答

box[#EFF,5px,border:2px solid red]{ n! =lim_{m 
ightarrow infty} frac{1cdot 2cdot 3 cdots mcdot(m+1)^n}{(1+n)(2+n)cdots (m+n)}}

式子本身不難證明, 難的是思路, 當然之前還有其他的一些鋪墊, 還有其他人的一些工作, 具體參考 附錄(3).

定義1:

當m&>&>n時有

egin{align}  frac{1cdot 2cdot 3 cdots m}{(1+n)(2+n)cdots (m+n)}(m+1)^{n} \ =  frac{1cdot 2cdot 3 cdots n cdot (n+1)(n+2) cdots m}{(1+n)(2+n)cdots m (m+1)(m+2)cdots (m+n)} (m+1)^{n} \ =  1cdot 2cdot 3 cdots n cdot enclose{downdiagonalstrike}{frac{(n+1)(n+2) cdots m}{(1+n)(2+n)cdots m }} cdot frac{(m+1)^{n}}{(m+1)(m+2)cdots (m+n)} \ =  n! cdot frac{(m+1)^{n}}{(m+1)(m+2)cdots (m+n)} \ =  n! cdot prod_{k=1}^{n} frac{m+1}{m+k} \ end{align}

兩邊對 m 取極限即證.


當然今天教科書並沒有寫這個, 教科書上寫的是:

box[#EFF,5px,border:2px solid red]{ n!=Gamma(n+1)=int_0^{infty}mathrm{e}^{-t}t^{n}mathrm{d}t}

其中 Gamma(z) 被稱為歐拉Gamma函數.

歐拉是伯努利兄弟的父親 — 約翰 · 貝努利 的得意門生.

歐拉得知丹尼爾的結論後, 結合其他人的一些工作(附錄3), 推測這個函數可以用積分表示.

考慮函數:

f(n,m) = frac{1cdot2cdots m}{(n+1)(n+2)cdots(n+m+1)}

顯然 f(m,n) 有遞推關係:

f(n,m) = frac{m}{n+1}f(n+1,m-1)

有沒有覺得這個關係很眼熟?

對了, 對f(n,m) = int_0^1 x^m(1-x)^ndx 作分部積分得到的遞推公式就是這個結果!

於是我們得到了關係式:

n! = (m+1)(m+2)cdots(n+m+1)int_0^1 x^m(1-x)^ndx

但問題是這裡 n, m不能是非正整數,那樣會導致遞歸無法截止.

當然歐拉就是歐拉, 歐拉是無窮分析的大師, 作代換: m=frac{f}{g} 可以得到

frac{n!}{(f+g)(f+2g)cdots(f+ng)} = frac{f+(n+1)g}{g^{n+1}} int_0^1 x^frac{f}{g}(1-x)^n dx

兩邊取極限 (f,g)	o(1,0) ,於是有:

n! =lim_{g	o0} frac{1+(n+1)g}{g^{n+1}} int_0^1 x^frac{1}{g}(1-x)^n dx

然後我要變形了, 令 h=frac{g}{1+g}	o g=frac{h}{1-h} ,於是有

n! =lim_{h	o0} left(frac{1}{h}-1
ight)^n left(frac{1}{h}+n
ight) int_0^1 x^{frac{1}{h}-1} (1-x)^n dx

再來 x=t^h	o h=log_t x

於是  int_0^1 x^{frac{1}{h}-1} (1-x)^n dx=h^{n+1} int_0^1 left(frac{1-t^h}{h}
ight)^n dx ,萬事俱備

egin{align}n! =lim_{h	o0} (1-h)^n (1+nh) int_0^1 left(frac{1-t^h}{h}
ight)^n dx\ =int_0^1 left(lim_{h	o0} frac{1-t^h}{h}
ight)^n dx\ =int_0^1 (-log t)^ndt end{align}


啊,漂亮! 不過還是和書上不一樣啊...

這簡單, 再做一次變數替換就行了

box[#EFF,5px,border:2px solid red]{ Gamma(x+1) = int_0^1 (-log t)^{x}dt = int_0^{infty} t^{x}e^{-t}dt }

1730 年 歐拉把他推廣得到的階乘函數寫信告訴了哥德巴赫, 那年歐拉年僅24歲.

不過...為什麼要+1呢? colorgreen{enclose{horizontalstrike}{small{因為 1730年是狗年啊!}}small話說到2018正好24個12年過去了}

事實上這個改動是勒讓德做出的, 高斯從來不 +1,歐拉早年也是不用 +1 的.

一個說法是考慮上面推導過程中出現的 B(x, y) = int_0^1 t^{x}(1-t)^{y}dt

這個函數今天被稱為歐拉貝塔函數.

+1 之後能有很漂亮的對稱形式:

box[#EFF,5px,border:2px solid red]{ B(x,y) = frac{Gamma(x)Gamma(y)}{Gamma(x+y)}}

當然更有說服力的論述要用到抽象代數, 詳見(附錄4)

另外推廣到複數直接考慮復積分即可.


但是, 故事還沒有結束, 還有一個問題

Gamma(z+1) 是階乘函數唯一的推廣嗎?

顯然並不是, 有無限多的函數滿足 f(x+1)=xf(x)

Euler階乘函數只是個半純函數, Luschny階乘函數甚至是全純函數

圖中可以看到所有的整數點都是吻合的, 只有在其他地方不同(附錄7).

其他的一些函數甚至克服了負整數Boom的問題,而且還是單調函數哩!

但...為什麼歷史進程偏偏選擇了歐拉階乘函數?

事實上歐拉 Gamma 函數是整個特殊函數論的基石.

有些時候數學家的工作就像是建築師

你房子造的怎麼樣直接影響其他設計師怎麼弄

地基選的不好雖然也可以進行數學研究但是麻煩會多得多...

比如你選了個負數相乘既不是正數也不是負數而是其他第三種數的體系...

你就蛋疼去吧, 雖然數學不怎麼在乎物理意義, 但這個情況真實存在, 比如夸克...


Gamma(z) 的定解條件有三個:

  1. f(1)=1
  2. f(x+1)=xf(x) quad 	exttt{when} x>0
  3. 對數凸性

其中最核心的一點是第三個, log Gamma(z) 是個凸函數, 那麼歐拉伽馬函數就是唯一的階乘推廣, 這個定理依據是 Bohr–Mollerup 理論, 很容易看懂.

Bohr-Mollerup theoremen.wikipedia.org

其實我不是很懂為什麼對數凸性如此的重要?

MO上有對於此的討論然而我並看不懂(附錄6)

我提了個問題邀請大家回答: 為什麼階乘的推廣要選擇歐拉 Gamma 函數?


研究這個問題的起因是, 有次我在SE聊天室里見大佬們在討論第四級運算, 冪塔函數 {}^ax 在實數上的定義問題.

對於數學家們來說搞個延拓不算什麼大問題, 難的是良定義.

冪塔運算在實數上的擴展有個大麻煩, 連續性 可微性 和 自然性 不能同時滿足.

我當時就很naive的問 自然性(二次凸性) 有什麼用, 為了這個甚至可以接受這個函數不連續,不無限可微???

大佬就發話了:

你知道其實我們有很多種階乘函數嗎?

( 懵逼 , 原來階乘函數除了Gamma還有別的?)

你知道Bohr–Mollerup 理論嗎?

( 懵逼 ,什麼鬼, 沒聽說過這個)

你真的懂凸性嗎?

( 懵逼 , WTF 凸函數怎麼啦)

你真的太年輕太簡單, 沒法就這個問題和我們談笑風生...

於是, 我就去查了下歐拉階乘函數的由來, 最後有了這篇文章.

其實最後我還是選擇了可微性&>&>逃

  • 參考文獻
  1. Who invented the gamma function?
  2. factorial history
  3. [火光搖曳]神奇的伽瑪函數(上) | 統計之都
  4. [火光搖曳]神奇的伽瑪函數(下) | 統計之都
  5. why-is-eulers-gamma-function-the-best-extension-of-the-factorial
  6. importance-of-log-convexity-of-the-gamma-function
  7. Is the Gamma-function misdefined?


Gamma(z)=int_0^{infty}mathrm{e}^{-t}t^{z-1}mathrm{d}t

在整個右半平面可以定義,可以解析延拓到整個複平面,其中非正整數點為一階極點。當n為非負整數時,

Gamma(n+1)=n!


這就是解析延拓

Γ函數Gamma(x)是階乘的解析延拓,但並不是唯一的。比如 f(x) = Gamma(x) cos (2npi)這個函數顯然也滿足把 n! 延拓到實數集。

順便說個好玩的,用伽瑪函數可以定義分數階的導數。

觀察一下函數f(x) = x^n的各階導數

由於k階導數可以用階乘表達,於是我們用伽瑪函數表達為

f(x)^{(k)} = frac{Gamma{(n+1)}}{Gamma{(n-k+1)}} x^{n-k}

基於上式,可以把導數的階從整數延拓到實數集。例如,取n=1,k=frac{1}{2}我們可以計算 f(x)=xfrac{1}{2} 階導數為

x^{(frac{1}{2})} = frac{Gamma{(1+1)}}{Gamma{(1-1/2+1)}} x^{1-1/2} 
= frac{2sqrt{x}}{sqrt{pi}}前段時間看了《LDA數學八卦》,裡面對伽瑪函數的來龍去脈以及特點描述的特別清楚,感興趣的可以去看看,或者看下面的鏈接(應該是同一個作者寫的)

神奇的伽瑪函數(上)

神奇的伽瑪函數(下)


首先階乘最初只對自然數有定義.

不過我們可以進行延拓,就是將階乘改寫為別的形式,使得改寫後的式子方便對更多的數有定義.

一個成功的方法是:

注意到計算公式 int_{0}^{+infty}x^{n-1}e^{-x}mathbb{d}x=(n-1)!,forall n in mathbb{N}

我們可以讓n取到非負實數,用alpha表示

就定義 Gamma(alpha)=int_{0}^{+infty}x^{alpha-1}e^{-x}mathbb{d}x,forall alphain mathbb{R}_{geq0}

為實數alpha的「階乘」.

不過我們需要先說明這個定義是良好的,事實上,由廣義積分的狄利克雷判別法,這個定義確實是良好的,我們就把定義擴展到了非負數.

當然我們還希望能擴展到負數. 一個成功的做法是

利用廣義積分的分部積分公式,可以得到非負數「階乘」的遞推公式

Gamma(alpha)=frac{Gamma(alpha+1)}{alpha+1},forall alphagt 0

就定義

Gamma(alpha)=frac{Gamma(alpha+1)}{alpha+1},forall alphain mathbb{R}

如果分母為0,定義為無窮即可(不是正無窮),這裡由於是代數延拓,容易看到是良定義的.

到這裡我們把階乘延拓到了實數上.

當然我們還可以推廣到複數上.

這裡複製上面的思路,第一步

Gamma(s)=int_{0}^{+infty}x^{s-1}e^{-x}mathbb{d}x,forall Re( s)gt 0

利用圍道積分可以檢查積分是良定義的,然後定義

Gamma(s)=frac{Gamma(s+1)}{s+1},forall sin mathbb{C} .

如果分母為0,定義為無窮即可.

這樣就得到了對複數定義的「階乘".

---------

對於別的域上的延拓,我並不了解,不知道有沒有什麼應用.


歪個樓,很多手機上的計算器用n! = Gamma(n+1)計算階乘的。


複數的乘法我忘了,但是對實數是可以的。

階乘就是個定義,是一種規定好的演算法。關鍵就是看一階是多少。一階是多少是可以隨便定義的。現在的定義一階就是1,進1就進一階。例如3!=1×2×3。

當然你也可以規定一階是0.1,進0.1就進一階。3!=0.1×0.2×0.3……×3。

不過這樣的實際意義不大,通常用不著。如果特殊情況你需要用,就可以臨時規定,比方說可以用這樣的符號表示:3(0.1)!。別人看了就知道這是0.1進階的階乘。


高等數學裡面不是有么,Gamma函數。


Gamma(x)


菜雞覺得至少複數應該不行,它不是有序集,沒有三歧性


就是伽馬函數啊


可以了解一下伽馬函數


參見gamma函數,以上


這是個很重要的延拓,還有一個延拓就是黎曼假設


能問出這樣的問題會不知道gamma函數?


推薦閱讀:

如何計算排列方法數,其中相同元素不能相鄰?
競賽組合題的成績可以通過訓練得到顯著提高嗎?
如果鴿籠原理/抽屜原理不存在,數學/科學會發生怎樣的改變?
正方形中如何安排一些線段,使總長度最短,同時擋住所有經過正方形的直線?

TAG:數學 | 數理統計學 | 組合數學Combinatorics | 概率論與數理統計 |