python计算无穷级数求和常用公式_从5050到-1/12——伯努利数、欧拉-麦克劳林公式与拉马努金求和...

高斯年幼时,他的数学老师为了刁难学生,要求课上的学生计算:

在大家都埋头计算时,高斯发现1到100中总共又50对a和b满足a+b=101,因此他快速发现问题的答案是5050。后来经过推广,我们得到了自然数求和的通式:

我们既然找到了自然数的求和公式,就不妨再去推广一下,试着寻找一下推广的求和公式:

利用二项式定理计算

的封闭式

为了算这个式子,我们不妨先研究一下这个求和式:

利用二项式定理,等式左侧又可以展开为:

这意味着我们可以得到一个自然数次幂求和公式间的递推关系:

因此我们可以用这个复杂的公式和

来计算高阶的
。比如:

读者不难通过数学归纳法来验证以上计算出来的

可以用于计算
,即自然数的平方和。

利用母函数来计算

母函数(Generating function),又名生成函数,是一种求解递推数列通项公式的常见方法。根据不同的需求,我们又两种母函数——普通型母函数和指数型母函数[1]

指数型母函数形如麦克劳林级数,所以我们可以通过对母函数求x=0处的n阶导来获得

其中普通型母函数适用于求解线性常系数递推关系,但是我们得到的

明显是一个非线性的递推关系。因此,我们采用指数型母函数来解决我们的问题:

因为

的递推关系实在是太复杂,我们就把其定义式
代入吧:

根据指数函数的展开式

以及等比数列求和公式
,我们就得到了生成函数的简洁表达式:

利用指数母函数的性质,我们可以通过以下方式计算

读者不难验证

。当然,对分式求导是一个比较复杂繁琐的过程,而对导数求极限还需要使用洛必达法则,因此我们还要寻找更加简便的方法。

自然数幂求和的终极方法——伯努利数

通常来讲,伯努利数(Bernoulli numbers)是一组满足以下母函数的唯一序列:

利用麦克劳林级数的性质,对母函数求n阶导数在x=0处的极限就可以得到
的值:

为了方便人们的使用,前几个常用的伯努利数已经被制成了表格

现在我们可以尝试计算一下

定义

,则h(x)是偶函数,意味着h(x)的幂级数展开中的
项的系数为零,于是

现在将伯努利数的母函数代入到

的母函数中,得:

然而,为了方便我们简化这个乘积,我们要引入新概念——柯西乘积(Cauchy product)

柯西乘积:对于两个级数

,我们有:

柯西乘积可以被理解为 对卷积积分(Integral of convolution)的离散形式。

在箭头处应用柯西乘积后,我们就得到:

因此,根据

母函数
的定义,我们得到了
用伯努利数表达的封闭式:

因此,自然数幂和的封闭式可以被表示为:

有了自然数幂和的公式,我们为何不扩大一下自己的视野、用自然数幂和公式来做些更有意思的事情呢?

用自然数幂和公式生成伯努利数

把n=1代入到自然数幂和公式,得到:

由于

,所以:

由于当m为奇数时除

外所有的伯努利数都为零,所以我们的目的是打造一个适用于偶数r的伯努利数生成公式。因此

于是我们便得到了一个伯努利数的递推公式。因此,我们可以马上实现一个简单的伯努利数生成器:

#!/usr/bin/env python3
from fractions import Fraction

B=[Fraction(1),Fraction(-1,2)]

def factorial(n):
    if n==0:
        return 1
    return n*factorial(n-1)

def binom(n,k):
    return Fraction(factorial(n),factorial(k)*factorial(n-k))

def next_bernoulli():
    r=len(B)    # Assume r>1
    s=0
    if r%2:
        return s
    for m in range(r):
        s+=binom(r,m)*(-1)**m*B[m]/(r+1-m)
    return 1-s

N=10

for i in range(N-2):
    B.append(next_bernoulli())

def to_latex(i,fr):
    sign="-"
    if fr>=0:
        sign=""
    denom="}"
    if fr.denominator!=1:
        denom=r"over%d}" % fr.denominator
    return r"B_{%d}&=%s{%d%s " % (i,sign,abs(fr.numerator),denom)

print(r"begin{aligned}")
for i in range(N):
    print(to_latex(i,B[i]))
print(r"end{aligned}")

