安卓手机扫描二维码安装App

第2280题:扩展阶乘到实数域



0.50.5 的阶乘是多少?将近 300300 年前哥德巴赫提出这个问题,阶乘本是对整数而言的,如 3!=3×2×1=63!=3 \times 2 \times 1 =6 ,将整数及其对应的阶乘画到平面上得到以下不连续的点。



那么,能不能找到一条曲线完美连接这些点呢?就是说,能不能找到一个函数来计算实数的阶乘呢?这一问题被称为泛化阶乘,或阶乘一般化

 

哥德巴赫把这个问题留给了伯努利兄弟中的约翰·伯努利,约翰·伯努利曾是欧拉的老师,此问题正好被欧拉看到并最终解决,这就是上一题中的欧拉第二积分,也叫伽玛函数(gamma function),长相如下:


Γ(n)=0+exxn1dxΓ(n)=\int_0^{+\infty} \mathrm{e}^{-x} x^{n-1} dx


改写一下,


Γ(n+1)=0+exxndxΓ(n+1)=\int_0^{+\infty} \mathrm{e}^{-x} x^n dx 

 

在上一题中关于伽玛函数的性质有一条 Γ(n+1)=n!Γ(n+1)=n! ,而其中的 nn 并不必须是整数,这正是阶乘的扩展。

 

上一题中,画出了 Γ(n)Γ(n) 的图形,并不通过整数阶乘点,把图形向左偏移 11 个单位,画出 Γ(n+1)Γ(n+1) 的图形如下



Γ(n+1)Γ(n+1) 的图形完美通过整数的阶乘点,将阶乘从整数域扩展到了实数甚至复数域。

 

以下是伽玛函数的一个JavaScrip实现,


function gamma(x)
 { 
    var p = [0.99999999999980993, 676.5203681218851, -1259.1392167224028,771.32342877765313, -176.61502916214059, 12.507343278686905,-0.13857109526572012, 9.9843695780195716e-6, 1.5056327351493116e-7];
    var g = 7; 
    if (x < 0.5) {
     return Math.PI / (Math.sin(Math.PI * x) * gamma(1 - x));   
    }
    x -= 1;
    var a = p[0];
    var t = x + g + 0.5;
    for (var i = 1; i < p.length; i++) {
        a += p[i] / (x + i);   
    }
    return Math.sqrt(2 * Math.PI) * Math.pow(t, x + 0.5) * Math.exp(-t) * a;
}



可以在电脑记事本里抄写这段代码,复制上,打开一个浏览器,按F12,进入浏览器自带的控制台,粘贴这段代码。回车后,新起一行,输入函数名称传入一个实数,计算得到实数的阶乘。

 

下面是用Edge浏览器的控制台运行以上代码的截图。



上一题选项中,0.50.5 的阶乘结果与 π\pi 有关,(0.5)!=Γ(1.5)=π2(0.5)!=Γ(1.5)=\dfrac{\sqrt{\pi}}{2}


猜一下,gamma(6.8) 约等于多少?

 

A. 85.622

B. 101.27

C. 367.92

D. 496.61



注:
1、《数学长征》正在改版,在下一版中,每一题都有可能附带一个可交互的图形操作或数据计算以加深理解,像本题这样的计算可以在题目里直接交互,敬请关注。
2、如果你想运行一段程序又没有运行环境,可以像本题一样写成JS代码在浏览器中执行。



苹果手机扫描二维码安装App
我来回答