阶乘公式估算

 

计算方法1: 

 \ln n! = \ln1+\ln2+\ln3+...+\ln n = \ln \frac{1}{m}+ \ln m+\ln\frac{2}{m} + \ln m+\ln \frac{3}{m} + \ln m +...+\ln \frac{n}{m} + \ln m = \lim_{m\rightarrow 0}m\int_{\frac{0.5}{m}}^{\frac{n+0.5}{m}}\ln x dx + n\ln m

n! = (n+0.5)^{n+0.5}0.5^{-0.5}e^{n}

计算方法2: 

 n! = (n+0.5)^{n+0.5}e^{1-n}1.5^{1.5}

 

 斯特林公式:

n!=\sqrt{2\pi n}\left ( \frac{n}{e} \right )^{n}

想找一个比斯特林公式更准确的公式,但目前来看还没找到。一下是用python代码验证精确度对比:

import math

def get_my1(n):
    return pow(n+0.5, n+0.5)/pow(0.5,0.5)/pow(math.e, n)

def get_my2(n):
    return pow(n+0.5, n+0.5) * pow(math.e, 1-n) / pow(1.5, 1.5)


def get_stirling(n):
    return pow(2*math.pi*n, 0.5)*pow(n/math.e, n)

def get_real(n):
    if n > 1:
        return get_real(n-1) * n
    else:
        return 1

for i in range(20):
    s1 = get_my1(i)
    s2 = get_stirling(i)
    s3 = get_real(i)
    s4 = get_my2(i)

    print(str(i) + "的阶乘", "我的公式1:" + str(s1), "我的公式2:" + str(s4), "斯特林公式:" + str(s2), "真实值:" + str(s3))

输出结果:

PS C:\Users\admin\Desktop\素数测试> python .\test.py
0的阶乘 我的公式1:1.0 我的公式2:1.0462671635960652 斯特林公式:0.0 真实值:1
1的阶乘 我的公式1:0.955778824753476 我的公式2:1.0 斯特林公式:0.9221370088957891 真实值:1
2的阶乘 我的公式1:1.891368081695336 我的公式2:1.9788763181515103 斯特林公式:1.9190043514889832 真实值:2
3的阶乘 我的公式1:5.64767513538251 我的公式2:5.908977044808682 斯特林公式:5.836209591345864 真实值:6
4的阶乘 我的公式1:22.531670015434685 我的公式2:23.574146478131357 斯特林公式:23.506175132893294 真实值:24
5的阶乘 我的公式1:112.47017749752519 我的公式2:117.67385359948169 斯特林公式:118.0191679575901 真实值:120
6的阶乘 我的公式1:674.0388432189204 我的公式2:705.2247086482328 斯特林公式:710.078184642185 真实值:720
7的阶乘 我的公式1:4714.255321165201 我的公式2:4932.370543343173 斯特林公式:4980.395831612462 真实值:5040
8的阶乘 我的公式1:37689.46833870094 我的公式2:39433.25313617633 斯特林公式:39902.39545265671 真实值:40320
9的阶乘 我的公式1:339030.60992208595 我的公式2:354716.59461542487 斯特林公式:359536.87284194835 真实值:362880
10的阶乘 我的公式1:3388892.705644325 我的公式2:3545687.158865883 斯特林公式:3598695.6187410373 真实值:3628800
11的阶乘 我的公式1:37264977.29548183 我的公式2:38989122.096415535 斯特林公式:39615625.05057755 真实值:39916800
12的阶乘 我的公式1:447050286.5535827 我的公式2:467734035.2972252 斯特林公式:475687486.47277606 真实值:479001600
13的阶乘 我的公式1:5810220412.160191 我的公式2:6079042830.498804 斯特林公式:6187239475.19272 真实值:6227020800
14的阶乘 我的公式1:81325788665.92711 我的公式2:85088502234.71259 斯特林公式:86661001740.59883 真实值:87178291200
15的阶乘 我的公式1:1219660870608.6548 我的公式2:1276091119640.8247 斯特林公式:1300430722199.468 真实值:1307674368000
16的阶乘 我的公式1:19511397057211.58 我的公式2:20414134056845.37 斯特林公式:20814114415223.137 真实值:20922789888000
17的阶乘 我的公式1:331645918954308.4 我的公式2:346990234942534.7 斯特林公式:353948328666101.1 真实值:355687428096000
18的阶乘 我的公式1:5968858713901782.0 我的公式2:6245020876499675.0 斯特林公式:6372804626194313.0 真实值:6402373705728000
19的阶乘 我的公式1:1.1339522399703419e+17 我的公式2:1.1864169937671742e+17 斯特林公式:1.2111278659229419e+17 真实值:121645100408832000

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值