引子
数学与计算
在几千年数学演变的历史长河中,东方和西方的先贤们经过不断努力,成就了数学的辉煌,推动了今天科技的发展。
古希腊人是数学的奠基者之一,古希腊的数学在数学史中占有重要的地位。古希腊人提出了公理化体系、形式逻辑,强调量化和系统化,使数学成为一门严密的、系统的、富有逻辑性的学科,开启了后世数学和科学的大门。
公元前480年以后,雅典成为希腊的政治、文化中心,各种学术思想在雅典争奇斗艳,在这种氛围下,数学开始从个别学派闭塞的围墙里跳出来,来到更广阔的天地间。哲学家柏拉图在雅典创办著名的柏拉图学园,培养了一大批数学家,他是“几何学”的铁杆信奉者,在其学园门上贴了一个告示:“不懂几何者莫入。”柏拉图的学生亚里士多德是形式主义的奠基者,其逻辑思想为日后将几何学整合在严密的逻辑体系之中开辟了道路。
亚历山大时期是希腊数学的鼎盛时期,其代表人物有名垂千古的几何学家欧几里得和阿基米德。欧几里得用公理方式整理几何学,写成13卷《几何原本》,这部划时代历史巨著的意义在于用公理法建立了演绎数学体系。阿基米德是古代最伟大的数学家和力学家之一,他最早使力学科学化,既有定性分析,又有定量计算。阿基米德在纯数学领域的一项重大贡献是建立多种平面图形面积和旋转体体积的精密求积法,其中蕴含着微积分的思想。
公元7世纪,阿拉伯人攻占亚历山大城,亚历山大城图书馆再度被焚(第一次是在公元前48年),希腊数学悠久灿烂的历史至此终结。
从历史进程来说,中国对数学的贡献是世界上最早的。中国传统数学称为算学,起源于仰韶文化,距今有5000余年历史,在周公时代,数乃六艺之一。在春秋战国时期,十进位制的筹算已经普及。和希腊人的《几何原本》相对应,中国人流传下来的经典之作是《九章算术》。不同的是,《九章算术》并不是一人一时写成的,它经历了多次的整理、删补和修订,是几代人共同劳动的结晶。《九章算术》大约成书于东汉初年,采用问题集形式,全书分为九章,列举了246个数学问题,并在若干问题之后,叙述这类问题的解题方法。虽然以算为主,但中国传统数学并非没有理论证明:赵爽、刘徽、祖冲之等都在对算经的注释中“寓理于算”。中国古代数学家的代表人物是刘徽,他在特殊的解法基础上,概括出问题的共性,开创了出入相补、极限逼近等流传千古的思想方法,在中国数学重实践轻理论的传统中,非常宝贵,非常耀眼。当代中国杰出数学家吴文俊曾说:“从对数学贡献的角度衡量,刘徽应该与欧几里得、阿基米德相提并论。”
可惜的是,与希腊数学相比,中国古代数学的诸多论著都已失传或残缺。
古代的数学就像冷兵器一样,战斗力还是有限的。300多年前英国人牛顿、德国人莱布尼茨横空出世后,数学的“火器时代”来临了。自从有了微积分,数学的研究就更加精彩、更加流畅。因为有了微积分,人类进入了现代数学时期,现代数学使飞机上天、火箭上天,可以预测天气、预测天体轨道。
数学“火器时代”的“柏拉图学园”就是德国的哥廷根数学学派,它在近代数学的发展中长期占据主导地位。“数学王子”高斯开启了哥廷根数学学派的辉煌时代,狄利克雷、黎曼继承了高斯的事业,在数论、几何和分析等领域做出了伟大的贡献。克莱因和希尔伯特使哥廷根数学学派进入了全盛时期,哥廷根大学因而也成为数学研究和教育的国际中心。从这里走出了一大批伟大的科学家,他们推动了世界的科学发展。
同样因为战争,犹太人遭到驱逐和迫害,哥廷根中心灿烂的历史终结。美国因此得到了众多从天上掉下来的科学才俊,也趁机接过了世界数学中心的荣耀,其中心地带就是普林斯顿高等研究院。这里接纳了爱因斯坦、冯·诺依曼,前者的贡献家喻户晓,后者帮助美国造出了计算机、造出了原子弹。
从数学家们念念不忘的古希腊数学婴儿开始,到今天现代的、阳光的、英俊的数学少年,数学一路走来,是什么让众多英雄“竞折腰”于这门古老的学科?
据说法国数学家托姆(1958年菲尔兹奖得主)曾经和两位古人类学家讨论:“我们的祖先出于什么动机保存了火种?”一位古人类学家说是由于火可以取暖,另一位则认为是由于用火烧制的熟食鲜美可口。而托姆则认为,人类保存火种的最原始动机,是由于在漫漫长夜中被光彩夺目的火苗所吸引,对美丽的火焰着了迷。
托姆的观点可以部分解释“竞折腰”的英雄投身于数学的动机:享受美丽。黑夜里看到数学的火焰光彩夺目是多么的美好,甚至更胜于寒夜的温暖、充饥的美食;研究数学是一项“审美”的工作。
数学是人类文明的结晶,是人类心智的荣耀。
什么是计算
在数学发展史上,计算与逻辑都是不可或缺的数学方法。希腊人更注重逻辑推理,而中国传统数学的特点是数形结合,以算为主,使用算器。如果把电子计算机看作对应于算筹的硬件,那么中国古代的算术可以看作软件思想,可以比作计算的程序设计。中国古代数学著作中的“术”,都是一套描述程序化算法的程序语言。
计算是一幅纵贯千年历史的画卷。在中华民族的光辉文明史上,有着璀璨夺目的篇章。中国古代数学有着悠久的数值计算传统,刘徽的球体积、祖冲之的圆周率、李冶的天元术、秦九韶的近似求根,就是其中代表,以至于到了20世纪初数学在中国还被称为算学。西方数学以古希腊几何为基础,虽然在演绎体系上精彩绝伦,但在具体计算上却不甚有效。直到微积分的发明和分析学的形成,西方在数学的“火器时代”才在计算上逐渐超越中国。
刘徽,公元3世纪魏晋时期数学家,是中国古代数学的代表性人物。刘徽的数学贡献涉及众多领域,他对求解线性方程组、圆锥体积、球体积等问题都有深入的研究。特别地,刘徽提出了“割圆术”,将圆周用内接或外切正多边形来逼近,以此来近似求得圆面积和圆周长。采用割圆术,他从直径为2尺的圆内接正六边形开始割圆,依次得到正十二边形、正二十四边形……割得越细,正多边形面积和圆面积之差越小,用他的原话说,是“割之弥细,所失弥少,割之又割,以至于不可割,则与圆周合体而无所失矣”。由于正多边形的面积可以精确计算,他计算了3072边形面积并由此得到了3.1416这个圆周率π的近似值。刘徽提出的计算圆周率的科学方法,奠定了此后千余年来中国圆周率计算在世界上的领先地位。
生活于公元5世纪的祖冲之,一生钻研自然科学,其主要贡献在数学、天文历法和机械制造三个方面。他在刘徽开创的割圆术基础上,首次将圆周率精算到小数点后第7位,即在3.1415926和3.1415927之间。直到15世纪,阿拉伯数学家阿尔·卡西才打破了这一纪录,他所求得的π的近似值能精确到小数点后第16位。另外,祖冲之还找到了两个简单的分数(约率)、(密率),来作为圆周率π的近似值,在数学上具有极其重要的意义。祖冲之提出的约率和密率中藏着鲜为人知的玄机,利用其中的原理,可以推断农历的大月小月、闰年闰月、火星大冲、日食月食等的周期性变化规律。[1]
13世纪,数学家秦九韶提出了求解任意高次方程的实数根的数值求解算法。秦九韶在《数书九章》中详细叙述了用他创造的算法近似求解高次方程的实数根,其中包含20个二次方程、1个三次方程、4个四次方程和1个十次方程。秦九韶的近似求根思想,直到今天都是大学计算数学的必学内容。
西方人对算法也是在不断追求中。特别是在现代数学时期,微积分让计算插上了翅膀,展翅飞翔。这方面的先驱有英国人牛顿、德国人高斯、瑞士人欧拉。牛顿的求根公式利用了导数的概念,可以达到数学上的“二次收敛”,使得方程求根极为“神速”,至今还是计算的一把利剑;高斯的“最小二乘法”,利用求导,使得误差的平方和最小化,是经久不衰、高效实用的计算法宝;而欧拉的微分方程数值法,特别是以折线代替曲线的概念,开创了微分方程数值计算的先河。
欧拉不只给出方法,他还是一个公认的“笔算”高手。欧拉给出了“欧拉常数”,并解决了著名的“巴塞尔级数问题”。
巴塞尔级数问题提出于1644年,即精确计算所有平方数的倒数之和。这个问题是以瑞士的第三大城市巴塞尔命名的,它是欧拉和伯努利家族的家乡。这一问题是世纪难题,在近一百年的时间里,它难倒了许多杰出的数学家,如沃利斯、伯努利、牛顿和莱布尼茨。欧拉从他的老师约翰·伯努利那里知道了这个问题,随后用了非常巧妙、非常简单的方法解决了这个百年难题,可谓“一朝成名天下知”。1735年,年方28岁的欧拉解决了这个问题,答案是π的平方除以6。
德裔荷兰数学家鲁道夫·科伊伦把他一生中的大部分时间都花在计算圆周率上。他运用的是传统的割圆术,用262边形,将圆周率计算到小数点后第35位。他对自己的这个成就非常自豪,以至于要求把这35位数刻在自己的墓碑上。直到今天,德国人还常常称圆周率为“鲁道夫数”。
总体来说,计算分两种,一种是算单个问题,比如算“巴塞尔级数”,算圆周率,这些是专题“项目”,问题的答案是唯一的;另一种就是“普度众生”,解决一大类问题,比如数值求解线性方程组,求多项式的根,求微分方程的解。线性方程组的系数不一样,多项式的系数不一样,微分方程的系数不一样,其数值解就不一样,但给定这些系数后,一个“通用”的计算方法就显得非常重要了。
什么是科学计算
随着电子计算机的问世,现代意义上的科学计算迎来了飞速发展。20世纪40年代,计算机的出现,标志着科学计算这门重要学科将以崭新的面目出现在世人面前。[2]
计算的永恒目标是“算”。但现在要求更高了,现代化的发展对计算有太多的刚性需求。
和古人一样,现代计算首先还是要依赖数学,要动脑;但和古人不一样的是,现代计算追求高效、高精度,全面依靠计算机、大型计算机、超级计算机。古人算圆周率30位的有效数字可能需要投入毕生精力,计算机时代的人们1秒钟就可以计算30位的有效数字。如果把再高深的数学加进去,计算机1秒钟可以算到上千位上万位有效数字!
最早的大规模科学计算的驱动可能来自天气预报。
几千年来,水手、渔民、农民和猎人通过看云、看风、看天象、看物象来预测天气,天气预报成了一套民间技艺。古代人观天象、测风云,用肉眼和简单仪器观测天空状况,不但观测日月星辰的变化,还记录了各种过去和当前发生的自然现象,并把总结的经验与当前观测结合起来,做出天气预报。《三国演义》中描述的大雾天草船借箭和借东风火烧曹军战船的故事,就是因为诸葛亮熟知长江流域的气候和异常天气变化特点,由此做出的短期天气预报并在军事上得到了成功的应用。从汉朝就开始使用的相风乌、唐朝使用的相风旗、15世纪的压板风速仪等,都是早期的风向或风力观测设备,表明仪器是天气预报走向定量化的不可缺少的手段。
随着自然科学大思想家的出现,天气预报走向定量化出现了曙光。17世纪的欧洲,经过许多科学家的努力,在天文学和力学方面积累了丰富资料的基础上,英国科学家牛顿实现了天上力学和地上力学的综合,形成了统一的力学体系——经典力学体系。经典力学体系的建立,是人类认识自然及历史的一次大飞跃,开辟了一个新时代。18世纪的拉普拉斯是法国的一位机械决定论者,被称为“法国的牛顿”,他把牛顿的质点运动确定论扩展到了无穷质点系统的确定论。大气或地球流体正是由无穷的质点组成的。拉普拉斯在《概率论的哲学试验》中写道:“我们可以把宇宙现在的状态看作是它历史的果和未来的因。如果存在这么一个智者,它在某一时刻,能够获知驱动这个自然运动的所有的力,以及组成这个自然的所有物体的位置,并且这个智者足够强大,可以把这些数据进行分析,那么宇宙之中从庞大的天体到微小的原子都将包含在一个运动方程之中;对这个智者而言,未来将无一不确定,恰如历史一样,在它眼前一览无余。”
拉普拉斯的这段名言,在科学和哲学界引起了轩然大波,余波至今未消。拉普拉斯这里所说的“智者”便是后人所称的“拉普拉斯妖”(Laplace’s demon)。事实上,拉普拉斯希望找到一个独立的公式,把宇宙的万物运动描述清楚。他提到,公式中要包含对力、位置和原子状态等的描述。这样,宇宙的前因后果就都确定了,也能回溯过去和预测未来了。这一理论体系直接影响到后来用于数值天气预报的纳维-斯托克斯(Navier Stokes)方程的建立。到现在,人们还在不断完善公式,改进探测工具,获取高分辨率的资料,努力实现拉普拉斯的理想目标。
为了准确预报天气,人们希望把天气的变化规律摸索、总结出来,用一种客观定量的办法进行预报,预先把未来的天气较精确地计算出来,这就是数值天气预报的基本思想,其创始人就是挪威学者威廉·皮叶克尼斯。皮叶克尼斯创立的极锋理论和气旋模式对现代气象学影响深远。1905年,皮叶克尼斯访问美国,向美国同行们介绍了他在气团理论研究中取得的重要进展,顺便提及他计划利用数学方法进行天气预报的设想。结果这一设想却意外地获得了卡耐基基金会按年发放的研究资助基金,这一资助持续了36年。
我们所居住的地球,表面上空被一厚度几公里到十几公里的大气层所环绕。我们所见到的雨、雪、雹、霜等天气现象就发生在这几公里到十几公里厚的大气层里。大气环绕着地球每天都在运动变化,它遵循牛顿运动定律、质量守恒定律、大气状态方程、热力学定理等。数值天气预报,就是将描述大气的流体动力学方程组、热力学方程组,根据某一时刻观测到的大气状态,用数学方法求解,得到未来某一个时间的大气状态,这就是天气预报。而要把这众多的数学方程组求解出来,是一件十分困难的事情。
20世纪初,英国物理学家理查森写了《用数值过程预测天气》(Weather Prediction by Numerical Process)一书。为了求得准确的数据,理查森还在1916年至1918年间,组织大量人力进行了第一次数值天气预报尝试。他的这一次预报计算是许多人用手摇计算机工作12个月才完成的。那时的手摇计算机运行得太慢了,要得到未来24小时的预报,如果一个人日夜不停地进行计算,需要算64000天,即约175年。也就是说,要跟上变化多端的天气,要有一个64000人一块工作的计算工厂,才能把24小时的天气预报所需的数值计算出来,实际上就是计算要与天气变化赛跑。这次实验虽然失败了,但它给了人们有意义的启示,是一个“异想天开”的创新。今天,人们把理查森的工作作为现代数值天气预报的开始,也称之为数值天气预报发展史上的第一个里程碑。
当电子计算机取代了理查森的手摇计算机后,数值天气预报的思想才得到了真正的实施。1950年,著名动力气象学家查尼等人使用世界上第一台电子计算机“埃尼阿克”(ENIAC),首次成功地对北美地区的24小时天气变化进行了预报,这是历史上第一张数值预报天气图。这一结果的公布被认为是数值预报发展史上的第二个里程碑。而当时所用的计算工具是世界上第一台现代电子计算机埃尼阿克,它于1946年2月14日在美国宾夕法尼亚大学的莫尔电机学院诞生。当时这个庞然大物占地约170平方米,重达30吨,能在1秒钟内进行5000次加法运算或500次乘法运算。
从那以后,一些国家相继将先进的数值天气预报引入实际业务中。中国也于1959年开展了数值天气预报的研究,1965年国家气象局首次发布用数值计算出来的天气预报,这也是现在每天《新闻联播》后面必不可少的一个节目。
随着计算机硬件的飞速发展,科学计算不仅在天气预测方面取得了成功,还在核武器模拟、飞行器设计、油田勘探、汽车设计、金融分析等众多领域取得了巨大成功,成为和理论科学、实验科学并驾齐驱的三驾马车之一。
中华人民共和国成立之前,中国大地上现代化的科学计算几乎是一片空白,像天气预测、核武器模拟、飞行器设计等大规模的计算研究都是空白。随着国防和民用的需求日益迫切,科学计算的研究从20世纪50年代末蓬勃开展起来。
而本文的主人公就活跃在那个火红的年代,为中国和世界的科学计算发展做出了巨大贡献。他和他的团队成员所要做的就是:依靠计算机、大型计算机、超级计算机,在最短的时间内获得实际问题解的最佳近似,即获得高效、精确的近似解。
什么是计算数学
前面谈到,科学计算和计算机是紧密联系在一起的。没有计算机,也就谈不上科学计算。但它又和计算机科学不一样。计算机就是一个可以用来算题的机器。然而,科学计算是把一个完全无法计算的东西,比如一个无穷维的微分方程,变换和简化成可以在计算机上演算的东西。也就是说,一个复杂而神秘的东西,用一个简单的算法来做它的“替身”,放到计算机上去求解。计算数学的任务就是寻找和创造这些“替身”。
计算数学的核心是找到快速、有效的“算法”,让计算机的威力最大化地发挥出来。
对此,中国科学院数学与系统科学研究院袁亚湘院士有一个非常通俗易懂的比喻:“计算机就相当于一个算盘,给你一个算盘,你没有口诀,你就不会用,而计算数学就是研究口诀的。我们先编好算法再使用计算机去解决问题,所以计算数学就是搞计算方法的。我们用各种各样的高效算法,针对不同性质的问题,找到人们关注的直观的解。比如说物理里面的问题,化学里面的问题,都可以归结成数学问题。这个数学问题的答案是什么,要把它找到,就要算。那算的话,方法很重要。一种要求就是算的速度要快,还有就是算的方法比别人先进。打个比方,1+2+3+4+5+……,一直加到100,你一步一步加,加到100需要近百次加法。但是有一个聪明的算法,首项加末项乘项数除以2,一下子就算出来,时间节约至少95%。所以方法很重要。”
前面所说的古人的例子,算圆周率是完成项目,不是形成统一的有效“算法”;同样,欧拉计算巴塞尔级数问题,也是攻克一个问题,也不能形成广而用之的“算法”。但是,刘徽的线性方程组消去法,秦九韶的高阶方程近似求根,高斯的“最小二乘法”“高斯数值求积分”,都是实实在在的“算法”。后者可以解决一大类、成百上千个同类问题。比如“高斯数值求积分”,只要输入一些积分区间上的节点和节点上的函数值,“方法”就可以立刻且高精度地给出积分值,而不需要绞尽脑汁去找积分的“原函数”。
我们知道,宇宙空间的球体间的引力与它们之间的距离有关。计算每一对星球之间的引力,探寻整个银河系里的运动规律……模拟这个庞大的系统,计算量大得可怕。硬算的话,计算机不知道要算到猴年马月,人们只能望洋兴叹。再看看宇宙飞船、飞机导弹,其周围被一层流体气层包裹着,如何设计流线型的运行物体,那是航天航空、汽车制造业的关键所在。当然,还有如何设计我们周围的电磁波,那是我们的无线通信、互联网、隐形飞机的重要基石。这些“设计”,很多可以通过计算机仿真、数值计算来完成。总之,大到宇宙,小到电子,无处不存在工程师和科学家想克服的“计算”难关。
计算数学,在探索自然界奥秘的过程中,可以扮演什么角色呢?
首先,应用数学家为上面的自然现象写出微分方程,这叫作建立模型,这是部分地实现了前面所说的拉普拉斯的理想目标。科学家认为,这些微分方程能够准确地描述人们想要知道的物理现象。但是,这些微分方程都是“无穷维”的,非常复杂,是“海市蜃楼”,基本上是无法找到精确答案的。有了这些微分方程,只能得到“心理安慰”,实际结果还是看不见摸不着的。
而当代的计算机,无论有多先进,只能够对付有限个数的运算,我们想要在计算机上运算无穷维的微分方程,得到它的解,是不可能办到的。也就是说,在计算机上做无穷个加减乘除的运算,只能是“天方夜谭”。
既然这般,我们可以退而求其次。工程师说了,我们不需要模型的准确解,如果能得到一个相对误差不超过百分之几的“近似解”,画出一个合理的图像来,让我们“眼见为实”,知道我们的设计结果是否合理就行了。计算数学要做的事,就是要做到“眼见为实”,要找到“近似解”。具体地说,就是要找到一个算法,设计一个编程,可以在计算机上运算,以此来“代替”那个可怕的微分方程。这样还不够,还要在理论上证明,得到的近似解和精确解间的相对误差不超过工程师心中的底线。有了这样的证明,又确保了精确度,工程师方才心满意足,并让他人“心服口服”。
我们再来看看研究者是用什么方法代替可怕的微分方程的。不管他们用什么方法,都是要将方程“离散化”,将连续的无穷维的微分方程,变成有限个线性或非线性方程组。与此同时,还要将求解区域做网格剖分,简单地讲就是将感兴趣的求解区域划成一个个格子,形成“网格”,然后写出每个格点上微分方程的近似格式。为此将微分方程在格点上的导数用相应的“差商”来代替,如一阶差商就是两个相邻格点上的函数值之差与相应坐标之差的比值,也就是说用“割线”代替“切线”。每个格点都有一个差分方程,这就形成了一个代数方程组。离散化的工作至此完成,剩下的就是如何求解离散后形成的代数方程组了。
精确解的“替身”找到了,工程师却又改变主意“得寸进尺”了。他们说:“现在精确度达到1%了,但我想得到0.1%,0.01%的精度,你如何做到?”计算数学家可以用同样一个程序,达到这些要求,只不过要增加计算量。比如,增加网格点的个数。只要你给出要求——达到精确度E,我总能找到网格N(E),来满足你的要求,在数学上,这叫收敛性。如果一个算法可以通过加密网格点数来使精度提高,那这个算法就是收敛的。
除了收敛性这一核心问题,计算数学还有其他两个核心问题:稳定性和高效率。
计算机是不能准确表达所有的数的。比如,,储存在计算机里的是0.3333333333333……,到底给出多少个小数点,那就要看你的计算机是怎么设计的。现在的计算机,不能准确表达无理数,也不能准确表达,等,一般可以保留十几位有效数字。被截断的部分,就是“截断误差”。当今的计算机里,“截断误差”通常可以小到10-15,似乎微不足道。但是问题在于,很多算法,都要在计算机上重复运算成千上万次。假设有一个算法,它在计算机上的每一次运算,都把误差放大1%,这看似微不足道的放大,似乎无害,但是运算1万次后,误差就被放大了1043倍,原来微不足道的10-15的截断误差,现在就被放大成了1028,这可是个天文数字啊!这样的误差,把所有真解的影子全都埋没了,那还了得!正所谓“差之毫厘,谬以千里”。
这就涉及“稳定”,一个好的算法是不允许把误差不断放大的。
效率的问题可以简单地描述如下。如果有两个算法,一个A,一个B,都能达到误差不超过1%的要求,但在同一台机器上,A要花两天才能算出结果,而B只要两小时就能给出同样的结果。我们喜欢哪一个呢?当然是B。这就是计算方法中不可忽视的问题,叫作算法的效率。
当今计算数学的一个重点研究方向,就是找到“高效”算法。
总而言之,科学计算的物质基础是计算机,但关键软实力是“计算方法”。计算方法是计算数学的核心,其三要素是收敛、稳定、高效。
回过头来从历史发展的角度看,科学计算和计算数学发展的重要推动力是核武器研制的刺激。
美国从1942年6月开始实施“曼哈顿计划”,到1945年制造出3颗原子弹:代号分别为“瘦子”(用于试验,7月16日)、“小男孩”(投于广岛,8月6日)、“胖子”(投于长崎,8月9日)。历时3年,涉及理论物理、爆轰物理、中子物理、金属物理、弹体弹道等大量的数值计算。
在设计原子弹的过程中,几位20世纪最优秀的应用数学家都参与了其“算法”的研究,包括本书后面将多次提到的理查德·柯朗、冯·诺依曼、拉克斯。
柯朗是德裔美籍数学家,以其名字命名的纽约大学柯朗数学科学研究所是当今全球排名第一的应用数学研究所。1907年,柯朗成为当时世界数学中心哥廷根数学学派的掌门人大卫·希尔伯特的助手。1924年,柯朗在哥廷根筹建数学研究所,研究所于1929年成立并由柯朗任所长。1934年,柯朗来到美国,成为纽约大学教授,领导了应用数学小组,参与洛斯阿拉莫斯导弹基地的计算数学研究,这个小组后来发展为数学和力学研究所,并于1964年改名为柯朗数学科学研究所。柯朗数学科学研究所拥有20多名美国国家科学院院士和美国国家工程院院士,4名美国国家科学奖章获得者,4名阿贝尔数学奖获得者,这些耀眼的数字超过美国的任何其他数学机构。
除了出色的组织才能,柯朗还有让世人称道的数学成就。他与希尔伯特共同撰写了极有影响力的教科书《数学物理方法》,此书问世80多年后仍然享誉全球,被众多名校采纳为理工科必修教材。他与哈佛大学著名拓扑学家赫伯特·鲁宾斯合著的数学名著《什么是数学》,被翻译成了多国文字,现在仍在全球被不断印刷。他在双曲型偏微分方程、水下声学、爆炸理论等应用数学方面都有着非常重要的贡献。后面还会专门提到,他是提出有限元方法的第一人。
这里要重点提一下冯·诺依曼,“现代计算数学”的主要奠基人。他是公认的天才里面的天才,虽然没有什么诺贝尔奖之类的虚名,但那些获了诺奖的看到他还是要礼让三分的,他所干的,比如创立计算机原理,创立博弈论,创立冯·诺依曼代数,制造核武器,都是惊天动地的大事。关于他的传说有很多,比如说他6岁时能心算8位数除法,8岁时已掌握了微积分,12岁时能读波莱尔的著作《函数论》。有一次,冯·诺依曼对他的朋友说:“我能背诵《双城记》。”朋友就挑了几章做测试,果然如冯·诺依曼所言。
在50多年人生里,他做过美国数学学会主席,做过总统科学顾问,在1957年弥留之际,美国国防部正副部长、陆海空三军总司令以及其他军政要员齐聚在其病榻前,聆听他最后的建议和非凡的洞见。
在历史上,许多民族的数学家都创造了各种便捷的数值计算方法,可是,这些古典的方法对于计算机未必是最优的,而一些看起来在算法上极为复杂的方法,编制为程序后反而容易在计算机上实现。换句话说,计算机有其适合的计算方法和技巧。在这方面,冯·诺依曼做出了许多重要贡献,他先后创造了矩阵特征值计算、求逆和随机数产生等十来种计算技巧,在工业部门和政府计划工作中得到广泛的应用。20世纪40年代,在制造核武器的过程中,他与奥地利出生的美国数学家尤拉姆合作创造了著名的蒙特卡罗方法。这是一种通过人工抽样寻求问题近似解的方法,它将需要求解的数学问题化为概率模型,在计算机上实现随机模拟获得近似解。
蒙特卡罗方法充分体现了计算机处理大量随机数据的能力,是计算机时代新型算法的先锋。它在解决实际问题时需要分两步:模拟产生各种概率分布的随机变量;用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解。这一方法在金融工程学、宏观经济学、生物医学、计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。比如金融衍生产品的定价及交易风险估算,变量的个数(维数)有时高达数百甚至上千,这就是所谓“维数的灾难”。传统方法对此大都束手无策,而蒙特卡罗方法可以给出合理的解决方案。蒙特卡罗方法的优点在于,它的计算复杂性不依赖于维数,所以具有强大的生命力。
还是在同一时期,冯·诺依曼提出了非常有名的诺依曼数值稳定性分析。这个当今计算数学本科生都晓得的理论,在当时被美国军方列为高度军事机密,保密期长达十年。这个“稳定性”分析就是上面所谈的计算数学的核心之一。
既能设计计算方法,又能给出稳定性理论,可以说冯·诺依曼是现代计算数学领域的重要奠基人。
现代计算数学的另一个奠基人、本书后面常提到的重要人物就是拉克斯。他是本书的主人公冯康非常佩服的一位大学者。拉克斯是匈牙利裔美国数学家,1926年出生于匈牙利布达佩斯,为了逃避纳粹迫害,15岁随家人避居美国。1944年参军,曾接受过工程训练。1945年到洛斯阿拉莫斯国家实验室工作,并得益于冯·诺依曼的指导。1949年于纽约大学获博士学位,其后又在洛斯阿拉莫斯国家实验室工作一年。1951年他任纽约大学助理教授,之后50年一直任教于纽约大学数学研究所。1963年任柯朗数学科学研究所计算及应用数学中心主任,1972年到1980年任柯朗数学科学研究所所长。他是美国国家科学院院士,1986年获得美国国家科学奖,1987年获沃尔夫数学奖,2005年获得阿贝尔奖。
拉克斯在纯数学及应用数学方面均做出了巨大贡献。他的主要研究领域为偏微分方程、散射理论、泛函分析、流体力学以及计算数学。他在奇异积分算子、伪微分算子和傅立叶积分算子研究中做了重要工作,他关于散射理论的研究开辟了这一领域的新前景。拉克斯最有影响的是非线性双曲型方程及激波理论的突破性工作,拉克斯激波条件、拉克斯熵条件、拉克斯弗里德里希斯格式、拉克斯-温德若夫格式在激波理论和激波计算中做出了决定性的贡献。另外,拉克斯对KdV方程的独特眼光大大推动了孤立子问题的研究。
弗里德里希斯是柯朗的学生、拉克斯的导师,他在有限差分方法、有限元方法等重要计算数学研究方向都做了奠基性的工作。弗里德里希斯曾任柯朗数学科学研究所所长,获得过美国最高科学奖——国家科学奖章。弗里德里希斯是柯朗数学科学研究所的三名创始人之一,并在这个研究所工作了大半辈子。
特别值得指出的是,现在计算数学教科书里面的拉克斯等价性定理,奠定了偏微分方程差分方法的“收敛性”理论基础,他创立的拉克斯-密格拉蒙定理是线性泛函分析的基本定理之一,在有限元方法收敛性理论方面起着最基本的作用。
冯·诺依曼对计算数学稳定性的开创性工作,拉克斯对收敛性的奠基性工作,筑牢了计算数学这座大厦的根基。
前几年接受采访时,对冯·诺依曼推崇备至的拉克斯充满感情地说:“如果冯·诺依曼活得长一点,他肯定可以获得数学的阿贝尔奖,诺贝尔经济学奖,计算机的大奖,量子力学的诺贝尔物理学奖,等等。”“原子弹不能通过试错的办法来制造,每个设计方案都必须有理论上的测试。这就需要求解非线性可压流体方程组。冯·诺依曼意识到解析方法在此是无能为力的,解决连续力学问题的唯一途径就是离散方程并求出数值解。数值求解的工具必须包含高速的可编程的电子计算机、大型存储器、编程语言、微分方程离散的稳定性理论以及众多的快速求解离散方程组的程序。二战后冯·诺依曼所花费的主要精力就是解决这些问题。他充分认识到计算方法不仅对制造核武器至关重要,而且对众多的科学和工程问题也非常重要。”[3]
中国现代计算的开篇
最早推动中国计算数学发展的是华罗庚。
华罗庚在中国可谓家喻户晓。1931年,他以初中学历被熊庆来邀请到清华大学做助理员,旋即升为助教和教员,其后更是被推荐至剑桥大学访问大数学家哈代,归国后直接被西南联大聘为教授。
1940年3月4日,华罗庚鼓足勇气给时任国民政府教育部部长的陈立夫写信,阐明了他对基础科学和应用科学的看法。华罗庚认为对于国家建设,需“标本兼治”。治标所依赖的是应用科学,治本则需依赖纯粹科学。因此他积极呼吁成立纯粹科学(主要是指数学)的研究所。不久,陈立夫回信称教育部对应用科学和纯粹科学向来主张兼筹并顾。
1944年1月15日,华罗庚给陈立夫写了第二封信。华罗庚在信中提到他解决了俞大维数学难题的事情(据说是破译密码)。俞大维出生于浙江绍兴的名门,家族中才俊辈出。他自己是哈佛大学博士,1926年在德国《数学年刊》(Mathematische Annalen)上发表了数理逻辑论文,是首个在这本著名刊物上发表论文的中国人,华罗庚则是第二个。华罗庚解决了俞大维的密码难题,使他认识到数学对国防也能有具体的贡献。
过了两个月,华罗庚于3月17日又给陈立夫写了第三封信,他从国防出发,直言数值计算的重要性:“盖就国防观点而言,数值计算、机器计算实为现代立国不可或缺之一项学问。而我国现尚无认识之因而研究者。而我大学之数学课程内容,大致仍抽象而忽视具体;数值计算往往为不了解者以‘容易’二字抹之。因之,毕业之学生,座谈几无一不知,实算则茫无一策。”
在这封信的附录中,华罗庚提到弹道、投弹、测向、统计、气象等都需要机器计算与数值计算。当时电子计算机尚未问世,计算数学也没有真正发展起来,华罗庚对数值计算的敏感和重视可以说是很有前瞻性。[4]
中华人民共和国成立后不久,1950年6月,政务院即批准成立中国科学院数学研究所筹备处,1952年正式建所,华罗庚为首任所长。他多方网罗人才,生气勃勃,工作进展神速,先成立数论组(华罗庚、越民义、王元、许孔时、吴方、魏道政)和微分方程组(吴新谋、秦元勋、王光寅、丁夏畦、邱佩璋),后成立代数组(华罗庚、万哲先)、拓扑组(吴文俊、张素诚、孙以丰)、泛函分析组(关肇直、田方增、冯康)、数理逻辑组(胡世华)、概率统计组(王寿仁)、力学组(庄逢甘、林鸿荪)、计算机研制组(闵乃大、吴几康、夏培肃)。
华罗庚在数学研究所全面工作方针的报告中,首次完整地指出了计算数学的任务:“计算数学是一门在中国被忽视了的科学,但它在整个科学中的地位是不可少的,它是为其他各部门需要冗长计算的科学尽服务功能的一门学问。……我们必须想尽方法来培养和发展它。我们希望在三五年内能有计算数学所需要配备的各种机器,能有善于操纵了解其结构的人才。”
1953年3月,中国科学院向苏联派出了由钱三强任团长,成员包括华罗庚、赵九章等人在内的26人访苏代表团,代表团的主要任务是考察学习苏联的科学发展。回国后,华罗庚完成《对苏联数学研究工作的认识》一文,其中详细介绍了苏联计算数学的发展。计算数学是苏联数学发展的生长点,这门学科的显著特点是不仅在理论上意义重大,对国家工业的发展也有很大的促进作用。1953年10月,在中国科学院召开的所长会议上,华罗庚认为发展计算数学已经十分迫切,他提出了成立一个研究小组,专门研究计算数学。
华罗庚对计算数学的深刻认识,尤其是中华人民共和国成立以后的执着,很可能源于他在美国普林斯顿大学的一段经历。1947年,华罗庚赴普林斯顿大学进修,当时普林斯顿高等研究院的冯·诺依曼是制造原子弹的顾问,前面提过他是大科学家。在对原子核反应过程的研究中,要对一个反应的传播做出“是”或“否”的回答。解决这一问题通常需要通过几十亿次的数学运算和逻辑指令,美国洛斯阿拉莫斯国家实验室为此聘用了100多名计算员,利用台式计算机从早计算到晚,还是远远不能满足需要。无穷无尽的数字和逻辑指令如同无垠的沙漠一样把人的智慧和精力吸尽。看到实际工作对计算的强烈需求,冯·诺依曼迅速决定投身到计算机研制者的行列。在计算机设计方面,他提出的计算器、逻辑控制装置、存储器、输入和输出五大部分,组成了现代计算机的主要框架;在数字计算方面,他提出的二进制思想、程序内存思想,奠定了当今数字运算的基本法则;在计算数学方面,他提出的稳定性理论、蒙特卡罗算法都是写入教科书的经典概念。
特别是,冯·诺依曼确实把计算数学应用到国防、航空等重要应用领域,让华罗庚深受触动。
再往前一点说,华罗庚对计算数学的重视,可能和维纳20世纪30年代访问清华大学有关。维纳不仅是控制论的开创者,而且在信息科学方面也是一个重要奠基人。维纳访问清华大学时,华罗庚刚刚出道,在交往过程中,维纳不仅对他很欣赏,而且在他出国留学等方面都给予了关键性的帮助。维纳对信息科学的巨大贡献,想必对华罗庚有一定的影响。1958年,中国科学技术大学应用数学和计算技术系成立,华罗庚担任首届系主任,在给中国科大学生讲微积分正题之前,总要专门讲授二进制计算、误差理论、拉格朗日插值公式、牛顿插值公式这些基础算法的构造原理。由此可见,他对计算机技术、计算数学的精髓“算法”都有深刻的认识。
1956年夏天,中国科学院计算技术研究所筹备委员会成立,华罗庚任主任。2006年纪念中国科学院计算技术研究所建所50周年时,曾担任计算所办公室主任的何绍宗回忆道:
计算技术研究所第三研究室(以下简称“三室”)的成立,标志着中国计算数学有了专门的研究机构。这个机构后来发展成为中国科学院计算中心,最后演变为今天的中国科学院计算数学与科学工程计算研究所。
机构有了,计划有了,找到将才就成为主要矛盾了。毕竟当时华罗庚的主要兴趣是在数论、复变函数等纯数学领域,他需要找到能挑起计算数学大梁的将才!
1957年初,一个年轻人被华罗庚由数学研究所调入计算技术研究所三室。他后来成了中国计算数学的领军人物,在计算数学的多个研究领域享誉全球,也影响了几代中国计算数学家。
他就是中国计算数学之父——冯康。
冯康的故事富有传奇色彩,包含了太多中国人的隐忍与坚强,也包含了太多中国文化的博大与精深。或许这就是冯康带给人们的复杂情感,以至于他原本成就于一个英雄辈出的年代,却没有被时代及时赋予英雄的光环。但历史不会忘记那个火红的年代,不会忘记那些应该被载入史册的英雄和他们精彩的故事。
注释:
[1]华罗庚.从祖冲之的圆周率谈起[M].北京:中国青年出版社,1962.
[2]汤涛.从圆周率计算浅谈计算数学[M].北京:高等教育出版社,2018.
[3]拉克斯2014年晚宴演讲:《冯·诺依曼:早期岁月、洛斯阿拉莫斯时光,以及计算之路》(John von Neumann: the Early Years, the Years at Los Alamos and the Road to Computing), http://www.ki-net.umd.edu/activities/tn60/2014_04_30_Lax_Banquet_talk.pdf.
[4]王涛.华罗庚与中国计算数学[J].数学文化,2016,7(2): 11-27.