数值方法和MATLAB实现与应用
作者 : (美)Gerald Recktenwald
译者 : 伍卫国 万群 张辉 等译
丛书名 : 计算机科学丛书
出版日期 : 2004-09-17
ISBN : 7-111-14618-2
定价 : 59.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 572
开本 : 16开
原书名 : Numerical Methods with MATLAB: Implementation and Application
原出版社: Prentice-Hall, Inc.
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是关于数值方法和MATLAB的介绍,是针对高等院校理工科专业学生编写的教材。数值方法可以用来生成用其他方法无法求解的问题的近似解。本书的主要目的是为应用计算打下坚实的基础,由简单到复杂讲述了标准数值方法在实际问题中的实现和应用。本书通篇使用良好的编程习惯向读者展示了如何清楚地表达计算思想及编制文档。书中通过给读者提供大量的可直接运行的代码库,以及讲解MATLAB工具箱中内置函数使用的数值方法,帮助读者尝试应用数值方法求解实际问题。

图书特色

图书前言

本书主要介绍如何使用MATLAB来求得工程和科学问题的数值解。本书重点在于标准数值技术的应用,而不是对标准数值技术进行分析。书中主要使用数学理论来展开算法的逻辑思路,并鉴别不同数值方法的优点和缺点。但在绝大多数情况下,数值方法的特性采用数值实验来展示。
  本书适用于理工科的学生学习如何使用数值方法来解决本学科中的问题。同时,也希望本书能够对想使用MATLAB求解数值问题的应用工程师或科学家有所帮助。读者不必具有数值分析方面的基础知识,只要有扎实的微积分知识,比如线性代数、微分方程以及计算机编程方面的知识就能读懂本书。
  本书不是一本介绍如何求解数值问题的书。尽管书中给出了许多介绍如何使用MATLAB解决实际问题的例子,但是这些例子的重点仍然在于讲解为什么要这样做。书中在用MATLAB实现每种方法之前都展开了对这一方法基本理论的论述。如果您只是想知道如何将数值插入到MATLAB语句中,本书就不适合您。如果您想知道各种数值方法如何运作,并比较完成同一工作使用不同的数值方法的异同,那您就选对书了。
  本书编写的程序并非都针对实际问题。首先实现初步的算法,然后对算法的性能进行研究。在对初步算法进行改进的基础上开发出高级技术。本书由浅入深,使读者掌握基本的解题思路,并根据不同的实际问题采用可靠、高效的算法。每章都提供了大量的实例,为了研究算法的适应性,采用了几种不同的算法来解决同一问题,并比较了各个算法得到的结果。简单实例的重点是想让读者了解数值方法的基本原理,复杂实例则用来示范数值方法在复杂的现实问题中的可用性。
  本书第一部分介绍了作为交互计算系统和程序设计语言的MATLAB。本书要求读者具有一定的程序设计经验。本教材可用作数值方法的入门书,而不是计算机程序设计的入门书。有丰富计算机使用经验且有雄心和毅力的读者可以将本书作为介绍程序设计的简明教材,当然,读者可以选择更好的编程书籍。
  书中的程序和数据文件构成了MATLAB数值方法(NMM,Numerical Methods with MATLAB)工具箱。工具箱可以从网站http://www.prenhall.com/recktenwald下载。只要在电脑上安装了NMM工具箱,你就可以交互运行书中的实例,甚至能够应用NMM工具箱来解决实际问题。

致学生
  我们学习使用计算机有时候会产生令人极度沮丧的体验。在疲惫和灰心丧气的时候,容易使人觉得数值方法(选择一项或全部):(1)学后徒劳无益(使努力白费);(2)只是一种折磨人的学问;(3)仅是那些计算机怪才愿学的东西;(4)不会增加反而限制自己设计能力的发挥。在教数值方法课程的时候,我总是告诫我的学生,学习一种新的工具,比如说MATLAB,在初期都会使自己的程序“产量”降低。学习并掌握像MATLAB这样多用途且功能强大的工具更要有耐心和投入,只有这样才能有丰厚的收获。
  学习计算机工具的最好方法就是去使用这种工具,但有时也会令自己很沮丧。我们要做好思想准备,要投入进去,尽管去试,因为错误总是会发生的,就让它发生好了,我们已有思想准备。MATLAB中的错误命令不会损坏计算机,在用MATLAB的时候,参照书中的实例,将命令输入计算机,并用你自己的语言解释结果。千万不要跳过这些实例,要多进行实验并尝试改变输入参数。失败为你提供了学习的机会:为什么相差很小的两组输入参数,一组输入有效而另一组无效?是什么原因导致这两组输入产生完全不同的结果?错误是因为算法内在的不足还是输入无效?是不是还有更高效的方法?
  您可以利用http://www.prenhall.com/recktenwald上的学习指导、课堂笔记、课后练习的答案等补充学习材料来扩大学习范围。学习指导用来帮助你理解每章的内容,在读完每章内容以后再看本章的学习目的,会让您收益更多。你的教师会根据学习指导突出重点。对于每章课后练习中带有*标识的习题,本书网站上提供了参考答案。

