本书是针对“数值分析”“计算方法”“数值分析与算法”等课程编写的教材,主要面向理工科大学信息 科学与技术各专业,以及信息与计算科学专业的本科生。本书内容包括数值计算基础、非线性方程的数值 解法、线性方程组的直接解法与迭代解法、矩阵特征值与特征向量的计算、数值逼近与插值、数值积分方 法、常微分方程初值问题的解法,以及数值算法与应用的知识。本书涵盖数值分析、矩阵计算领域最基本、 最常用的一些知识与方法,而且在算法及应用方面增加了一些较新的内容。在叙述上既注重理论的严谨 性,又强调方法的应用背景、算法设计,以及不同方法的对比。为了增加实用性与可扩展性,每章都配备了 应用实例、算法背后的历史、评述等子栏目,书末附有算法、术语索引。附录中包括 MATLAB软件和 Py t hon软件的简介,便于读者快速掌握并进行编程实验。
本书适合作为高年级本科生或研究生的教材,也可供从事科学与工程计算的科研人员参考。
“数值分析”或“计算方法”是理工科大学各专业普遍开设的一门课程,其内容主要包括有关数值计算(numerical computing)的理论与方法。数值计算是计算数学、计算机科学与其他工程学科相结合的产物,随着计算技术的发展与普及,它正变得越来越重要。尤其是人工智能和机器学习正得到蓬勃发展与应用,作为它们基础的数值计算方法也受到更广泛的重视,其重要性不言而喻。
本书的主要内容与一般的“数值分析”教材基本一致,但还具有如下特点:
(1)对数学理论的介绍简明扼要。尽量用形象的方式解释数学中的一些概念与理论,通过定理总结重要的结论。在不失严谨性的前提下,省略部分定理的证明,取而代之的是直观的解释、验证,并说明其意义与用途。
(2)强调算法的实际应用与分析比较。对大多数算法,采用程序伪码的形式加以描述,同时分析其计算复杂度。说明算法应用中的细节问题,对几个较新的算法还给出了MATLAB源程序。通过“应用实例”和相关MATLAB命令,更详细地介绍算法的应用。
(3)具有较强的可读性与实用性。尽量用图、表等形象的方式对概念、现象进行解释。每章都编写了“算法背后的历史”子栏目,以增强阅读的趣味性。书末附有算法,术语索引,便于查阅。为了便于读者动手实践,对MATLAB和Python软件的相关功能进行了简单介绍。
(4)在内容编排上有利于教学。依据教学规律安排各章的顺序;每章的“评述”部分列出了主要知识点,除练习题外,还提供了上机实验题,附录中给出了部分习题的答案。
学习数值分析与算法,应重视通过计算机编程加深理解相关理论与算法。本书提倡使用MATLAB或Python语言进行编程实验,基于如下理由:①它们较易于学习、代码简洁,可节省编程实验时间。②MATLAB还具有功能强大的科学计算集成环境,便于程序调试和形象直观地展示程序运行结果。③它们包含丰富、先进的数值计算功能,已被广泛用于科学与工程实践。学习MATLAB与Python中使用的技术可作为课程学习的扩展与提高。
本书第1版于2012年年初出版、第2版于2015年年底出版,已作为“数值分析”课的教材使用多年,收到了较满意的效果。但通过教学实践也发现了书中的一些问题与错误,有必要进行更正与修订。本书第3版在保持全书结构不变的前提下对前7章做了全面细致的修订,主要修改的部分包括部分定理的表述和证明、数值计算网络资源信息的更新、增加与修订了一些插图、对~些扩展知识给出了更多的说明、删除了少量不实用的内容、增加了一节专门介绍矩阵的奇异值分解、增加了一个附录介绍Python中数值计算的功能。总之,在保持全书篇幅基本不变的情况下,对内容进行了增删,力求涵盖当下最重要的数值计算内容,并呈现出更高的品质和阅读体验。
喻文健,清华大学计算机系长聘副教授、博士生导师,国家优青获得者。2003年于清华大学计算机系获得博士学位,随后留校任教。担任国际期刊IEEE Trans. CAD和Integration,the VLSI Journal的副编辑、国际会议ASP-DAC指导委员会成员,以及IJCAI. AAAI、DAC、ICCAD、DATE等国际会议的程序委员。长期从事大数据分析与数值算法、集成电路物理仿真EDA算法、高性能计算等方面的教学与科研工作,发表SCI检索的国际期刊论文40多篇。编著出版了教材《数值分析与算法》,以及世界上有关集成电路寄生参数提取的首部英文专著。曾获“全国优秀博士论文”提名,清华大学科研成果推广应用效益奖,以及DATE等重要国际会议论文奖。
第1章 数值计算导论
1.1 概述
1.1.1 数值计算与数值算法
1.1.2 数值计算的问题与策略
1.1.3 数值计算软件
1.2 误差分析基础
1.2.1 数值计算的近似
1.2.2 误差及其分类
1.2.3 问题的敏感性与数据传递误差估算
1.2.4 算法的稳定性
1.3 计算机浮点数系统与舍人误差
1.3.1 计算机浮点数系统
1.3.2 舍入与机器精度
1.3.3 浮点运算的舍人误差
1.3.4 抵消现象
1.4 保证数值计算的准确性
1.4.1 减少舍人误差的几条建议
1.4.2 影响结果准确性的主要因素
评述
算法背后的历史:浮点运算的先驱——威廉·卡亨
练习题
上机题
第2章 非线性方程求根
2.1 引言
2.1.1 非线性方程的解
2.1.2 问题的敏感性
2.2 二分法
2.2.1 方法原理
2.2.2 算法稳定性和结果准确度
2.3 不动点迭代法
2.3.1 基本原理
2.3.2 全局收敛的充分条件
2.3.3 局部收敛性
2.3.4 稳定性与收敛阶
2.4 牛顿迭代法
2.4.1 方法原理
2.4.2 重根的情况
2.4.3 判停准则
2.4.4 牛顿法的问题
2.5 割线法与抛物线法
2.5.1 割线法
2.5.2 抛物线法
2.6 实用的方程求根技术
2.6.1 阻尼牛顿法
2.6.2 多项式方程求根
2.6.3 通用求根算法zeroin
应用实例:城市水管应埋于地下多深
2.7 非线性方程组和有关数值软件
2.7.1 非线性方程组
2.7.2 非线性方程求根的相关软件
评述
算法背后的历史:牛顿与牛顿法
练习题
上机题
……
第3章 线性方程组的直接解法
第4章 线性方程组的迭代解法
第5章 矩阵特征值计算
第6章 函数逼近与函数插值
第7章 数值积分与数值微分
第8章 常微分方程初值问题的解法
附录
算法索引
术语索引
参考文献