序 “清华大学计算机系列教材”已经出版发行了三十余种,包括计算机科学与技术专业的基础数学、专业技术基础和专业等课程的教材,覆盖计算机科学与技术专业本科生和研究生的主要教学内容。这是一批至今发行数量很大并赢得广大读者赞誉的书籍,是近年来出版的大学计算机专业教材中影响比较大的一批精品。 本系列教材的作者都是我熟悉的教授与同事,他们长期在第一线担任相关课程的教学工作,是一批很受本科生和研究生欢迎的任课教师。编写高质量的计算机专业本科生(和研究生)教材,不仅需要作者具备丰富的教学经验和科研实践,还需要对相关领域科技发展前沿的正确把握和了解。正因为本系列教材的作者具备了这些条件,才有了这批高质量优秀教材的产生。可以说,教材是他们长期辛勤工作的结晶。本系列教材出版发行以来,从其发行的数量、读者的反映、已经获得的国家级与省部级的奖励,以及在各个高等院校教学中所发挥的作用上,都可以看出本系列教材所产生的社会影响与效益。 计算机学科发展异常迅速,内容更新很快。作为教材,一方面要反映本领域基础性、普遍性的知识,保持内容的相对稳定性;另一方面又需要紧跟科技的发展,及时调整和更新内容。本系列教材都能按照自身的需要及时地做到这一点。如王爱英教授等编著的《计算机组成与结构》、戴梅萼教授等编著的《微型计算机技术及应用》都已经出版了4版,严蔚敏教授的《数据结构》也出版了3版,使教材既保持了稳定性,又达到了先进性的要求。 本系列教材内容丰富,体系结构严谨,概念清晰,易学易懂,符合学生的认知规律,适合教学与自学,深受广大读者的欢迎。系列教材中多数都配有丰富的习题集、习题解答、上机及实验指导和电子教案,便于学生理论联系实际地学习相关课程。 随着我国进一步的开放,我们需要扩大国际交流,加强学习国外的先进经验。在大学教材建设上,我们也应该注意学习和引进国外的先进教材。但是,“清华大学计算机系列教材”的出版发行实践以及它所取得的效果告诉我们,在当前形势下,编写符合国情的具有自主版权的高质量教材仍具有重大意义和价值。它与国外原版教材不仅不矛盾,而且是相辅相成的。本系列教材的出版还表明,针对某一学科培养的要求,在教育部等上级部门的指导下,有计划地组织任课教师编写系列教材,还能促进对该学科科学、合理的教学体系和内容的研究。 我希望今后有更多、更好的我国优秀教材出版。 清华大学计算机系教授,中国科学院院士 数值分析与算法(第3版)第3版前言第3版前言   “数值分析”或“计算方法”是理工科大学各专业普遍开设的一门课程,其内容主要包括有关数值计算(numerical computing)的理论与方法。数值计算是计算数学、计算机科学与其他工程学科相结合的产物,随着计算技术的发展与普及,它正变得越来越重要。尤其是人工智能和机器学习正得到蓬勃发展与应用,作为它们基础的数值计算方法也受到更广泛的重视,其重要性不言而喻。   本书的主要内容与一般的“数值分析”教材基本一致,但还具有如下特点: (1) 对数学理论的介绍简明扼要。尽量用形象的方式解释数学中的一些概念与理论,通过定理总结重要的结论。在不失严谨性的前提下,省略部分定理的证明,取而代之的是直观的解释、验证,并说明其意义与用途。 (2) 强调算法的实际应用与分析比较。对大多数算法,采用程序伪码的形式加以描述,同时分析其计算复杂度。说明算法应用中的细节问题,对几个较新的算法还给出了MATLAB源程序。通过“应用实例”和相关MATLAB命令,更详细地介绍算法的应用。 (3) 具有较强的可读性与实用性。尽量用图、表等形象的方式对概念、现象进行解释。每章都编写了“算法背后的历史”子栏目,以增强阅读的趣味性。书末附有算法、术语索引,便于查阅。为了便于读者动手实践,对MATLAB和Python软件的相关功能进行了简单介绍。 (4) 在内容编排上有利于教学。依据教学规律安排各章的顺序;每章的“评述”部分列出了主要知识点,除练习题外,还提供了上机实验题,附录中给出了部分习题的答案。   学习数值分析与算法,应重视通过计算机编程加深理解相关理论与算法。本书提倡使用MATLAB或Python语言进行编程实验,基于如下理由:①它们较易于学习、代码简洁,可节省编程实验时间。②MATLAB还具有功能强大的科学计算集成环境,便于程序调试和形象直观地展示程序运行结果。③它们包含丰富、先进的数值计算功能,已被广泛用于科学与工程实践。学习MATLAB与Python中使用的技术可作为课程学习的扩展与提高。   本书第1版于2012年年初出版、第2版于2015年年底出版,已作为“数值分析”课的教材使用多年,收到了较满意的效果。但通过教学实践也发现了书中的一些问题与错误,有必要进行更正与修订。本书第3版在保持全书结构不变的前提下对前7章做了全面细致的修订,主要修改的部分包括部分定理的表述和证明、数值计算网络资源信息的更新、增加与修订了一些插图、对一些扩展知识给出了更多的说明、删除了少量不实用的内容、增加了一节专门介绍矩阵的奇异值分解、增加了一个附录介绍Python中数值计算的功能。总之,在保持全书篇幅基本不变的情况下,对内容进行了增删,力求涵盖当下最重要的数值计算内容,并呈现出更高的品质和阅读体验。   本书体现了作者十多年来的相关教学和科研积累,参考、借鉴了十余种较新的国内外优秀教材,力争在理论与实践相结合、反映学科发展前沿,以及适应时代发展对学生培养的新要求等方面取得好的效果。本书内容由误差分析、非线性方程求根、数值线性代数、函数插值、数值积分、常微分方程数值解法等部分组成,包括数值计算领域中经典、应用较广泛的内容,也为学习最优化方法、大数据分析、机器学习等新兴领域中的一些高级算法提供了基础。使用本教材时,可用48学时讲授主要内容,几乎每章都包含一些简介性质或与MATLAB软件有关的内容,供感兴趣的学生选学或课后阅读。   下图显示了各章主要内容的知识依赖关系。总体上,建议教师按照从第1~8章的顺序开展教学,只是第2.7节依赖于线性方程组的有关知识,需在第3章讲完后介绍。 白如冰、朱臻垚参加了本书第1版部分内容的编写,刘志强参加了本书第3版部分内容的编写,选修作者讲授的“数值分析”课的同学指出了第1版、第2版中的很多错误,提供了积极反馈,在此致以诚挚的谢意!此外,还要感谢清华大学王泽毅、殷人昆、边计年、蔡懿慈等教授给予的指导与帮助,以及清华大学出版社的编辑在出版本书过程中付出的辛勤劳动。   据不完全统计,本书已被40多所大学选作教材,使用的专业包括计算机专业、软件工程专业、电子信息专业、自动化专业等。在此,作者对广大读者的支持表示诚挚的感谢!也希望广大读者提出宝贵的意见与建议。 喻文健2019年9月