致老师
  本书内容适合于作为大学教材。为了更好地引导读者,在每章的开头部分都包含有本章概要。学习指导将每章的学习目的分成初级、中级和高级三类主题。同时考虑到对学习目的的主题分类带有主观性,我将学习指导做成PDF和纯文本文件放在http://www. prenhall.com/recktenwald上,希望老师下载并结合学习指导选出适合自己学员的学习目标的相关主题。像幻灯片等其他课件材料,在http://www.prenhall.com/recktenwald上也有提供。
  本书内容没有覆盖数值计算中几个重要的应用领域:求解线性方程的迭代方法、快速傅里叶变换、偏微分方程和极小化(最优化)。这些在本书的初始大纲中都曾提出,经过对原稿不断的修改和受写作时间的限制,我发现不必把所有计划的内容写入最终书稿中。在一些老师看来,少了某些数值方法的介绍是本书的不足。但我相信,通过介绍基本原理来建立稳固的基础知识比讲述大量繁杂的数值方法更能使本科学生受益。本书的目的就在于介绍基础知识。
  要求工科学生使用伪代码编程会产生副作用。学生不应该肤浅地对待数值方法,也不能只知道如何使用NMM工具箱中的程序而不去了解程序的实现细节,阅读NMM工具箱的源代码是本书中要求的。在书中的课后练习中有很多习题是要求修改源代码,或者把源代码应用到新的问题中。从运行良好的代码起步有益于老师通过将数值方法应用到自己的学科中来激发学生的学习兴趣。当学生能彻底改造标准方法的时候,老师就可以把重点放在讲解每种数值方法的特性上。拥有一个运行良好的代码库有利于学生将所学数值方法应用到其他课程中。这样做有利于促进把数值方法整合到本科课程中。

作者忠告
  本书还有许多有待改进的方面,恳请读者的指正。如有建议或意见,请发送至我的邮箱。我会在http://www.prenhall.com/recktenwald的勘误表中及时更改错误。
  对于使用本书中的技术、程序和源代码等造成的损失我不担负任何责任。大家知道,将一个正确的算法应用到一个错误的问题上是很常见的事情。

致谢
  完成本书的编撰工作,我要感谢很多人。书中列出的许多作者和研究者为我的写作提供了丰富的背景材料,MATLAB的创作者提供了有用的工具使我增进了对数值数学的认识。我从NA-net和NA-teach电子文摘中学到了许多知识。在我开始从事工程训练和数值问题求解时,我的老师给我以鼓励和耐心的指导。在写作书稿的过程中我的学生替我进行了艰辛的实验工作。波特兰州立大学的同事给了我很大的鼓励。特别要感谢的是Dave Turcic,他为我提供了本书写作时的一个早期书稿在为工程师开设的数值方法课程中使用时的反馈意见。
  在Prentice Hall出版社工作的许多好心人给了我鼓励和良好的建议。我要感谢Denise Penrose和Rob Merino在出书计划开始时给我的鼓励。感谢Susan Slater和Michael Slaughter提出编辑意见和书稿的修改意见。特别感谢Eric Frank,他对教科书有透彻的理解,并给我提供了热情的支持。感谢Lisa Bell-Greer和波特兰Revolution Publishing的所有辛勤的工作者,他们高质量地完成了手稿的小批量发行。最后,感谢Integre Technical Publishing公司的全体员工,特别感谢Leslie Galen对书中语句的推敲,感谢Don DeLand为我的LATEX原始资料增加闪光点。
  以下人士阅读了本书原稿并提出了宝贵意见,他们是:西方学院的Ron Buckmire、西雅图大学的Anand Cousins、柯达公司的John D'Errico、加利福尼亚州立大学的Bahram Shahian和阿拉巴马大学的Howard Wilson。书中的任何错误由我本人承担责任。
  感谢父母支持我的研究工作。感谢朋友对我的支持,与我分享快乐。我的儿子Cullen给了我灵感和快乐。我的妻子Elsbeth,也是我的工作伙伴,给了我极大的支持和影响。我把此书献给她。

