luyuanhong 发表于 2023-3-8 07:54

作为一门学科的计算数学

作为一门学科的计算数学

作者 | 王涛

来源 | 摘选自《中国计算数学的初创》,科学出版社,2022.3(天元数学文化丛书)

在国外,计算数学(computational mathematics)一般被称为数值分析(numercial analysis),被纳入应用数学(applied mathematics)的范畴。但是在我国,计算数学被列为与应用数学并列的一个二级学科。根据我国 1997 年颁布的《授予博士、硕士学位和培养研究生的学科、专业目录》,数学为理学一级学科(0701),计算数学(070102)是与基础数学(070101)、概率论与数理统计(070103)、应用数学(070104)、运筹学与控制论(070105)并列的 5 个二级学科之一。根据 1998 年教育部颁布的《普通高等学校本科专业目录》,数学的本科专业有数学与应用数学(070101)以及信息与计算科学(070102)。由此可见,计算数学在我国的数学学科中占有重要位置。

第三种科学方法

计算数学是现代数学的一个重要分支,是研究应用电子计算机进行数值计算的数学方法及其理论的一门学科。计算数学主要研究具有广泛应用背景的微分方程、积分方程、优化问题、概率统计问题和其他各类数学问题的数值求解,提出有效的数值求解方法,研究这些方法的收敛性、误差估计等数学理论,设计实现这些方法的算法和计算程序,应用计算机进行数值实验,进而解决科学和工程中的实际问题。此外,数值代数、数值逼近、计算几何等也是计算数学的重要研究内容。

计算数学在中国之所以成为独立于应用数学的一门学科和专业,与计算数学在中国的发展历程有很大的关系,本书的写作或许能部分回答这个问题。因此,在中文的语境(context)下,有必要对计算数学与应用数学做一下区分。简单来说,计算数学主要对计算方法及其性质进行研究,而应用数学更侧重于将物理问题转化为数学模型并研究模型的数学理论,也就是所谓的数学建模(mathematical modeling)及分析。

随着社会的发展和科技的进步,科学和工程中提出的计算问题越来越多。而计算机科学与技术的突飞猛进,使得计算数学在更广泛的领域发展成为一门现代意义下的新学科——科学计算(scientific computing),即应用现代计算工具和方法进行科学研究或求解应用问题。科学计算是数学和计算机实现其在科学与工程领域应用的纽带和工具,其核心是高效的计算方法。据北京大学数学科学学院张平文院士的说法,我国的计算数学在 2010 年时正处于科学计算的阶段。

科学计算是一个完整的过程。首先,从具体的科学或工程问题出发,将要解决的问题转化为方程并表示出来。当这些方程太复杂时,可以忽略掉一些影响比较小的项。在很多情形中,这些方程是常微分方程、偏微分方程或者积分方程。这个阶段一般由对这些科学或工程问题非常熟悉的专家来完成,或者需要他们的帮助。然后,对这些方程进行数学理论上的分析,特别是对方程解的存在性与唯一性进行理论研究是极为必要的。

一般而言,这些方程的解是一些诸如时间、空间的函数,或依赖于压力和温度等参数的函数。然而在实际中,仅可以在离散的参数值下计算解。因此,连续的问题被转换成一个近似的离散问题,这就是离散化(discretization)的阶段。如果离散化后问题仍然很复杂,则必须再对它进行简化,例如将其线性化,通过数值分析来解决这个近似的问题。最后,将它变成一个可以在计算机上使用的高效算法,并检验计算结果的实际效果。

作为学术研究的重要手段,科学计算克服了理论分析与实验手段的局限。如传统设计飞机的办法是风洞试验、修改设计,如此反复进行,耗资非常巨大,而利用科学计算来进行数值模拟,既可以缩短周期也可以节省开发经费。在核武器研制方面,也可以利用科学计算来进行模拟实验。在一些其他应用方面,科学计算的作用已不可替代。

随着与计算相关的信息技术的飞速发展,科学计算的地位正在迅速上升。现在,科学计算已成为与理论、实验相并列的第三种科学方法。科学计算在工程领域有广泛应用,特别是在军事国防、航空航天、石油勘探、机械制造、水利建筑、交通运输、天气预报、经济规划等许多领域起着至关重要的作用,其发展水平已成为衡量国家综合实力的重要标志。

科学计算如今几乎影响到一切科技领域,很多学科都通过计算走向定量化和精确化,催生出计算力学、计算物理、计算天文学、计算气象学、计算化学、计算地质学、计算生物学等一系列新的学科分支。此外,科学计算在材料科学、生命科学、环境科学、能源科学、信息科学、医学与经济学中所起的作用也日益增大,正在形成更多的计算分支。这些基于科学计算而兴起的计算性交叉分支学科一起构成了计算科学(computational sciences),计算数学则是它们共同的纽带与基础。因此,计算数学可以说是计算科学的核心所在。

