人们常说,出书源自一种使命感,一种分享知识、经验和思想的愿望,一种对美的热爱.本书的出版却是源自一种挫折感.
近10年,在剑桥以及其他地方,我一直从事数学专业学生的微分方程数值分析的教学.回顾这一漫长的实践过程,总结其间的经验教训,我得出了两条结论,它们均对本书的选材及表述方式发挥了指导性的作用.
**条,数学家不同于其他领域的专家.你可能会发现,人们学习数值分析有各种各样的原因.自然科学家和工程师把它当做一种手段、一个工具,用以探究那些真正使他们感兴趣的东西.所以很自然,他们既不愿意花费时间,也不愿花费脑力去做精致的数学分析,而是喜欢你将数值方法像食谱一样列出来,再加上些直觉的、浅显的解释.计算机科学家的态度则不同,他们更看重算法,致力于研究漂亮的算法及其与计算机构造的联系,类似微分方程这样的数学构造一旦情况允许(甚至更快)即被弃置一边,代之以离散化的模型,然后用组合技术来研究.数学家则遵循另一种推理模式.通常学数学的学生在本科阶段*后一年或研究生阶段**年参加一门高等数值分析课的学习.到那时候,他们所学的大部分内容都遵循着一个数学中熟知的形式推理模式: 公理定理证明推论……而数值分析通常很难套用这一模式,这是许多学数学的学生觉得数值分析缺乏魅力的深层原因.
所以,给数学系学生讲数值分析往往令人感到两难: 如果完全上成数学理论的课程,会使学生感到智力上的愉悦,但应用方面就会欠缺; 如果大量��以应用方向的介绍,又很可能让学生本末倒置,晕头转向.要解决这个问题并不很难,我们只需以诚实的数学态度来表述材料,偶尔转向应用问题和算法,但永不失诚实和严密.如果一个证明要用到许多讨论范围之外的材料,完全可以略去这个证明.我们甚至可以用表面上的正确性连同实际应用中的好的运行记录来说明一个数值方法的可行性,但表面上的正确性,好的运行记录,直觉和浅显的说明并非诚实的数学论证,而且也永远不应当称做数学论证.
第二条,在数值分析这门课中,学生们应当既学常微分方程,又学偏微分方程,还有处理大规模稀疏代数方程组的方法.由于众多数学课程的压力,使得仅有少数本科生有可能参加多于一门的高等数值分析课的学习.而更多的人很可能在其未来的职业生涯中要用到微分方程数值解法.所以,如果将课程内容**于某一主题,比如常微分方程或有限元,虽然内容紧凑,**明确,从长远来看却不是一个有益的方法.
再重复一下,面向数学系学生的理想的微分方程数值分析课,应当具备数学的诚实和严密,并教给听众广博的技能,既包括常微分方程方面的内容,也包括偏微分方程方面的内容.过去10年,我一直热切地想要找到一本关于这门课程的令人满意的教材,但没有找到.关于其特定的专题,比如常微分方程数值解法、有限元、稀疏代数方程组的计算,都有许多好的教科书,也有几本书涉及到各个专题,但遗憾的是,它们都相对缺乏数学的精致和严密.就我所知,还没有哪本书能做到准确地为自己定位,并达到相应的成熟程度.我因而感到失望,这也是促成我写这本书的主要原因.
我们或许应当在此简要回顾一下本书的主要特点.
★我们选材的覆盖面很广: 用多步法和龙格—库塔法求常微分方程数值解; 泊松方程的有限差分法及有限元法; 泊松方程求解时出现的大型稀疏代数方程组的各种求解算法; *后,抛物型和双曲型微分方程的方法及分析技巧.或许这本书可作为一本一年制快速课程的教材,也有可能很多教师只想讲其中一部分内容,为了帮助他们(以及他们的学生)在数值“地雷阵”中顺利前进,在本前言的后面附有一张流程图,表明本书各部分的“链接”.沿中线以阴影标识的部分是核心内容: 讲这门课而忽略这些主题,那是说不过去的(当然,在每章内部适当地拣选内容是合理的!).无阴影标识的框是选修内容——这些主题的取舍依个人的选择而定.它们均包含有价值的材料,但就其整体而言,或许超出了高等本科教材的覆盖能力和范畴.
★这是一本面向数学系学生的教材,也就是说,它不以计算机科学家、工程师或自然科学家为对象.如前所述,不同的学生群体关心不同的事情,有不同的思维模式和吸收知识的方式.所以,一本教材若想取悦所有读者,则可能令所有读者都失望.尽管如此,那些需要数值方面知识的非数学工作者仍可以从本书中受益,但应当指出,他们或许应当在他们职业生涯中稍微晚些时候再去钻研这些,也就是当他们具备了适当的动机和背景知识的时候.
关于本书的一个更为基本的限制就是它是一本教材,而不是学术论文或技巧集锦.特别需要强调,我们的使命不是让人欣赏艺术展览,或关注*新进展,同样,我们也无意提供能对付任何问题和情况的**方法.
★许多数学教材都有个恼人的毛病,解任何一个问题时都要不必要地罗列一大串方法和算法.因而不止有1个龙格—库塔法,而是20个!可怜的读者们面对着一大堆武器,却往往没有任何线索告诉他们应当选用其中的哪一个,以及为什么用它.本书中我们采取另一种方式: 我们从支持算法的原理中推导出算法,这些原理是我们论证的**,而不是算法本身.一旦这些原理被提炼出来,算法就成为数值分析中*容易的部分,像烟花般骤然盛开——真正的脑力挑战在于数学的分析.
这并不是说软件的问题不重要或其体系的学术性相对较弱.我们在第5章中对这些问题予以关注,并且我必须赶快强调一下,好的软件设计同定理的证明一样具有挑战性.事实上,对计算数学中分析方面的了解有助于正确鉴识软件及应用中的困难.
★数值分析的一个真正激动人心的特点,在于它广泛运用多门数学学科的知识.如果你以为数值分析是逃避数学,是因为喜欢研究某些更“软”些的东西而借它来取代研究数学,那你注定会大吃一惊.数值分析可能是*广泛应用多种数学理论的学科,从基本的线性代数和微积分,直到泛函分析、微分拓扑、图论、解析函数理论、非线性动力系统、数论、凸理论——这个单子可一直列下去.几乎所有的现代数学理论都对数值分析研究给予启发和帮助.因而,研究数值分析的人必须思维开放,随时准备借用其他各种技巧——它可不是给闭门造车的人预备的!
本书中我们着重讨论那些启发和丰富数值分析研究的各种数学理论.这不像乍听起来那么简单,因为来自不同大学的学生有不同的纯数学知识,这一点我们不得不考虑.换言之,我们常常需要加以阐明,请那些数学基础知识雄厚的读者予以谅解——你们所需做的只是略过几页……
★回忆一个数学概念和理解一个数学概念之间有很大的差别.在读数学文章时我经常碰到一些概念,很熟悉而且我过去肯定碰到过.然而,要考我背出其准确定义,我恐怕要考不及格.这种时候恰当的、正统的做法应当是暂时停下来,走到附近的数学图书馆查一下有关资料.坦白地讲,虽然我有时确实这么做,但更多时候,我只是继续读下去.我有充分的理由相信不只我一个人这么做.
本书中我增加了一个名为“相关数学知识约略导读”的附录,尝试多少弥补上述情况带来的不便.该附录粗略地介绍了一些数学学科中的重要定义和定理——包括线性代数、初等泛函分析和逼近理论——学生们以前应当已接触过这些内容,但很可能已被遗忘.这样做的目的既不是要取代那些初等的数学课程,也不是提供数学补遗.如果你过于频繁地翻到书尾去查找某个定义,那么,我的朋友,也许你*好还是停下来去专心地学习一下相关的学科,使用一本合适的教材.相类似,如果你总是遵循正统的做法,每有一点疑问就去查阅有关资料,请恕我劝你别那样循规蹈矩.
★写数学文章的一个规矩是要指明援引资料的作者和出处.这不仅仅是为了满足原作者的虚荣心,也是为了将文章记录传载下去,并使有兴趣的读者有机会查阅更进一步的资料.谈到这儿,我不禁怀疑起那些在教材中连篇累牍到处标记引文出处的做法.其导致的情形可以想见,读到一句“……假定x∈U,其中U是一个叶层器具[37]”,读者就会去查阅一下参考文献,找到“[37]”代表J。Bloggs发表于Pro。SDW的一篇论文,然后认出“Pro。SDW”代表“可微器具协会会议记录”,然后走到图书馆,找到这本杂志的位置(它还真在书架上,而不是租出去了,或放错了地方,或被偷了……).如果是高深的数学学术论文,这样做并不为过.但如果是本教材,这样做就没什么意义了.所以我所采取的做法是在正文中不标出处,而在每章后面专设一节叫做“注释与参考文献”,在其中简要列出可能会对学生(和教师)有所帮助的更进一步的文献.
这些小节还有一个重要的作用.可能会有一些学生(也许我太乐观了?)对该章内容感兴趣,受到启发而有意深入钻研,为此,在每一节“注释与参考文献”之中我都简要地介绍了相关领域的进一步发展、算法、分析的方法及其与其他数学分科的联系.
★表述的清晰与否常取决于所用的符号是否明了,因而,在全书中我们做如下约定:
白体小写斜体字母(a,b,c,α,β,γ,…)代表标量;
黑体小写斜体字母(a,b,c,α,β,γ,…)代表向量;
白体大写字母(A,B,C,…)代表算子.
像i=-1和自然对数基底e这样的数学常数以罗马字体标记,而不用斜体字母,这遵从了英国的排字习惯, 并有助于区分一个数学公式中的不同元素.
如同所有原则均有例外一样,我们的符号约定也有其例外情况.比如,在3。1节,我们按以往的习惯,用Pn和Tn分别代表勒让德多项式和切比雪夫多项式: 任何其他表示方法都会招致混淆.此外,亦如所有其他原则一样,意义不明,含混不清之处大量存在.我曾尽力引导读者调动其常识性的感觉来感知和理解这些说不清的地方. 但不用说,这样的理解具有相当的主观性.
本书源自两套简缩的讲稿: 一套是面向第二组学生(剑桥数学本科阶段*后一年)的; 另一套是面向第三组学生(剑桥**数学课程班)的.可是,将讲稿扩充为一整本教科书的工作可不像做杯热汤那样简单,不是浓汁加水搅搅再煮煮就完事大吉.写这本书共花了我大半年时间,与此同时,还要进行其他日常的学术研究工作.手稿的大部分写于1994年秋天,那时我正在加州理工学院(Caltech)休假,我很愿意在此感谢那里的许多好朋友的热情款待,帕萨迪纳的工作环境也非常之棒.
一条熟知的计算机谚语说,九成的编程工作需九成的时间,剩下一成的编程工作仍需九成时间……编写教材遵循类似的规律,回到剑桥我花了几个月的时间把手稿读了又读.在此,要感谢众多的朋友和同事,他们给予我非常重要的帮助: Brad Baxter(**学院,伦敦), Martin Buhmann (瑞士理工学院,苏黎世), YuChung Chang (加州理工学院), Stephen Cowley (剑桥), George Goodsell(剑桥), Mike Holst (加州理工学院), Herb Keller (加州理工学院), Yorke Liu (剑桥), Michelle Schatzman (里昂),Andrew Stuart (斯坦福), StefanVandewalle (卢文)和Antonella Zanna (剑桥).他们中有些人读了手稿并提出了意见.有些人提供了计算实例.有些人以此书稿为教材在其学生中进行教学实验,并听取学生的反馈意见.有些人提供了宝贵的见解,使我免于犯令人尴尬的错误.他们所有人都帮助我、鼓励我,而且对我的缺点和个性宽容之至.尽管我诚心诚意尽了*大努力,书中一定还留有大大小小的错误、打印错误和不当之处.对此,他们均不负任何责任.
也许应当在此再感谢另外两位 “朋友” ,他们使写书的过程大大简化: Tex排版系统和 Matlab软件包.当今我们对数学排版系统习以为常,而常常忘了仅仅十年前数学文稿还是手写的,然后再一遍遍打印,*终由出版社排版,每一道程序中都要进行艰难的校对.再说说 Matlab,它是惟一能让我们将办公室变成一个计算、绘图实验室的工具,使我们能从计算机屏幕弹射出新的想法,使我们能够制造出富含信息的图形和动画.自从咖啡被发现以来,还没有哪样非生物体给这么多的数学家带来这么大的快乐!
剑桥出版社的编辑人员,特别是Alan Harvey, David Tranah 和 Roger Astley,给予我们的帮助、友善和精诚合作,已远远超出了他们所应承担的义务.文字编辑Susan Parkinson 作出了*高水平的工作,她的专业素养、勤奋和高雅的品位化解了众多的错误,弥补了我的不足,奇迹般地为读者铺平了阅读之路.很高兴有机会在此向他们所有人致谢!
*后,但绝不失半点诚意和敬意,要感谢我的妻子和*好的朋友——Dganit。 她的鼓励、建议和支持无法以数字来计量,谢谢您!
我想把这本书献给我的父母,Gisella和Israel。他们不是数学家,然而我从他们身上学到了那些促使我成为数学家的东西: 对学术的热爱和对美与艺术的崇拜.