Gerald Recktenwald
gerry@me.pdx.edu

作者简介

(美)Gerald Recktenwald:Gerald Recktenwald: 波特兰州立大学机械工程系的副教授,长期从事数值方法方面的教学工作。

译者简介

伍卫国 万群 张辉 等译:暂无简介

译者序

自从计算机诞生以来,科学家和工程技术人员一直在寻求高效的计算工具来解决实际问题,数值计算应运而生。经过不断的研究和积累,在现今科学研究和工程实践中,数值计算已经发展成为一门用来分析数据、解决实际问题的重要学科,成为继理论分析、实验之后又一个重要的研究方法。
  MATLAB是Mathworks公司推出的用于数值计算的交互式软件系统,具有强大的数值分析、矩阵运算、信号处理和图形显示功能,因其强大的数据处理能力和丰富的工具箱使得它的编程极为简单。Gerald W. Recktenwald教授多年来一直从事数值方法课程的教学工作,并应用数值方法完成了流体力学、热力传输和计算机方面的多个工程项目,具有丰富的实践经验。本书是他多年教学和科研工作的结晶,是一本介绍数值计算方法和MATLAB的优秀教科书。
  本书首先介绍了MATLAB基础知识,而后讨论了数值计算方法的基础理论知识以及MATLAB实现。在全书论述中,Recktenwald教授着重注意将理论知识与工程实践相结合,给出了大量的实例,使读者能快速地将数值计算方法应用到实际问题中去。本书基础知识完备、实例丰富、论述由浅入深,是一本数值计算和工程实践方面的优秀教材,适用于高等院校理工科专业的本科生。
  本书的前言及第1~7章由伍卫国和万群翻译,第8章由张兴军翻译,第9~11章由张辉翻译,第12章及附录由付重钦翻译。全书由伍卫国、张辉和万群负责统稿。
感谢机械工业出版社华章分社的责任编辑为本书所做的工作,感谢在书稿的录入、校对和专业术语的确定过程中方敏、吴泳、胡文豪、李沁、陈长虹、王磊、吴小康和戴罗庚同学给予的帮助。
  很高兴能将本书的中译本奉献给大家。在本书的翻译过程中,我们尽了最大努力,力求使本书臻于完善,但由于译者的专业水平和中英文水平所限,书中一定还存在不少谬误和疏漏,敬请读者批评指正。

伍卫国
西安交通大学电子与信息工程学院
计算机科学与技术系
2004年2月

图书目录