计算的历史概览

计算数学的核心是计算或者算法。算法是数学的重要组成部分,在数学的不同发展时期都有所体现。根据胡作玄的《近代数学史》,数学的发展大致可以分为以下几个时期:

● 前史时期(公元前 4 世纪之前)

● 古代及中世纪时期(公元前 4 世纪到 16 世纪末)

● 近代前期(17-18 世纪)

● 近代后期(19 世纪)

● 现代时期(20 世纪)

在数学的前史时期,人类在测量土地时自然遇到开平方等问题。例如据 YBC7289 的一块泥板显示,古巴比伦人在 60 进制的情形下,使用迭代算法对 √2 进行了开方近似计算,并达到了很高的精度,这显示出以古巴比伦为代表的前史文明对测量、计数与计算已经有了相当程度的掌握。因此算法的起源可以追溯到非常早的时期。

到了古代与中世纪时期,经过长时间的酝酿与发展之后,数学正式成为一门学科,其主要标志是对于一些几何(加上少量数论)问题有了较为系统的方法与理论,数的表示与计算方法也得以建立。前者以古希腊数学为代表,《几何原本》(Elements)标志着数学中演绎推理范式的确立。古希腊数学在具体的计算上不甚有效,却也诞生了阿基米德(Archimedes of Syracuse,287BC-212BC)这样在理论与计算上都卓有成就的数学家。

在数的表示与计算方法方面,东方特别是中华文明有特别突出的贡献。中国古代数学有着悠久的计算传统和辉煌的算法成就,笔者将在 1.2.1 节简要论述。印度、阿拉伯数学对计算与算法也有深入的研究。一个有趣的故事是,阿拉伯数学家花拉子米(Al-Khwarizmi,约 780—850)的《算法》传入欧洲后,该书的作者“花拉子米”被译成了拉丁语 Algoritmi,现代术语“算法”(algorithms)即来源于此,《算法》也因此而得名。特别值得一提的是,阿拉伯数学在数值计算的精度上达到了很高的造诣。

中世纪后期,通过与地中海、中东地区的贸易和交流,欧洲学者了解到由阿拉伯世界保存的古希腊数学,以及阿拉伯、印度地区(可能还包括中国)创造的数学。经过雷格蒙塔努斯(J.Regiomontanus,1436-1476)、雷蒂库斯(G.J.Rheticus,1514—1576)和韦达(F.Vieta,1540-1603)等人的改进,欧洲的三角函数值计算越来越便捷,其精度也越来越高。16世纪初,纳皮尔(J.Napier,1550—1617)与比尔吉(J.Bürgi,1552-1632)又独立地发明了对数方法,极大地改进了人类的计算技术。


图 1 牛顿与高斯对计算方法有重大贡献(图片来源:维基百科)

随着解析几何与微积分的发明,近代数学开始形成和发展。如果将计算数学定义为对连续数学中问题的算法研究,那么牛顿(I. Newton,1642—1727)、欧拉(L. Euler,1707-1783)、拉格朗日(J. Lagrange,1736-1813)、拉普拉斯(P. Laplace,1749—1827)、勒让德(A. M.Legendre,1752-1833)、高斯(C.F.Ganss,1777-1855)、柯西(A.L.Canchy,1789—1857)、雅可比(J.Jacobi,1804—1851)等人在解决实际问题时开展的对计算方法的研究,都可以看作是对计算数学的开拓。这些内容构成了今天计算数学的入门课程。

在近代前期,用数学来解决实际问题一直吸引着顶尖数学家的注意,这点在牛顿与高斯身上体现得淋漓尽致。为了找到经过一些给定点的多项式的曲线,牛顿引进了均差(divided difference)的概念,并将其应用于经过观察到的位置的彗星轨道计算。此外,牛顿还发明了牛顿迭代法。为了研究天文学,高斯发明了最小二乘法(least squares method),并发现了快速傅里叶变换(fast Fourier transform)。此外,高斯对线性方程组、数值积分也有贡献。

社会的需求始终是算法发展的强大动力。例如,求解线性方程组的高斯-若尔当消去法(Gauss-Jordan elimination method)来源于大地测量学。求解线性方程组和矩阵特征值问题的雅可比方法(Jacobi method)、求解常微分方程的亚当斯方法(Adams method)来源于天体力学。常微分方程中的龙格-库塔法(Runge-Kutta method)、偏微分方程中的瑞利-里茨法(Rayleigh-Ritz method)分别有着空气动力学、声学和弹性力学中的振动的实际背景。17—19 世纪数学家对计算方法的开拓可见表 1 。



