
前 言
本书第一版的发行距今已经有20年的时间了,在此期间,我们起初的数值方法和计算机知识更多地是为了突出工程课程,这些内容—— 尤其是前几个部分—— 已经严重过时了。现在,有的大学中,大学一、二和三年级的课程同时讲授计算导论和数值方法。另外,我们的很多同事正在将面向计算机的问题集成到其他的课程中,这些课程涉及各种难易程度。因此,本书的这个新版本仍然建立在一个基本的假设之上,就是不管是学生还是工程师,都假设他们事先已经学习过关于数值方法的入门课程,并具有坚实的基本知识。所以,尽管在此新版中,我们已经对内容的覆盖面进行了扩展,但我们还是尽量保留了第一版的许多特点,这些特点使得不管是本科学生还是研究生,本书都是适用的。这些特点包括:
● 问题引导。当有问题激励时,工科学生的学习效果最好。数学和计算科学的学生尤其如此。因此,我们将从问题求解的角度着手介绍数值方法。
● 面向学生的讲述方式。我们尽量使本书具有很多特征,这样就可以使本书尽可能适合于学生使用。这些特点包括总体内容的组织,使用导论和结束语来强调主要内容,以及广泛地使用各种工程领域中的工程实例和案例进行分析。我们也努力使我们的解释更加直接和尽可能面向实践。
● “提示框”方法。尽管我们强调问题求解,但是我们相信,让工程师以“黑盒”方式学习数值算法还是具有其自身局限的。因此,我们在书中包含了足够的理论,让读者对数值方法背后的基本概念有更好的理解。我们尤其强调误差分析、数值方法的局限性以及各种方法权衡的相关理论。
● 个人计算定位。当我们第一次编写这本书时,大型计算机的批处理方式与PC机的交互方式之间具有很大的差距。今天,随着PC机性能的不断增强,这种差异正在消失。这就是说,本书仍然强调可视化和交互计算,这些都是个人计算的特点。
● 增强学生的能力。显然,我们要引导学生使用诸如Excel和MATLAB这样的软件包进行标准的“点击”问题求解的能力。但是,也应该向他们展示如何开发简单的、结构良好的程序来对这些环境的基本功能进行扩展。这些知识一直延伸到了标准的编程语言,如VB、Fortran 90和C/C++。我们相信,从计算机编程着手来学习可以使工程课程更易于理解。我们的底线是,只要工程师对工具的限制不满意,他们就必须编写代码。只是现在,我们可以将这些代码称为“宏”或“M文件”,本书注重增强学生这方面的能力。
除了这五个原则之外,在第5版中主要加强的另外一个方面是对每章末的习题集进行了大幅度的修改和扩充。对大多数习题的修改是为了可以得到不同于以前版本的数值解。除此之外,还增加了各类新习题。与以前的版本一样,我们的习题包含了来自所有工程分支中的数学和应用问题。在所有案例中,我们的目标就是要给学生提供一些练习来检验他们的理解程度,并向他们展示,数值方法如何能帮助他们更好地求解问题。
与以往一样,编写本书的基本目标是为学生提供一个进入数值方法的良好开端。我们相信,那些热爱数值方法、计算机和数学且充满激情的学生最终会成为更优秀的工程师。如果本书培养了学生对这些学科的热情,则我们认为我们所付出的努力就已经得到了回报。
作者简介
Steve C. Chapra执教于塔夫茨大学的土木与环境工程系,在此,他担任计算与工程系路易斯?伯杰讲座教授。他的主要著作有Surface Water-Quality Modeling and Applied Numerical Methods with MATLAB。
Chapra博士分别在曼哈顿学院和密歇根大学获得了他的工程硕士和工程博士学位。在进入塔夫茨大学之前,他曾先后工作于环境保护局和国家海洋大气局,他还曾先后执教于德克萨斯州A&M大学和科罗拉多大学。他的主要研究兴趣为地表水质建模与先进计算机在环境工程中的应用。
由于他的学术贡献,他曾多次获得过多种奖励,包括1993年的Rudolph Hering Medal(ASCE:美国市政工程协会)和1987年的Meriam-Wiley杰出作者奖(ASEE:美国工程教育协会)。在德克萨斯州A&M大学(1986,Tenneco奖)和科罗拉多大学(1992,Hutchinson奖),他还分别被评为工程领域的杰出教师。
Raymond P. Canale是密歇根大学的名誉教授。他二十多年的职业生涯是在该大学渡过的,其间他曾讲授过计算机、数值方法和环境工程领域的多门课程。在水生态环境的数学与计算机建模方面,他也曾领导过各种研究项目。他单独或与别人合作编写了多本专著,已经发表了100多篇论文和学术报告。他还设计并开发了PC机软件来辅助工程教学和工程问题求解。由于他的专著和软件,他也被ASEE授予了Meriam-Wiley杰出作者奖,同时由于所发表的技术性文章,他还被授予其他几个奖项。
Canale教授现在主攻应用问题,目前,作为咨询者和指导专家,他正在为一些工程公司和企业以及政府机构服务。
目 录
第1部分 建模、计算机与误差分析问题 1
PT1.1 动机 2
PT1.1.1 非计算机方法 2
PT1.1.2 数值方法与工程实践 3
PT1.2 数学背景 4
PT1.3 导读 6
PT1.3.1 范围与预览 6
PT1.3.2 目标 7
第1章 数学建模与工程问题求解 9
1.1 一个简单的数学模型 10
1.2 守恒律与工程 16
习题 19
第2章 程序设计与软件 25
2.1 软件包与程序设计 25
2.2 结构化程序设计 26
2.3 模块化程序设计 35
2.4 Excel 36
2.5 MATLAB 40
2.6 其他的语言和软件库 44
习题 45
第3章 逼近与舍入误差 53
3.1 有效数字 54
3.2 准确度与精确度 55
3.3 误差的定义 56
3.4 舍入误差 59
3.4.1 数的计算机表示 60
3.4.2 计算机中的算术运算 67
习题 72
第4章 截断误差与泰勒级数 75
4.1 泰勒级数 75
4.1.1 泰勒级数展开的余项 81
4.1.2 用泰勒级数估计截断误差 83
4.1.3 数值微分 87
4.2 误差传播 92
4.2.1 单变量函数 92
4.2.2 多变量函数 93
4.2.3 稳定性与稳定条件 95
4.3 总的数值误差 96
4.4 粗差、形式化误差和数据的
不确定性 98
4.4.1 粗差 98
4.4.2 形式化误差 98
4.4.3 数据的不确定性 99
习题 99
第1部分 结束语 103
PT1.4 权衡 103
PT1.5 重要的关系式与公式 105
PT1.6 高级方法与其他参考文献 106
第2部分 方程求根 109
PT2.1 动机 110
PT2.1.1 求根的非计算机方法 110
PT2.1.2 方程求根和工程实践 110
PT2.2 数学背景 112
PT2.3 导读 113
PT2.3.1 范围与预览 113
PT2.3.2 目标 114
第5章 划界法 117
5.1 图解法 117
5.2 二分法 121
5.2.1 终止条件和误差估计 123
5.2.2 二分算法 127
5.2.3 最小化函数的计算量 127
5.3 试位法 128
5.3.1 试位法的缺陷 132
5.3.2 改进的试位法 133
5.4 增量搜索和确定初始猜测 134
习题 135
第6章 开方法 139
6.1 简单定点迭代法 140
6.1.1 收敛性 141
6.1.2 定点迭代算法 144
6.2 牛顿-瑞普逊法 145
6.2.1 终止条件和误差估计 146
6.2.2 牛顿-瑞普逊法的缺点 148
6.2.3 牛顿-瑞普逊算法 150
6.3 正割法 151
6.3.1 正割法和试位法的差异 152
6.3.2 正割法算法 153
6.3.3 改进的正割法 154
6.4 重根 155
6.5 非线性方程组 158
6.5.1 定点迭代法 159
6.5.2 牛顿-瑞普逊法 161
习题 163
第7章 多项式求根 167
7.1 工程和科学中的多项式 167
7.2 多项式计算 170
7.2.1 多项式计算和微分 170
7.2.2 多项式紧缩 170
7.3 传统方法 173
7.4 米勒法 173
7.5 贝尔斯托法 177
7.6 其他方法 182
7.7 使用程序库和软件包求根 182
7.7.1 Excel 182
7.7.2 MATLAB 185
7.7.3 IMSL 188
习题 190
第8章 方程求根案例分析 193
8.1 理想和非理想气体定律
(化学/生物工程) 193
8.2 明水渠水流(土木工程/
环境工程) 196
8.3 电子电路的设计(电气工程) 199
8.4 振动分析(机械/航空工程) 202
习题 208
第2部分 结束语 225
PT2.4 权衡 225
PT2.5 重要的关系式与公式 226
PT2.6 高级求根方法与其他
参考文献 227
第3部分 线性代数方程组 229
PT3.1 动机 230
PT3.1.1 求解方程组的非
计算机方法 230
PT3.1.2 线性代数方程组和
工程实践 230
PT3.2 数学背景 232
PT3.2.1 矩阵概念 232
PT3.2.2 矩阵操作规则 234
PT3.2.3 用矩阵形式表示线性
代数方程组 239
PT3.3 导读 240
PT3.3.1 范围与预览 240
PT3.3.2 目标 241
第9章 高斯消去法 243
9.1 求解小规模方程组 243
9.1.1 图解法 243
9.1.2 行列式和克莱姆法则 245
9.1.3 未知数消去法 248
9.2 原始高斯消去法 249
9.3 消去法的缺陷 256
9.3.1 除以0的问题 256
9.3.2 舍入误差 256
9.3.3 病态方程组 257
9.3.4 奇异方程组 261
9.4 解求精技术 261
9.4.1 使用更多的有效位 262
9.4.2 交换主元法 262
9.4.3 缩放 264
9.4.4 高斯消去算法 267
9.5 复数方程组 269
9.6 非线性方程组 269
9.7 高斯–约当法 271
9.8 小结 273
习题 273
第10章 LU分解法和矩阵求逆 279
10.1 LU分解 279
10.1.1 LU分解概述 279
10.1.2 高斯消去法的LU分解 281
10.1.3 LU分解算法 286
10.1.4 Crout分解 287
10.2 矩阵求逆 289
10.2.1 计算逆矩阵 289
10.2.2 激励-反应计算 291
10.3 误差分析和方程组条件 292
10.3.1 向量和矩阵的范数 293
10.3.2 矩阵条件数 296
10.3.3 迭代求精 297
习题 298
第11章 特殊矩阵和高斯
–赛得尔方法 303
11.1 特殊矩阵 303
11.1.1 三对角方程组 304
11.1.2 Cholesky分解 306
11.2 高斯–赛得尔方法 308
11.2.1 高斯–赛得尔方法的
收敛准则 310
11.2.2 使用松弛方法提高
收敛性 312
11.2.3 高斯–赛得尔算法 313
11.2.4 高斯–赛得尔方法
的问题背景 314
11.3 使用程序库和软件包求解线
性代数方程组 314
11.3.1 Excel 314
11.3.2 MATLAB 315
11.3.3 IMSL 317
习题 321
第12章 线性代数方程组案例分析 325
12.1 反应系统的稳态分析
(化学/生物工程) 325
12.2 分析静止固定的支架
(土木/环境工程) 328
12.3 电阻电路中的电流和电压
(电气工程) 331
12.4 弹簧-质量块系统
(机械/航空航天工程) 333
习题 336
第3部分 结束语 351
PT3.4 权衡 351
PT3.5 重要的关系式与公式 352
PT3.6 高级方法与其他参考文献 353
第4部分 最优化 355
PT4.1 动机 356
PT4.1.1 非计算机方法
及其历史 356
PT4.1.2 最优化和工程实践 357
PT4.2 数学背景 361
PT4.3 导读 362
PT4.3.1 范围与预览 362
PT4.3.2 目标 363
第13章 一维无约束最优化 365
13.1 黄金分割搜索法 366
13.2 二次插值法 372
13.3 牛顿法 374
习题 375
第14章 多维无约束最优化 379
14.1 直接法 380
14.1.1 随机搜索法 380
14.1.2 单变量和模式检索 382
14.2 梯度法 384
14.2.1 梯度和赫赛矩阵 384
14.2.2 最速上升法 389
14.2.3 改进的梯度法 393
习题 395
第15章 约束优化 399
15.1 线性规划 399
15.1.1 标准形 399
15.1.2 图解法 401
15.1.3 单纯形法 404
15.2 非线性约束优化 409
15.3 使用软件包优化求解 410
15.3.1 用Excel求解线性
规划问题 410
15.3.2 用Excel求解非线性
优化问题 412
15.3.3 用MATLAB求解优化
问题 415
15.3.4 用IMSL求解优化问题 417
习题 420
第16章 最优化案例分析 425
16.1 一个桶的最小成本设计
(化学/生物工程) 425
16.2 废水处理的最小成本
(土木/环境工程) 429
16.3 电路的最大功率传输
(电气工程) 433
16.4 山地车设计
(机械/航空航天工程) 437
习题 438
第4部分 结束语 449
PT4.4 权衡 449
PT4.5 其他参考文献 450
第5部分 曲线拟合 451
PT5.1 动机 452
PT5.1.1 曲线拟合的非
计算机方法 452
PT5.1.2 曲线拟合与工程实践 453
PT5.2 数学背景 454
PT5.2.1 简单统计学 454
PT5.2.2 正态分布 457
PT5.2.3 置信区间估计 457
PT5.3 导读 463
PT5.3.1 范围与预览 463
PT5.3.2 目标 465
第17章 最小二乘回归 467
17.1 线性回归 467
17.1.1 “最佳”拟合准则 468
17.1.2 直线的最小二乘拟合 470
17.1.3 线性回归误差量化分析 472
17.1.4 线性回归的计算机程序 475
17.1.5 非线性关系的线性化 478
17.1.6 对线性回归的一般讨论 481
17.2 多项式回归 482
17.3 多元线性回归 485
17.4 一般线性最小二乘法 488
17.4.1 线性最小二乘的
一般矩阵形式 488
17.4.2 正规方程的求解方法 490
17.4.3 从统计角度分析
最小二乘理论 491
17.5 非线性回归 493
习题 497
第18章 插值 503
18.1 牛顿差商插值多项式 503
18.1.1 线性插值 504
18.1.2 二次插值 505
18.1.3 牛顿插值多项式的
一般形式 507
18.1.4 牛顿插值多项式的误差 510
18.1.5 牛顿插值多项式的
计算机算法 512
18.2 拉格朗日插值多项式 514
18.3 插值多项式的系数 518
18.4 逆插值 519
18.5 进一步讨论 520
18.6 样条插值 523
18.6.1 线性样条 523
18.6.2 二次样条 526
18.6.3 三次样条 529
18.6.4 三次样条的计算机算法 532
习题 533
第19章 傅里叶逼近 537
19.1 用正弦函数进行曲线拟合 538
19.2 连续傅里叶级数 544
19.3 频域与时域 548
19.4 傅里叶积分与变换 552
19.5 离散傅里叶变换(DFT) 554
19.6 快速傅里叶变换(FFT) 556
19.6.1 Sande-Tukey算法 557
19.6.2 Cooley-Tukey算法 561
19.7 能量谱 561
19.8 利用软件库和软件包进行
曲线拟合 562
19.8.1 Excel 562
19.8.2 MATLAB 566
19.8.3 IMSL 568
习题 571
第20章 曲线拟合案例分析 575
20.1 线性回归与人口模型
(化学/生物工程) 578
20.2 用样条估计热传递
(土木/环境工程) 580
20.3 傅里叶分析(电气工程) 581
20.4 实验数据分析
(机械/航空航天工程) 581
习题 583
第5部分 结束语 599
PT5.4 权衡 599
PT5.5 重要的关系式与公式 600
PT5.6 高级方法与其他参考文献 601
第6部分 数值微分和数值积分 603
PT6.1 动机 604
PT6.1.1 微分和积分的非
计算机方法 606
PT6.1.2 工程中的数值微分和
数值积分 609
PT6.2 数学背景 612
PT6.3 导读 615
PT6.3.1 范围与预览 615
PT6.3.2 目标 616
第21章 牛顿–柯特斯积分公式 619
21.1 梯形法则 621
21.1.1 梯形法则的误差 623
21.1.2 多应用型梯形法则 625
21.1.3 梯形法则的计算机算法 629
21.2 辛普森法则 631
21.2.1 辛普森1/3法则 631
21.2.2 多应用型辛普森
1/3法则 634
21.2.3 辛普森3/8法则 636
21.2.4 辛普森法则的计算机
算法 638
21.2.5 高阶牛顿-柯特斯闭型
公式 639
21.3 非等距积分 639
21.4 开型积分公式 642
21.5 重积分 643
习题 645
第22章 函数的积分 649
22.1 函数的牛顿-柯特斯算法 649
22.2 龙贝格积分 651
22.2.1 理查森外推法 651
22.2.2 龙贝格积分的算法 654
22.3 高斯求积公式 656
22.3.1 待定系数法 657
22.3.2 两点高斯-勒让德公式
的推导 658
22.3.3 多点公式 661
22.3.4 高斯求积公式的
误差分析 663
22.4 非正常积分 663
习题 666
第23章 数值微分 669
23.1 高精度微分公式 669
23.2 理查森外推法 672
23.3 非等距数据的微分 674
23.4 带误差数据的微分和积分 675
23.5 使用软件库和软件包计算
数值积分/微分 676
23.5.1 MATLAB 676
23.5.2 IMSL 678
习题 680
第24章 数值积分和数值微分
案例分析 685
24.1 利用积分确定总热量
(化学/生物工程) 685
24.2 竞赛帆船桅杆上的有效作用
力(土木/环境工程) 687
24.3 利用数值积分确定均方根电
流(电气工程) 690
24.4 利用数值积分计算功
(机械/航空航天工程) 692
习题 696
第6部分 结束语 711
PT6.4 权衡 711
PT6.5 重要的关系式与公式 712
PT6.6 高级方法与其他参考文献 713
第7部分 常微分方程 715
PT7.1 动机 716
PT7.1.1 求解常微分方程的
非计算机方法 717
PT7.1.2 常微分方程和
工程实践 718
PT7.2 数学背景 719
PT7.3 导读 721
PT7.3.1 范围与预览 722
PT7.3.2 目标 723
第25章 龙格–库塔法 725
25.1 欧拉方法 726
25.1.1 欧拉方法的误差分析 728
25.1.2 欧拉方法的算法 733
25.1.3 高阶泰勒级数方法 736
25.2 欧拉方法的改进 736
25.2.1 修恩法 736
25.2.2 中点方法 741
25.2.3 修恩法和中点方法的
计算机算法 743
25.2.4 小结 743
25.3 龙格-库塔法 744
25.3.1 二阶龙格–库塔法 744
25.3.2 三阶龙格–库塔法 749
25.3.3 四阶龙格–库塔法 749
25.3.4 高阶龙格–库塔法 751
25.3.5 龙格–库塔法的计算机
算法 753
25.4 方程组 753
25.4.1 欧拉方法 754
25.4.2 龙格-库塔法 755
25.4.3 求解常微分方程组的
计算机算法 756
25.5 自适应龙格-库塔法 758
25.5.1 自适应龙格-库塔或步长
-对分法 759
25.5.2 龙格-库塔-费尔贝格法 760
25.5.3 步长控制 762
25.5.4 计算机算法 763
习题 765
第26章 刚性和多步法 769
26.1 刚性 769
26.2 多步法 773
26.2.1 非自启动修恩方法 774
26.2.2 步长控制和计算机程序 781
26.2.3 求积公式 782
26.2.4 高阶多步法 788
习题 792
第27章 边值和特征值问题 795
27.1 边值问题的通用方法 796
27.1.1 打靶法 796
27.1.2 有限差分法 799
27.2 特征值问题 801
27.2.1 数学背景 801
27.2.2 物理背景 802
27.2.3 边值问题 804
27.2.4 多项式方法 807
27.2.5 乘幂法 809
27.2.6 其他方法 812
27.3 使用程序库和软件包求解常
微分方程和特征值问题 813
27.3.1 Excel 813
27.3.2 MATLAB 813
27.3.3 IMSL 817
习题 819
第28章 常微分方程案例分析 825
28.1 利用常微分方程分析反应堆
的瞬态反应(化学/生物工程) 825
28.2 追捕模型和混沌
(土木和环境工程) 831
28.3 模拟电路的瞬变电流
(电气工程) 834
28.4 摆动的钟摆
(机械/航空航天工程) 839
习题 842
第7部分 结束语 855
PT7.4 权衡 855
PT7.5 重要的关系式与公式 856
PT7.6 高级方法与其他参考文献 858
第8部分 偏微分方程 859
PT8.1 动机 860
PT8.1.1 偏微分方程和工程
实践 861
PT8.1.2 求解偏微分方程的非
计算机方法 863
PT8.2 导读 863
PT8.2.1 范围和与预览 863
PT8.2.2 目标 864
第29章 有限差分法:椭圆型方程 867
29.1 拉普拉斯方程 867
29.2 求解方法 869
29.2.1 拉普拉斯差分方程 870
29.2.2 李布曼方法 871
29.2.3 二级变量 873
29.3 边界条件 875
29.3.1 导数边界条件 875
29.3.2 不规则边界 878
29.4 控制体积法 881
29.5 求解椭圆型方程的软件 884
习题 885
第30章 有限差分法:抛物型方程 887
30.1 热传导方程 887
30.2 显式法 888
30.2.1 收敛性和稳定性 890
30.2.2 导数边界条件 891
30.2.3 高阶时间逼近 892
30.3 简单的隐式法 892
30.4 克兰克-尼科尔森法 895
30.5 二维空间上的抛物型方程 898
30.5.1 标准显式和隐式格式 898
30.5.2 ADI方法 899
习题 901
第31章 有限元法 905
31.1 通用方法 906
31.1.1 剖分 906
31.1.2 元素方程 906
31.1.3 装配 909
31.1.4 边界条件 909
31.1.5 求解 909
31.1.6 后处理 909
31.2 有限元法在一维情况下
的应用 909
31.2.1 剖分 911
31.2.2 元素方程 911
31.2.3 装配 916
31.2.4 边界条件 918
31.2.5 求解 918
31.2.6 后处理 918
31.3 二维问题 919
31.3.1 剖分 919
31.3.2 元素方程 919
31.3.3 边界条件和装配 921
31.3.4 求解和后处理 921
31.4 使用程序库和软件包求解
偏微分方程 922
31.4.1 Excel 922
31.4.2 MATLAB 924
31.4.3 IMSL 925
习题 928
第32章 偏微分方程案例分析 931
32.1 反应堆的一维质量守恒
(化学/生物工程) 931
32.2 平板的挠曲(土木/环境工程) 935
32.3 二维静电场问题(电气工程) 937
32.4 用有限元法求解弹簧系统
(机械/航空航天工程) 940
习题 944
第8部分 结束语 947
PT8.3 权衡问题 949
PT8.4 重要的关系式与公式 949
PT8.5 高级方法与其他参考文献 950
附录A 傅里叶级数 951
附录B 学习使用MATLAB 953
参考文献 961