中国科学院考研指定参考书 五 普通高等教育“十一五”国家级规划教材 中国科学技术大学数学教学丛书 数值计算方法与算法 (第三版) 张韵华王新茂陈效群张端编 当里斜岸典度社
第三版前言 本教材从2000年1月第一版第一次印刷至今已历经16年,2006年9月修订 为第二版,并入选普通高等教育“十一五”国家级规划教材 在修订教材前征求我校信息与计算科学专业的相关教师和主讲教师的意见,张 梦萍教授、徐炎教授、童伟华副教授、段雅丽副教授、夏银华副教授、张明波博士 和陈先进博士都提出了建设性的修改建议和意见,在此深表感谢。 下列是本版教材的修订内容. 对章节目录做了适合教学结构的部分调整,对有些章节的顺序做了变动.将原 版各章C语言例题统一放在附录2中,将用数学软件Mathematica做题的例题放 在附录3中. 增加了部分内容的定理证明.例如:(第4章附录中)直接法误差分析:(第5章 中)Gauss-Seidel迭代的收敛性证明等. 在部分章节增加了图示,用图示表明几何意义.例如:图示向量范数、图示复化 Simpson积分公式积分系数 在部分章节增加了例题,将拓宽的内容融合在例题中.例如:构造中心差商的 外推公式,用Householder变换作出矩阵A的QR分解 本教材仅提供了数值计算方法课程的基本内容,主讲教师在教学中常会针对所 在院系的部分章节内容做更深入的展开,也会根据学时的要求做相应的内容删减 为适应不同学时的课程要求将教材中部分内容表以星号供选择. 本教材的C语言程序和大部分插图由中国科学技术大学陈长松博士(现公安 部第三研究所的研究员)和窦斗博士(现南京大学数学学院副教授)完成,在此向 他们表示感谢! 感谢校内外使用本教材的教师和学生! 感谢科学出版社和中国科学技术大学教务处对第三版教材的出版支持 编者 2016年7月
第二版前言 数值计算方法,是一种研究并解决数学问题的数值近似解方法,简称计算方法 计算数学中的数值计算方法是解决“计算”问题的桥梁和工具.计算机是数值计算 方法最常用的计算工具,随着计算机技术的迅速发展和普及,计算方法课程已成为 所有理工科学生的必修课程.我们知道,计算能力是计算工具和计算方法的效率的 乘积,提高计算方法的效率与提高计算机硬件的效率同样重要.科学计算已用到科 学技术和社会生活的各个领域中.目前,理论方法、实验方法和数值计算方法称为 科学研究并列的三种方法. 本书覆盖了计算方法最基本的内容,包括插值、数值微分和数值积分、曲线拟 合的最小二乘法、非线性方程求解、解线性方程组的直接法、解线性方程组的迭代 法、计算矩阵的特征值和特征向量、常微分方程数值解.最后一章给出用符号计算 语言Mathematica做各章计算方法的例题. 本书参考了国内外多本计算方法教材.例如,由教育部高等教育司推荐的国外 优秀信息科学与技术系列教学用书;Richard L.Burden的《数值分析》(Numerical Analysis),并吸取了这些书的优点,例如,给出大部分方法对应的算法,通过算法 缩短数学方法和计算机实现的距离。 本书例题丰富,通过典型例题帮助学生进一步理解计算对象、计算公式、限定 条件和计算步骤.学习计算方法中的逼近和迭代等数学思想,掌握常用的数值方法 获取近似计算的能力,激发学生的学习兴趣,扩大学生数值计算的知识面,并能触 类旁通地应用到各自的科研和技术领域中,培养学生的数学综合分析能力和计算 能力 本书在每章的“程序示例”中,给出用C语言编写的方法的程序和计算实例 这些程序基于数值计算公式,没有进行优化处理,其目的是通过编程上机,观察方 法动态运行过程,训练和提高计算机应用技术能力和水平.在编程中领会和理解方 法的计算要领和步骤,在编程中思考问题的条件和限制范围,在编程中理解一般问 题和特殊问题的区别,在编程中体验数值实验方法 本书从2000年出版后已被多所学校选用作为教材,在此深表感谢.为了给要 深入学习计算方法的学生做铺垫,第二版增加了高斯积分简介和“QR初步”等标 注星号(*)的内容供选择 本书适合作为40学时的计算方法课程教材,为了适应不同层次的读者,少部 分标注星号(*)的内容可作为选修部分,主讲教师可根据专业需求增加或减少各章
.iv 第二版前言 节内容。 本书“程序示例”部分由中国科学技术大学数学系博士生陈长松和窦斗完成 在此表示感谢.编者还要向所有使用本教材的教师和学生表示深切的谢意,感谢他 们对本书提出的建议和修订意见,我们要在修订中不断完善本书.最后感谢中国科 学技术大学教务处和科学出版社对本书出版的支持. 编者 2006年3月
第一版前言 随着现代科学技术的发展和计算机的广泛使用,数值计算方法不仅要面对数 学工作者、数值计算专家,还要更多地面对一般的工程技术人员和各行各业的设计 人员 为了顾及一般读者,本书力求通俗易懂、简洁实用.其内容按插值、数值微分 和积分、曲线拟合、非线性方程求根、解线性方程组、计算特征值和特征向量、常 微分方程数值解的顺序安排.第9章给出调用Mathematica软件直接做数值题目 的部分样例.全书约需40学时.本书介绍的各类问题的计算方法都有相对的独立 性,可以根据不同的教学对象和要求选择其中的某些章、节和知识点,书中以*标 记略有难度的内容以供选用. 本书以能正确选择计算对象的计算方法为前提,领会计算原理和掌握计算步骤 为主干线,淡化数学定理证明中的严谨性部分,强化数值方法与计算机技术的应用 能力训练,为此取书名为“数值计算方法和算法”,希望读者通过本书的学习掌握数 值计算中的基本思想和方法,培养自行处理常规数值计算问题的能力,为深入学习 数值方法打好基础,也为部分读者调用各类程序包解决问题创造条件. 本书1999年9月出版,此次重印主要做了修订和勘误工作:在内容上增加了 少量的在应用软件中的实用算法,例如:用牛顿插值构造埃尔米特插值的方法:汇 集了部分上机作业题,供学生上机实习时选用. 本书是作者在中国科学技术大学多年讲授计算方法课程的基础上编写而成的, 可作为一般理工科(非数学系和计算机系)以及工商科专业的计算方法教材,也可 作为工程技术人员的参考用书. 本书的插图和大部分程序由中国科学技术大学数学系陈长松博士完成,部分程 序和例题由窦斗硕士完成。在此表示感谢. 编者还要向使用本教材的教师和学生表示深切的谢意,感谢他们对本书提出的 修订意见.最后,感谢科学出版社和本书责任编辑对出版本书所做的工作. 编者 1999年3月
目录 绪论。 。,。,。+41 01数值计算方法与算法.1 0.2误差与有效数字.2 0.3矩阵和向量范数.4 031向量范数。,。,····.。.·。····+··.·····.4 0.3.2矩阵范数.7 0.3.3矩阵的条件数.12 第1章插值.15 1.1拉格朗日(亿agrange)插值多项式.15 111线性插值.16 11.2二次插值.18 1.1.3n次拉格朗日插值多项式.20 1.2牛顿(Newton)插值多项式.25 1.21差商及其计算.25 1.2.2 Newton插值.27 *1.3 Hermite插值.32 1.4三次样条函数.38 1.41分段插值. .38 1.4.2三次样条插值的M关系式.40 1.43三次样条插值的m关系式 .44 习题1.45 第2章最小二乘拟合.47 21拟合函数.47 2.2多项式拟合 .49 23矛盾方程组.54 习题2.58 第3章非线性方程求解.60 3.1迭代法.60 3.11实根的对分法.60
·vi进 目录 312不动点迭代.62 3.2 Newton迭代法.65 3.3弦截法 .69 3.4求解非线性方程组的Newton方法.70 习题3. .73 第4章求解线性方程组的直接法.75 4.1Gus8消元法.76 4.11Guss顺序消元法.77 4.1.2Gaus列注元消元法.81 42直接分解法.84 4.21D0 olittle分解.85 4.2.2Cout分解.89 42.3特殊线性方程组.90 习题4.94 附录.95 第5章求解线性方程组的迭代方法.97 5.1简单(们acobi)迭代 .98 5.1.1 Jacobi选代计算公式.98 5.1.2 Jacobi迭代收敛条件.100 5.2高斯-赛德尔(Gauss-Seidel)迭代。 101 5.2.1 Gauss-.Seidel迭代计算.101 5.2.2 Gauss-Seidel选代矩阵.102 5.2.3Gaus-Seidel迭代算法 .103 5.3松驰迭代 105 5.3.1松弛选代计算公式.105 5.3.2松驰迭代矩阵.105 *5.4经典迭代格式的统一. ,.106 习题5. 0.107 第6章数值积分和数值微分. .110 6.1牛顿-柯特斯数值积分.110 6.1.1插值型数值积分.111 6.l.2牛顿柯特斯(Newton-Cotes)积分.112 6.2复化数值积分 .117 6.2.1复化梯形积分 .117
目录 .ix. 6.2.2复化Simpson积分.119 6.2.3自动控制误差的复化积分.121 6.2.4龙贝格(Romberg)积分.124 *6.3重积分计算.125 *6.4高斯(Gauss)型积分.128 6.4.1勒让德(亿egendre)多项式.129 6.4.2Gaus-Legendre积分.130 6.5数值微分.132 6.5.1差商与数值微分.132 65.2插值型数值微分. 135 习题6.137 第7章常微分方程数值解.139 71欧拉(Eulr)公式.140 7.1.1基于数值微商的Euler公式140 *7.12 Euler公式的收敛性.143 7.1.3基于数值积分的近似公式 .145 7.2 Runge-Kutta方法 .146 7.2.1二阶Runge-Kutta方法.146 7.2.2四阶Runge-Kutta公式.149 73线性多步法.151 7.4常微分方程组的数值解法 .154 7.41一阶常微分方程组的数值解法.154 7.4.2高阶常微分方程数值方法.157 *7.5常微分方程的稳定性.157 习题7.162 第8章计算矩阵的特征值和特征向量.164 81幂法.16 8.11幂法计算.164 8.12幂法的规范运算.167 82反幂法.171 *8.3实对称矩阵的Jacobi方法.172 *8.4QR方法简介.179 8.4.1QR方法初步.179 8.4.2矩阵的QR分解.180
目录 习题8.183 参考文献.184 附录1 上机作业题 .185 附录2C语言程序示例. .189 附录3在符号语言Mathematica中做题.19g
绪 论 0.1数值计算方法与算法 数值计算方法,是一种研究数学问题的数值近似解方法,是在计算机上使用的 解数学问题的方法,简称计算方法.它的计算对象是那些在理论上有解而又无法用 手工计算的数学问题,以及没有解析解的数学问题.例如,解一个有300个未知量 的线性方程组;计算6阶矩阵的全部特征值. 在科学研究和工程技术中都要用到各种计算方法.例如,在航天航空、地质勘 探、汽车制造、桥梁设计、天气预报和汉字字体设计中都有计算方法的踪影.在20 世纪70年代,大多数学校仅在数学系的计算数学专业和计算机系开设计算方法这 门课程.随着计算机技术的迅速发展和普及,现在计算方法课程几乎已成为所有理 工科学生的必修课程. 计算方法是一门理论性和实践性都很强的学科,计算方法既有数学类课程中理 论上的抽象性和严谨性,又有实用性和实验性的技术特征.计算方法的前提课程是 微积分、线性代数、常微分方程和一门计算机语言 大多数人学习计算方法的目的是为了使用方法,在学习计算方法中,在套用计 算公式、修改计算公式和创建计算公式中,都需要不同程度的专业知识和数学基础。 要注重学习计算方法中的逼近和迭代等数学思想和常用手法,获取近似计算的能 力,并能触类旁通地应用到各个领域中.一些有创造力的工程师不仅擅长使用某些 计算方法,而且能创建出简便有效的计算方法.例如,样条函数、快速傅里叶变换 和有限元方法都是有创造力的工程师们创建的,再由数学家们完善这些方法的理论 基础,并从理论上进行提高和推广 从方法的计算公式到在计算机上实际运行,两者之间还有距离,这是数学能力 与计算机应用技术能力之间的距离,还与计算机的运行环境和编程工具有关,为了 缩小两者之间的距离,本教材将给出部分计算公式的算法描述.用算法容易准确而 简便地描述计算公式,在算法中能简洁地表达计算公式中的“循环”和“迭代”等 操作.有了方法的算法,将它转化成C或PASCAL等语言的程序上机运行也就容 易了. 在学习计算方法过程中,如果能用某种语言编制该方法的程序并运行通过,那 么有利于准确而深刻地掌握该方法的计算步骤和过程