在近代后期,纯粹数学开始兴起并逐渐与应用数学分离,迅速占据了数学的主流位置。受限于社会生产规模和计算工具等外部条件,数值分析处于相对次要的位置。到了 20 世纪,纯粹数学在集合论的基础上,诞生了结构数学并取得了辉煌的发展)。与此同时,数值分析也取得了一定程度的进展,一些重要的算法如有限差分法(finite difference method)被相继发现。

20 世纪初,数值分析的研究逐渐活跃,在机构设置方面也取得了初步的进展。陆续有一些国家在大学或研究所开始设置应用数学的教授席位,开设与数值分析相关的课程,主要是德国、英国与意大利。

德国 1904 年,在 F. 克莱因(F.Klein,1849-1925)的劝说与坚持下,以发现龙格-库塔法著称的龙格(C.Runge,1856-1927)被哥廷根大学聘为德国的首位应用数学教授。实际上,龙格在 1883 年的任教资格论文(Habilitation)即是关于代数方程的数值求解。维勒斯(F.A.Willers,1883-1959)于 1906 年在龙格的指导下获得博士学位,从 20 世纪 20 年代开始,他先后在弗莱贝格工业大学与德累斯顿工业大学任教,开设了数值分析类的课程。

瓦尔特(A.O. Walther,1898-1967)1922 年博士毕业于哥廷根大学,之后担任库朗的助手。1928 年,库朗使用有限差分方法建立了椭圆方程与双曲方程初值问题解的存在性(CFL 论文)。就在同一年,瓦尔特成为达姆施塔特工业大学的教授,创建应用数学研究所并担任所长。瓦尔特致力于数学面向工程的实际应用,他是德国机械计算技术的先驱之一。

米泽斯(R.Mises,1883-1953)在 1909 年被聘为斯特拉斯堡大学的教授。1919 年,米泽斯被聘为柏林大学新成立的应用数学研究所的教授和所长。米泽斯开设了涵盖天文、大地测量和技术的应用数学课程,在他的领导下,柏林大学迅速成为德国应用数学的中心。纳粹上台后米泽斯离开德国到美国。考拉兹(L.Collatz,1910—1990) 在柏林大学求学时曾听过米泽斯的课并被吸引,他于 1937—1938 年在卡尔斯鲁厄理工学院开设了数值方法的课程。

英国 惠塔克(E.T.Whittaker,1873-1956)最早在英国讲授数值分析。1913 年,惠塔克在爱丁堡大学创建了计算实验室,并开始系统讲授数值分析的多个课程。他与加拿大数学家罗宾逊(G.Robinson,1906-1992)在 1924 年出版的《实测计算》(The Calculus of Observations),长期以来是数值分析领域的一门主要教材,面向对象主要是科学家与工程师,内容包括插值公式、行列式与线性方程组、代数方程与超越方程的数值解、数值积分与求和、正态分布、最小二乘法、傅里叶分析、数据平滑、微分方程的数值解。

爱丁堡数值分析的另一个中心人物是艾特肯(A.C.Aitken,1895-1967),他于 1923 年来到爱丁堡大学跟随惠塔克攻读博士,毕业后留在爱丁堡并在 1946 年接替了惠塔克的位置。20 世纪 20—30 年代,艾特肯开设过数值积分、数学实验等课程。此外值得一提的还有科姆里(L.J. Comrie,1893-1950),他在美国工作时曾开设过计算课程,返回英国后特别强调了机器在数值分析中的作用。

意大利 卡西尼斯(G.Cassinis,1885-1964)于 1925 年在比萨工程学院开设数值分析课程,1928 年出版《数值图形和机械计算》(Calcoli Numerici Grafici Meccanici)。皮科内(M. Picone,1885-1977)于 1927 年在那不勒斯组建了世界上第一个专门从事数值研究的国家应用计算研究所(Istituto Nazionale per le Applicazioni del Calcolo,INAC),1932年皮科内到罗马大学任教,开设了数值分析的课程,INAC也随他一起转到罗马。INAC 聘用、培养了一大批热衷于应用数学的优秀年轻学者,很多人后来变得非常知名。

美国 美国在 20 世纪初致力于引入和发展纯粹数学,开设的数值分析课程较少。科姆里 1925 年之前在美国斯沃斯莫尔学院(Swarthmore College)和西北大学任教,他将计算引入标准学位课程。同期,斯卡伯勒(J.B.Scarborough)在海军学院开设了工程数学的课程。与其他国家的情况类似,这两门课程主要也是面向工程人员。

尽管这些国家的大学开设了相关课程,但计算数学仍然不是数学的一门正式学科。显然,上述数学家(科学家、工程师)开设的课程大都是面向科学、工程、统计与精算人员。但是,社会尤其是战争对计算数学的促进作用已经非常明显。德国、意大利作为第一次世界大战的主要参战国,较早地意识到数值分析的重要性。维勒斯、库朗、瓦尔特、皮科内都曾在战争中服役,皮科内的主要任务是计算高山的枪炮火力表,以至于皮科内曾戏称“应用数学 = 法西斯数学(Matematica Applicata = Matematica Fascista)”)。

