||
很多时候,我们需要计算一个无穷级数之和。比如,历史上著名的Basel问题是要计算级数
之和。这个问题之所以叫巴塞尔问题,是因为来自巴塞尔的约翰-伯努利和雅克比-伯努利为之苦恼了很久,尔后解决之的数学家欧拉也来自巴塞尔。欧拉解决这个问题时,雅克比-伯努利已经死了,约翰-伯努利为之深表遗憾。
从纯粹数学分析的角度看,这个问题颇具吸引力。众所周知,调和级数
是发散的,并且是处在临界点上的发散级数。将分母上的n改成n的平方后,级数衰减加快,就收敛了。
欧拉凭借其天才解决了这个问题。事实上,用了不到2页纸,他不仅解决了这个问题,还解决了一系列类似的问题,即分母是n的任意偶数次幂的情况。他其实得到了所谓的欧拉等式
这个等式博主曾多次用到。
欧拉得到的结果是,这个级数和为pi^2/6。很神奇,无端中出现了圆周率pi。这让人想起维格纳讲的那个笑话。他两个同学多年之后相遇了,甲问乙在干什么,乙说他在做人口预测,然后给甲看预测公式,公式里有pi,甲便说这肯定错了,人口增长跟圆周率有什么关系呢?
欧拉的解法有天马行空的天才特征,但是也正因为如此在严格性上有所缺失。
不过欧拉对自己的结果有信心,因为在这之前他曾老老实实地计算过这个级数和,跟pi^2/6吻合很好。
本来对这个级数求和是一个很困难的问题。因为很明显,级数平方衰减,如果截断到前N项,那么误差就在1/N的量级。如果想算到小数点后三位,那么得取前1000项,这个计算量令人望而生畏。可是,欧拉一口气算到了小数点后20位!这对应着截取前万亿亿项,用今天的计算机恐怕也得算上千年呢。
原来欧拉有他自己发明的绝技,即后来所谓的欧拉-马克劳林公式。大体而言,这个公式在离散和和连续积分之间建立了一座桥梁。通常物理文献里的求和化积分,其实就是取这个公式的首项,后面更细致的小数点后多位的高阶项就扔了。这个公式的准确表述如下,其中B是所谓的伯努利常数,事先已经计算好了。
用在计算级数和上,这个公式的作用是生成一个收敛非常快的渐进级数。基于这个级数,下面的matlab程序在只取原级数前10项的情况下,将级数和算到计算机机器精度,也就是小数点后15位。其中的计算量哪怕手算也是可以胜任的。
上世纪20年代,Richardson等人又发明了新办法。其想法之简单,几句话就可以说清楚。
其效率之高,居然只需要前512项就可以达到计算机机器精度!下面是针对basel问题的matlab程序:
计算结果(随着迭代,曲线依次往下):
作业1:计算Leibniz级数的和
准确的结果是pi/4。这是Leibniz很得意的发现,但是他没有用这个级数计算圆周率,为什么?你现在是否有办法?
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-23 15:44
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社