第1章  绪论 1
1.1  专有名词 1
1.1.1  数值计算和符号计算 1
1.1.2  数值方法与数值算法 2
1.1.3  数值方法与数值分析 3
1.2  MATLAB概述 3
1.3  本书的组织结构 4
1.3.1  MATLAB基础 4
1.3.2  数值技术 4
1.3.3  MATLAB程序的交叉引用 5
1.4  练习的难易级别 5
第一部分  MATLAB基础
第2章  MATLAB的交互计算 7
2.1  运行MATLAB 7
2.1.1  MATLAB用于表达式计算 8
2.1.2  MATLAB变量 10
2.1.3  内置变量和函数 10
2.1.4  函数和命令 11
2.1.5  在线帮助 11
2.2  矩阵与向量 12
2.2.1  创建矩阵 13
2.2.2  矩阵元素的下标符号 17
2.2.3  冒号运算符 18
2.2.4  从向量或矩阵中删除元素 20
2.2.5  对矩阵的数学运算 21
2.2.6  矩阵变维 25
2.3  其他变量类型 27
2.3.1  复数 27
2.3.2  字符串 30
2.3.3  多项式 31
2.4  管理交互环境 32
2.4.1  MATLAB工作区 32
2.4.2  处理外部文件中的数据 33
2.5  在MATLAB中绘制图形 39
2.5.1  画线 40
2.5.2  给图形作注解 41
2.5.3  子视窗 43
2.5.4  绘制表面图 44
2.5.5  轮廓线 47
2.6  小结 49
习题 49
第3章  MATLAB编程 56
3.1  m文件脚本 56
3.1.1  创建m文件 57
3.1.2  脚本的副作用 60
3.1.3  注释语句 61
3.2  m文件函数 61
3.2.1  函数语法 61
3.2.2  输入和输出参数 62
3.2.3  主函数和子函数 64
3.3  输入和输出 65
3.3.1  提示用户输入数据 66
3.3.2  文本输出 66
3.4  流程控制 69
3.4.1  关系运算符 69
3.4.2  运算符的优先级 70
3.4.3  if...else语句 71
3.4.4  使用switch结构进行条件选择 72
3.4.5  for循环 73
3.4.6  while循环 75
3.4.7  break命令 76
3.4.8  return命令 77
3.5  向量化 78
3.5.1  用向量操作代替循环 78
3.5.2  对向量和矩阵预分配内存 79
3.5.3  向量化索引法和逻辑函数 80
3.6  解决方法(deus ex machina) 85
3.6.1  输入输出参数个数可变 85
3.6.2  全局变量 88
3.6.3  函数feval 89
3.6.4  嵌入函数对象 91
3.7  小结 93
习题 93
第4章  编制和调试MATLAB程序 102
4.1  m文件的组织和编排 102
4.1.1  一致性设计风格的使用 103
4.1.2  直观的程序块和空白符 103
4.1.3  有意义的变量名 104
4.1.4  文档资料 105
4.2  编制数值解法程序 107
4.2.1  逐步求精 107
4.2.2  实现:单程序多m文件 109
4.2.3  测试 114
4.3  调试 117
4.3.1  防错性程序设计 118
4.3.2  调试工具 119
4.4  小结 122
习题 123
第二部分  数值技术
第5章  计算中的误差 125
5.1  数的数字表示法 127
5.1.1  位、字节和字 127
5.1.2  整数 128
5.1.3  浮点数 129
5.1.4  数值计算和符号计算 133
5.2  有限精度运算 134
5.2.1  机器精度 139
5.2.2  程序计算中的蕴涵式 140
5.2.3  测量误差 141
5.2.4  迭代序列的收敛 142
5.2.5  相对收敛性准则和绝对收敛性准则 144
5.3  算法的截断误差 145
5.3.1  泰勒级数 148
5.3.2  阶符 150
5.4  小结 155
习题 157
第6章  一元方程f(x)=0求根 161
6.1  预备知识 163
6.1.1  总则 163
6.1.2  基本的求根程序 163
6.1.3  根区间划分 163
6.2  定点迭代 167
6.3  二分法 170
6.3.1  二分法的分析 172
6.3.2  收敛准则 173
6.3.3  二分法的一般实现 174
6.4  牛顿法 176
6.4.1  牛顿法的收敛性 178
6.4.2  牛顿法的一般实现 179
6.5  割线法 182
6.6  混合法 185
6.7  多项式的根 189
6.8  小结 192
习题 193
第7章  线性代数回顾 200
7.1  向量 200
7.1.1  向量操作 201
7.1.2  向量的范数 206
7.1.3  正交向量 210
7.2  矩阵 211
7.2.1  矩阵中的每行和每列都是向量 211
7.2.2  对矩阵进行的操作 212
7.2.3  矩阵运算和向量运算的操作次数 226
7.2.4  矩阵的范数 227
7.3  向量和矩阵的数学性质 228
7.3.1  线性无关性 229
7.3.2  向量空间 230
7.3.3  与矩阵相关的子空间 231
7.3.4  矩阵的秩 233
7.3.5  矩阵的行列式 233
7.4  特殊矩阵 236
7.4.1  对角矩阵 236
7.4.2  单位矩阵 236
7.4.3  矩阵的逆 237
7.4.4  对称矩阵 238
7.4.5  三对角矩阵 238
7.4.6  正定矩阵 239
7.4.7  正交矩阵 240
7.4.8  置换矩阵 240
7.5  小结 241
习题 243
第8章  解方程组 249
8.1  基本概念 250
8.1.1  矩阵公式 250
8.1.2  方程组有解的条件 252
8.2  高斯消去法 260
8.2.1  解对角方程组 260
8.2.2  求解三角方程组 260
8.2.3  不选主元的高斯消去法 262
8.2.4  选主元的高斯消去法 266
8.2.5  用反斜杠运算符求解方程组 272
8.3  数值法求解方程组Ax =b的局限性 273
8.3.1  计算量 274
8.3.2  对输入参数的敏感性 274
8.3.3  计算稳定性 279
8.3.4  残差 280
8.3.5  经验法则 280
8.3.6  计算k (A) 281
8.4  分解法 282
8.4.1  LU分解 282
8.4.2 Cholesky分解 291
8.4.3  再论反斜杠运算符 294
8.5  非线性方程组 294
8.5.1  用迭代法求解非线性系统 295
8.5.2  逐次代换法 297
8.5.3  牛顿法 299
8.6  小结 307
习题 308
第9章  数据的最小二乘曲线拟合 316
9.1  数据的直线拟合 318
9.1.1  求残差最小值 319
9.1.2  超定方程组 320
9.1.3  直线拟合的实现 321
9.1.4  R2 统计量 322
9.1.5  显式非线性函数的多直线拟合 325
9.1.6  数据直线拟合小结 328
9.2  函数线性组合的最小二乘拟合 328
9.2.1  基本函数 329
9.2.2  通过求解正规方程组来进行最小二乘拟合 330
9.2.3  用QR分解法进行最小二乘逼近(拟合) 337
9.2.4  多项式曲线拟合 344
9.3  多元线性最小二乘拟合 347
9.4  小结 354
习题 356
第10章  插值 364
10.1  基本思想 366
10.1.1  插值和曲线拟合 366
10.1.2  插值和外插 367
10.2  任意阶的插值多项式 368
10.2.1  用单项式基本插值公式进行多项式插值 368
10.2.2  用拉格朗日基本插值公式进行多项式插值 372
10.2.3  使用牛顿基本插值公式进行多项式插值 375
10.2.4  多项式摆动 386
10.3  分段多项式插值 387
10.3.1  分段线性插值 388
10.3.2  查找支点 389
10.3.3  linterp函数 390
10.3.4  分段三阶Hermite插值 391
10.3.5  三阶样条插值 397
10.4  MATLAB的内置插值函数 407
10.5  小结 410
习题 412
第11章  数值积分 418
11.1  基本思想和术语 419
11.2  Newton-Cotes公式 422
11.2.1  梯形公式 422
11.2.2  Simpson公式 428
11.2.3  Newton-Cotes公式总览 431
11.3  高斯求积法 434
11.3.1  理论基础 435
11.3.2  Gauss-Legendre求积法的基本公式 437
11.3.3  查表求节点和权 439
11.3.4  节点和权值的计算 441
11.3.5  Gauss-Legendre求积法的复合公式 444
11.4  自适应求积法 451
11.4.1  基于Simpson公式的自适应积分 451
11.4.2  内置quad和quad8函数 458
11.4.3  新的quad和quadl函数 461
11.5  广义积分和其他复杂问题 461
11.6  小结 466
习题 468
第12章  常微分方程的数值积分 473
12.1  基本思想和术语 474
12.1.1  常微分方程 474
12.1.2  数值求解策略概述 476
12.2  欧拉法 477
12.2.1  欧拉法的实现 478
12.2.2  欧拉法的分析 481
12.2.3  一般化:单步法 484
12.2.4  本节小结 484
12.3  高阶单步法 485
12.3.1  中点法 485
12.3.2   Heun法 487
12.3.3  四阶Runge-Kutta法 488
12.4  自适应步长算法 490
12.5  联立ODE组 499
12.5.1  联立ODE组的RK-4算法 500
12.5.2  高阶微分方程 505
12.6  其他主题 508
12.7  小结 509
习题 511
附录A  特征值和特征方程组 516
附录B  稀疏矩阵 527
参考文献 535
MATLAB工具箱函数 539
NMM工具箱m文件函数列表 541
索引 543

教学资源推荐
作者: (美)斯蒂芬·J.查普曼(Stephen J. Chapman)著
作者: Peter J.Ashenden
作者: (美)James R.Armstrong;F.Gail Gray
作者: 江国强
参考读物推荐
作者: 卫涛 阳桥 柳志龙 主编
作者: Alan Jefferis
作者: Eva Part-Enander
作者: 广州中望龙腾软件股份有限公司 组编 赵婷婷 刘玉峰 谭文俊 编著