第二次世界大战(以下简称二战)的爆发极大地促进了计算数学的发展,战争规模的迅速扩大提出了海量的计算问题。为了应对这一情形,美国洛斯·阿拉莫斯国家实验室(Los Alamos National Laboratory),特别是美国国家标准局(National Bureau of Standards)开始从事数值分析的研究。这一时期及稍早,包括米泽斯、库朗、赛戈(G.Szego,1895-1985)、冯·诺依曼(J.von Neumanm,1903—1957)、乌拉姆(S.M.Ulam,1909—1984)在内的大批欧洲数学家移居到美国,对美国应用数学的发展和提高起了巨大的作用。

特别值得一提的是库朗,他于 1943 年发表了《解决平衡和振动问题的变分方法》(Variational methods for the solution of problems of equilibrium andvibrations),包含了后来发展的有限元方法的主要思想。1946 年,乌拉姆与冯·诺依曼提出了统计模拟的蒙特卡罗方法(Monte Carlo method)。

人类计算技术的进步与计算工具密切相关,从算筹、算盘、计算尺一直发展到机械计算机、电动计算机。为了解决战争中火力表的计算问题,1946 年,世界上第一台电子计算机 ENIAC(Electronic Numerical Integrator and Calculator,电子数值积分计算器)问世。电子计算机的发明使得计算工具有了本质的提升,为计算数学的诞生奠定了基础。


图 2 冯·诺依曼与图灵是现代计算数学的奠基人(图片来源:维基百科)

1947 年,冯·诺依曼与戈尔德施泰因(H.H.Goldstein,1913-2004)发表了《高阶矩阵的数值求逆》(Numerical inverting of matrices of high order),他们详细讨论了舍入误差和条件数的概念。1948年,英国数学家图灵(A.Turing,1912—1954)发表了《矩阵计算中的舍入误差》(Rounding-off errors in matrixprocesses)。这些研究使得数学家们对数值分析的兴趣得到了广泛的恢复,标志着现代计算数学的开端。

鉴于计算数学的重要性,一些国家开始重点发展计算数学,这里笔者简要论述二战结束后初期美国、法国和苏联计算数学的发展。

美国二战结束后,数值分析的教学与研究开始逐渐由大学承担。1945-1946 年,孔兹(K.S.Kunz)在哈佛大学开设了数值分析课程,并在 1957 年出版了《数值分析》(Numerical Analysis)。米尔恩(W.E.Milne,1890-1971)于 1949 年在俄勒冈州立学院开设了类似的课程,布朗大学与纽约大学也开设过“实用数学”(practical mathematics)的课程。1947 年,美国国家标准局在加利福尼亚大学洛杉矶分校建立了数值分析研究所。1952 年,致力于数值分析的美国工业与应用数学学会(Society for Industrial and Applied Mathematics,SIAM)成立。

法国孔茨曼(J.Kuntzmann,1912—1992)于 1947 年在格勒诺布尔综合理工学院开设了“应用分析”(Mathématiques Appliquées)课程,主要内容包含有限差分法、微分方程、函数零点、线性方程组等,这是法国大学第一次开设此类课程,格勒诺布尔也因此成为当时法国唯一的数值分析中心。1950年,孔茨曼油印出版了《应用分析教程》(Cours d'Analyse Appliquée),拉博德(J. Laborde,1912-1997)则负责具体的上机计算。1951 年,孔茨曼创建了计算实验室,使得格勒诺布尔成为法国的计算中心。

苏联1948 年,康托洛维奇(L. V.Kantorovich,1912-1986)在列宁格勒大学开设了数值分析课程,主要思想是将泛函分析应用到数值分析中。同年,莫斯科大学力学研究中心成立了数值分析部门。1951 年,克雷洛夫(V.I.Krylov,1902—1994)被任命为列宁格勒大学的计算数学教授。20 世纪 50 年代初,索伯列夫(S.L.Sobolev,1908-1989)开始从事计算数学的研究。1952 年,他在莫斯科大学组建了苏联的第一个计算数学教研室。

随着诸如单纯形法(simplex algorithm)、克雷洛夫子空间迭代法(Krylovsubspace method)、矩阵计算分解方法(matrix decomposition approach)、有限元方法(finite element method)等强有力算法的发现,以及 20 世纪 50-60 年代计算数学在奥地利、荷兰、匈牙利、瑞士、芬兰、捷克、中国、瑞典、巴西、比利时、保加利亚、丹麦、挪威、波兰、日本等国家相继发展起来,计算数学终于成为现代数学的一个正式学科。



《中国计算数学的初创》

作者:王涛

出版社:科学出版社

出版时间:2022-03
页: [1]
查看完整版本: 作为一门学科的计算数学