然后就可以用它来生成一些伯努利数了:

利用自然数幂和公式计算任意函数的求和

在推导之前,我们需要用到一个关于二重求和的引理:

引理1:对于任何收敛的实数序列

,均有

引理的证明:利用二重积分的思想,我们可以画出求和区域:

fe742730b53c2e6fc1788007a96cf7c4.png
手绘的求和区域

如图,等式左侧的求和就相当于先对三角形区域的列求和再对行求和。因此交换求和符号后我们就需要按照先对行、再对列的思路来确定上下限。于是:

证毕

对于任意多项式函数

,我们都可以通过如下方法求和:

当然,多项式函数很明显还不够任意,我们不妨来看看能不能用我们的自然数幂和来计算任意函数f(x)。为了方便演示,我们假定函数f(x)的麦克劳林展开能够在

内满足
一致收敛(Uniform convergence)

现在我们定义

,则不难验证
。由于这个式子仍需使用到函数展开式的系数,所以我们需要进一步简化。

代入

到原来的式子中,得:

我们现在对蓝色部分应用刚刚提的引理1,得到:

根据幂函数的性质,我们发现

以及
,因此,我们可以将原式进一步简化:

现在我们再利用函数f(x)原先的定义,将式子进行最终的简化:

接着,根据

[2],我们得到:

最后我们再对等式两侧同时加上f(0),得到最终的结果就是欧拉-麦克劳林公式(Euler-Maclaurin formula)

因为我们先前假设
,所以欧拉-麦克劳林公式仅仅对
内的
解析函数(analytic function)适用。

欧拉-麦克劳林公式与拉马努金求和[3]

为了适合与当前需求,我们将原式改写为:

然后我们将积分拆分成

,然后再将所有与n相关的项移至等式左侧,得:

然后如果等式左侧中n->+∞时极限不存在,我们就把等式右侧的值作为发散级数

拉马努金和(Ramanujan sum),记作
。很明显,我们可以利用上面的拉马努金求和法来给发散级数
分配一个数:

因此,我们成功地通过了非复分析的方法得到了这个神奇的结论:

总结

在这篇文章中,我们通过解读高斯的发现,推导出了自然数的求和公式;通过使用伯努利数及其生成函数,导出了自然数幂求和的封闭式;通过将自然数幂求和公式拓展到幂级数求和,得到了欧拉-麦克劳林求和公式;利用基于欧拉-麦克劳林公式的拉马努金求和,我们又一次解释了为什么全体自然数之和被设为负十二分之一。


作者于2020年5月13日凌晨2点进行了2020年的AP Calculus BC考试,写完文章后天就亮了

d6ec34caf1ede906a211de4b40ccace9.png
隔离酒店附近,摄于2020年5月13日早晨4:41

参考

  1. ^母函数_百度百科 https://baike.baidu.com/item/%E6%AF%8D%E5%87%BD%E6%95%B0
  2. ^The Bernoulli Number Page https://www.bernoulli.org/
  3. ^拉马努金求和_百度百科 https://baike.baidu.com/item/%E6%8B%89%E9%A9%AC%E5%8A%AA%E9%87%91%E6%B1%82%E5%92%8C
<span style="color:#666666;font-size:14px;background-color:#FFFFFF;">这是一门简单易懂的概率论课程!</span><br /> <br /> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;">看教材学概率论实在是看不懂,教材编写者一般会认为教材有老师来讲解,所以自学教材会备受打击。</span><br /> <br /> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;">本课程最大特色就是 简单易懂, “简单易懂”意味着我会用简单的语言,你容易听懂的语言教你概率知识,而不是让你越听越晕。</span><br /> <br /> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;">没有概率论就没有统计学,也基本上就不存在机器学习了,从而人工智能也不会有今天这样的繁荣发展。如果要从事据科学行业,不懂概率论或者对概率论一知半解,基本上都要回过头重新学习概率论,因为吃不透概率论就吃不透算法原理,也就只能永远半吊子,在据科学行业半吊子那基本上就没有你的位置了。</span><br /> <br /> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;">各位,还是沉下心来老老实实的把概率论认真的学好吧!别想着速成,速成只会浪费你更多的时间!当然了,找到一个好老师教你,的确可以让你比别人更快的学会学好,比如我的这门概率论教程!</span><br /> <br /> <p> <br /> </p>
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页