新書推薦:
《
夺回大脑 如何靠自己走出强迫
》
售價:NT$
299.0
《
夏天,19岁的肖像(青鲤文库)岛田庄司两次入围日本通俗文学奖直木奖的作品 ,同名电影由黄子韬主演!
》
售價:NT$
225.0
《
图解机械工程入门
》
售價:NT$
440.0
《
股市长线法宝(第6版)
》
售價:NT$
640.0
《
中文版SOLIDWORKS 2024机械设计从入门到精通(实战案例版)
》
售價:NT$
450.0
《
纯数学教程
》
售價:NT$
390.0
《
威尔士史:历史与身份的演进
》
售價:NT$
490.0
《
黄金、石油和牛油果:16件商品中的拉丁美洲发展历程
》
售價:NT$
395.0
編輯推薦:
我们正处在一个信息技术高速发展的时代,大数据与人工智能推动着传统技术的智能化变革,对科学和工程技术人员的理论素养与实践能力的要求越来越高。在此技术变革时代背景下,一名合格的技术人员在学术界和工程界立身的基础就是能够发现和分析问题,以及掌握解决问题的工程实践手段。
Python是目前能最大限度地满足这种需求的语言之一, 它具有易学易懂、胶水语言的灵活性及丰富的第三方支持库特性,是技术人员入门、进阶的利器,几乎可满足当前学术界和工程界各个领域的需求。但令人遗憾的是,目前市面上很少有书籍提供从发现和分析问题到工程实践的完整解决方案。本书可满足在校学生在理论和算法学习方面的需求,并提供详细的源代码:按照从相关概念定义、理论分析、算法实现再到源代码示例的逻辑撰写,介绍Python在数值计算中的应用。本书译者充分结合自身在计算理论与工程实践方面的丰富经验,保证了相关理论知识与编程技巧的正确传达。
內容簡介:
《Python应用数值方法——解决工程和科学问题》是为想要学习和应用数值方法来解决工程和科学问题的学生撰写的。书中提供了足够丰富的理论知识。如果读过本书的姊妹篇《工程与科学数值方法的MATLAB实现(第4版)》,就会发现过渡到Python程序是无缝的!不需要事先具有Python编程经验。 本书以解决问题为导向,强调理论联系实际。各章均引入实际的工程和科学问题,提供从相关概念定义、理论分析到算法实现的全套解决方案。每章末尾安排有课后习题,方便读者在巩固所学知识的同时,进一步提升自己编写代码和解决问题的水平。
關於作者:
StevenC.Chapra是塔夫茨大学土木与环境工程系名誉教授和Louis Berger讲座教授。他的其他著作包括Surface Water-QualityModeling、《工程数值方法(第6版)》和《工程与科学数值方法的MATLAB实现(第4版)》。Steven博士获得曼哈顿学院和密歇根大学的工程学学位。主要研究方向为地表水质建模和环境工程中的高级计算机应用。Steven是ASCE(美国土木工程学会)的院士和终身会员,并因学术贡献获得多个奖项,包括鲁道夫·赫林奖以及梅利亚姆·威利杰出作家奖。Steven还被公认为得克萨斯农工大学、科罗拉多大学和塔夫茨大学工程系的杰出教师和顾问。
David E. Clough于1975年加入科罗拉多大学化学与生物工程系。他于2017年从科罗拉多退休,后担任名誉教授。David博士获得了凯斯西储大学和科罗拉多大学的化学工程学位。他在应用计算、过程自动化和各种过程建模方面拥有丰富经验,重点研究的课题包括聚合、高温催化反应器、流化床、明渠流、生物医学仪器和太阳能热反应器。
目錄 :
第 I 部分 建模、计算机和误差分析
第1章 数学建模、数值方法和问题
求解 3
1.1 一个简单的数学模型 4
1.2 工程与科学中的守恒定律 9
1.3 本书所涉及的数值方法 11
1.4 案例研究:自由落体 12
习题 14
第2章 Python基础 24
2.1 Spyder/IPython运行环境 25
2.2 赋值 26
2.2.1 标量 26
2.2.2 数组、向量和矩阵 27
2.2.3 下标和下标的范围 30
2.2.4 arange、linspace和logspace函数 30
2.2.5 字符串 31
2.3 数学运算 33
2.4 使用内置函数 37
2.5 制图 41
2.6 其他资源 47
2.7 案例研究:探索性数据分析 48
习题 51
第3章 Python编程 57
3.1 Python脚本文件 58
3.1.1 Python脚本 58
3.1.2 Python函数 59
3.1.3 变量作用域 61
3.2 输入和输出 63
3.3 结构化编程 66
3.3.1 决策流程 66
3.3.2 关于参数的更多信息 70
3.3.3 循环 71
3.4 嵌套和缩进 76
3.5 带有函数名称参数的Python函数 79
3.5.1 lambda函数 79
3.5.2 函数-函数 80
3.5.3 参数传递 83
3.6 案例研究:蹦极者的速度计算 85
习题 88
第4章 舍入和截断误差 100
4.1 误差 100
4.1.1 准确度和精确度 101
4.1.2 误差定义 101
4.1.3 迭代计算的计算机算法 104
4.2 舍入误差 106
4.2.1 计算机中数字的表示法 106
4.2.2 计算机中数字的算术运算 111
4.3 截断误差 113
4.3.1 泰勒级数 113
4.3.2 泰勒级数式的余数 116
4.3.3 使用泰勒级数估计截断误差 118
4.3.4 数值微分 118
4.4 总数值误差 122
4.4.1 数值微分的误差分析 122
4.4.2 数值误差的控制 125
4.5 错误、模型误差和数据不确定性 125
4.5.1 错误 125
4.5.2 模型误差 126
4.5.3 数据不确定性 126
习题 126
第Ⅱ部分 求根和最优化
第5章 求根:交叉法 133
5.1 工程和科学应用中的求根问题 133
5.2 图形和试错法 134
5.3 交叉法和初步猜测 137
5.4 二分法 140
5.5 试位法 146
5.6 案例研究:温室气体和雨水 148
习题 152
第6章 根:开型法 159
6.1 不动点迭代 160
6.2 韦格斯坦法 164
6.3 牛顿-拉夫逊法 168
6.4 正割法 174
6.5 布伦特法 175
6.5.1 逆二次插值法 175
6.5.2 布伦特法的算法 177
6.6 Python SciPy函数:brentq 179
6.7 多项式 180
6.8 案例研究:管道摩擦 183
习题 188
第7章 优化 198
7.1 背景介绍 199
7.2 一维优化 201
7.2.1 黄金分割搜索 201
7.2.2 抛物线插值 207
7.2.3 Python的SciPy函数:
minimize_scalar 208
7.3 多维优化 210
7.4 案例研究:平衡和最小势能 212
习题 214
第Ⅲ部分 线性方程组
第8章 线性代数方程与矩阵 226
8.1 矩阵代数概述 227
8.1.1 矩阵符号 228
8.1.2 矩阵运算规则 229
8.1.3 用矩阵形式表示线性代数方程 237
8.2 用Python求解线性代数方程 238
8.3 案例研究:电路中的电流和
电压 240
习题 243
第9章 高斯消元法 249
9.1 求解少量方程 249
9.1.1 图解法 250
9.1.2 行列式和克莱默法则 251
9.1.3 消除未知数法 253
9.2 朴素高斯消元法 254
9.2.1 Python函数:gaussnaive 256
9.2.2 运算计数 258
9.3 主元 260
9.3.1 Python函数:gausspivot 261
9.3.2 用高斯消元法求行列式 262
9.4 三对角方程组 263
9.5 案例研究:加热棒模型 265
习题 268
第10章 LU因式分解法 275
10.1 LU分解法概述 275
10.2 LU分解的高斯消元 276
10.2.1 涉及主元消元的LU分解 279
10.2.2 应用Python的LU分解法 281
10.3 乔里斯基分解法 282
10.4 Python的np.linalg.solve函数 284
习题 285
第11章 矩阵的逆和条件 287
11.1 矩阵的逆 287
11.1.1 计算逆矩阵 287
11.1.2 刺激-响应计算 289
11.2 错误分析和系统状态 290
11.2.1 向量和矩阵范数 291
11.2.2 矩阵条件数 292
11.2.3 用Python计算范数和
条件数 293
11.3 案例研究:室内空气污染 294
习题 297
第12章 迭代法 302
12.1 线性方程组:高斯-赛德尔法 302
12.1.1 收敛性和对角优势 304
12.1.2 Python函数:gaussseide1 304
12.1.3 松弛 306
12.2 非线性系统 307
12.2.1 逐次代换法 307
12.2.2 牛顿-拉夫逊法 309
12.2.3 Python SciPy函数:root 313
12.3 案例研究:化学反应 314
习题 316
第13章 特征值 321
13.1 特征值和特征向量——
基础知识 322
13.2 特征值和特征向量的应用 324
13.2.1 二阶微分方程的一阶等价
方程 325
13.2.2 特征值和特征向量在微分
方程解中的作用 325
13.2.3 特征值和纯振荡的常微分
方程 326
13.3 物理场景-质量-弹簧系统 329
13.4 幂法 331
13.5 Python NumPy函数:eig和
eigvals 333
13.6 案例研究:特征值与地震 334
习题 338
第Ⅳ部分 曲线拟合
第14章 直线线性回归 346
14.1 统计学回顾 347
14.1.1 描述性统计 347
14.1.2 正态分布 351
14.1.3 使用Python进行描述性统计 354
14.2 随机数和模拟 357
14.2.1 均匀分布中的随机数 357
14.2.2 正态分布中的随机数 359
14.3 直线最小二乘回归 361
14.3.1 “最佳”拟合的标准 362
14.3.2 直线的最小二乘拟合 363
14.3.3 绘制直线的“荒岛”法 365
14.3.4 线性回归误差的量化 365
14.4 非线性关系的线性化 370
14.5 计算机应用 375
14.5.1 Python函数:strlinregr 375
14.5.2 Python NumPy函数:
polyfit和polyval 378
14.6 案例研究:酶动力学 379
习题 382
第15章 一般线性回归和非线性回归 393
15.1 多项式回归 393
15.2 多元线性回归 397
15.3 一般线性最小二乘回归 399
15.4 回归中的模型建立与选择 403
15.5 非线性回归 409
15.6 案例研究:拟合实验数据 414
习题 417
第16章 傅里叶分析 424
16.1 用正弦函数进行曲线拟合 425
16.2 连续傅里叶级数 430
16.3 频域和时域 432
16.4 傅里叶积分和变换 435
16.5 离散傅里叶变换(DFT) 435
16.5.1 快速傅里叶变换(FFT) 436
16.5.2 Python SciPy函数:fft 437
16.6 功率谱 439
16.7 案例研究:太阳黑子 440
习题 442
第17章 多项式插值法 446
17.1 插值法简介 447
17.1.1 确定多项式系数 447
17.1.2 Python NumPy函数:
polyfit和polyval 449
17.2 牛顿插值多项式 449
17.2.1 线性插值 449
17.2.2 二次插值 451
17.2.3 牛顿插值多项式的一般形式 452
17.2.4 Python函数Newtint 454
17.3 拉格朗日插值多项式 455
17.4 逆插值 458
17.5 外推法和振荡 458
17.5.1 外推法 458
17.5.2 振荡 461
习题 463
第18章 样条和分段插值 469
18.1 样条简介 469
18.2 线性样条 471
18.3 二次样条 477
18.4 三次样条 478
18.4.1 三次样条的推导 479
18.4.2 末端条件 482
18.5 Python中的分段插值 483
18.5.1 Python SciPy模块的interpolate
函数:CubicSpline 485
18.5.2 附加的Python SciPy插值函数:
interp1d和PchipInterpolator 487
18.6 多维插值 488
18.6.1 双线性插值 489
18.6.2 Python中的多维插值 490
18.7 数据序列的平滑 491
18.7.1 三次样条平滑 491
18.7.2 LOESS平滑法 494
18.8 案例研究:湖中的热传导 499
习题 501
第Ⅴ部分 微积分
第19章 数值积分方程 511
19.1 背景简介 512
19.1.1 什么是积分 512
19.1.2 工程与科学中的积分 512
19.2 牛顿-科特斯方程 514
19.3 梯形法则 516
19.3.1 梯形法则的误差 516
19.3.2 复合梯形法则 517
19.3.3 Python函数:trap 520
19.4 辛普森法则 521
19.4.1 辛普森1/3 法则 521
19.4.2 复合辛普森1/3法则 522
19.4.3 辛普森3/8法则 524
19.5 高阶牛顿-科特斯方程 526
19.6 不等段积分 526
19.6.1 Python函数:trapuneq 527
19.6.2 Python函数:trapz和
trap_cumulative 528
19.7 开放式方法 530
19.8 多重积分 531
19.9 案例研究:数值积分的计算 533
习题 536
第20章 函数的数值积分 543
20.1 简介 543
20.2 Romberg积分 544
20.2.1 Richardson外推 544
20.2.2 Romberg积分算法 546
20.3 高斯求积法 548
20.3.1 待定系数法 548
20.3.2 两点高斯-勒让德公式的推导 550
20.3.3 高点公式 552
20.4 自适应求积法 553
20.4.1 Python函数:quadadapt 553
20.4.2 Python SciPy积分函数:
quad 555
20.5 案例研究:均方根电流 556
习题 559
第21章 数值导数 565
21.1 背景简介 566
21.1.1 什么是导数 566
21.1.2 工程与科学的导数 567
21.2 高精度导数公式 568
21.3 Richardson 外推法 571
21.4 不等间距数据的导数 572
21.5 有误差数据的导数和积分 573
21.6 偏导数 574
21.7 Python数值求导 574
21.7.1 Python NumPy函数:diff 574
21.7.2 Python NumPy函数:
gradient 577
21.8 案例研究:场的可视化 579
习题 580
第Ⅵ部分 常微分方程
第22章 初值问题 594
22.1 概述 595
22.2 欧拉法 595
22.2.1 欧拉法的误差分析 597
22.2.2 欧拉法的稳定性 598
22.2.3 Python函数:eulode 599
22.3 改进欧拉法 601
22.3.1 Heun方法 601
22.3.2 中点法 604
22.4 Runge-Kutta方法 605
22.4.1 二阶Runge-Kutta法 605
22.4.2 经典四阶 Runge-Kutta法 606
22.5 方程组 608
22.5.1 欧拉法 609
22.5.2 Runge-Kutta法 610
22.5.3 Python 函数:rk4sys 611
22.6 案例研究:捕食者—猎物
模型和变体 614
习题 618
第23章 自适应方法和刚性系统 625
23.1 自适应Runge-Kutta方法 625
23.1.1 RKF 4/5算法的Python函数:
rkf45 626
23.1.2 求解IVP ODE的Python函数:
SciPy solve_ivp积分函数 630
23.1.3 事件 633
23.2 多步法 636
23.2.1 非自启动Heun方法 636
23.2.2 误差估计 638
23.3 刚度 639
23.4 Python 应用:带绳的蹦极者 644
23.5 案例研究:普林尼的间歇喷泉 646
习题 649
第24章 边值问题 659
24.1 背景简介 660
24.1.1 什么是边值问题 660
24.1.2 工程和科学中的边值问题 660
24.2 打靶法 663
24.2.1 导数边界条件 665
24.2.2 非线性常微分方程的打靶法 667
24.3 有限差分法 669
24.3.1 导数边界条件 671
24.3.2 非线性 ODE 的有限差分
方法 673
24.4 Python函数:solve_bvp 674
习题 676
—扫封底二维码下载以下内容—
附录A Matplotlib 685
附录B 三次样条平滑 705
附录C Python内置关键字:函数、方法、
操作符、类型 710
附录D 书中用到的Python函数和脚本 713
参考文献 715
內容試閱 :
20世纪60年代,当我们作为学生首次学习使用计算机时,FORTRAN是工程和科学计算的首选语言。在接下来的半个世纪里,许多语言已被证明可用于实现研究和教学中非常有价值的数值计算;随着一系列FORTRAN改进版本的出现,ALGOL、BASIC、Pascal和C/C 等语言都进入了我们的计算工具箱。
这种演变存在的一个缺点是,这些语言中的大多数缺乏完全集成的数值算法库,无法让程序员利用大多数工程和科学应用所需的大量“工业实力”算法。
1984年,MathWorks公司通过引入一个完全集成、多范式的数值计算环境和名为MATLAB(MATrix LABoratory)的高级编程语言,弥补了这一缺陷。除了程序编程,MATLAB还允许绘图、创建用户界面,以及与其他语言进行交互。但最重要的是,MATLAB及其补充工具箱拥有庞大的内置函数和工具箱,使程序员能应用最先进的数值方法,而不必从头开发代码。
虽然MATLAB提供了高质量和功能强大的计算环境,但它的缺点是相对昂贵。尽管对于许多大学等大型组织而言,这通常可以忽略,但我们观察到,较小的咨询公司、地方政府、个人甚至像公司这样的一些大型实体都在考虑减少费用,因此需要一种成本更低的替代方案。
说到Python,Python由Guido van Rossum创建并于1991年首次发布,是一个多范式的开源计算环境,可以随时访问强大的数值例程,可供任何个人或组织免费使用。此外,它得到了良好的管理和维护,因此,它正成为越来越受欢迎的MATLAB替代品。
由于Python在工程和科学教育中的应用越来越广泛,我们决定撰写这本教科书来支持一个为期一学期的数值方法课程。课程是为那些想要学习和使用数值方法解决工程和科学问题的学生而写的。因此,这些方法是由问题(而非数学)驱动的,能提供足够的理论,让学生能深入了解相关技术及其缺点。
Python为此类课程提供了一个很好的环境,因为它很好地将高级编程语言与强大的内置数值功能相结合,以允许学生以结构化和连贯的风格实现中等复杂的算法,同时其数值能力使学生能够解决更难的问题,而不必全盘重来。
本书的基本内容、组织和教学方法与其他数值方法教科书类似,特别是,为使本书更容易阅读,有意保持对话式写作风格。本书试图直接与读者对话,部分目的是成为自学工具,因此,相信它在课堂之外对希望熟练掌握数值方法和Python的专业人士也有价值。
我们努力使本书保留有助于教学的功能,包括广泛使用实例和工程科学应用,最重要的是,让解释简单实用,以使本书尽可能“对学生友好”。
我们在这里澄清,本书内容不是深入讲授Python程序语言,而且之前不需要有Python方面的经验。我们提供了足够的Python编程背景,以方便数值方法的实现,使用归纳法让学生能够通过应用及时学习Python的各个方面,并逐渐将这些经验推广以提升对语言的熟悉程度;本书提供了许多Python代码示例,能为学生提供自己的代码开发模式。我们特意选择了Spyder集成开发环境,因为它提供一个相对友好的界面,包括许多类似MATLAB的功能,其中包括命令窗口、编辑器、变量资源管理器、调试工具和有用的帮助界面。精通Python的程序员可能会对我们漏掉一些功能感到失望,但我们强调要关注本书的主要目的:通过学习数值方法来增强STEM(科学、技术、工程、数学)学生的能力。
本书通过介绍如何解决数值问题来增强学生的能力。我们相信,热爱工程和科学、问题解决、数学和编程的学生,最终会成为更好的专业人士,如果本书能够激发人们对这些主题的热情和欣赏,我们认为这种努力是成功的。
McGraw Hill提供的个性化学习工具
读者可根据需要访问mhhe.com/collegesmarter(800.331.5094)来获取McGraw Hill公司提供的一些在线服务。
proctorio
由connect中的proctorio托管的远程监考和浏览器锁定功能,通过启用安全选项和验证学生的身份,提供了对评估环境的控制。
这些服务与connect无缝集成,使教师能限制浏览器活动、记录学生活动以及验证学生是否在完成自己的作业。
及时而详细的报告让教师对潜在的学术诚信问题一目了然,从而避免个人偏见,支持基于证据的主张。
随时随地阅读 使用McGraw-Hill的免费ReadAnywhere应用程序,在方便的时候阅读或学习。ReadAnywhere可用于iOS或Android智能手机或平板电脑,让用户访问McGraw-Hill工具,包括eBook和SmartBook 2.0或connect中的自适应学习作业。用户可在离线状态下记笔记、突出显示和完成作业。当你使用WiFi访问打开应用程序时,所有工作都将同步。使用你的McGraw Hill connect用户名和密码登录,随时随地开始学习!
Tegrity:全天候讲座 connect中的Tegrity是一个工具,通过自动捕获每堂课,使课堂时间全天候可用。通过简单的一键启动和停止过程,可以一种易于搜索的格式捕获所有计算机屏幕和相应的音频。
学生可在PC、Mac、iPod或其他移动设备上通过易于使用、基于浏览器的界面来重播任何课程的任何部分。
教育工作者知道,学生能看到、听到和体验到的课堂资源越多,学习效果就越好。事实上,研究证明了这一点。Tegrity独特的搜索功能可帮助学生在需要的时候,在整个学期的课堂录音中高效地找到他们需要的东西。有了Tegrity,还可通过减轻学生对笔记的担忧来提高专注度和课堂参与度。在connect中使用Tegrity将使你更有可能看到学生的脸,而不是他们的头顶。
connect中的Test Builder Test Builder是一个基于云的工具,可在connect中提供。使教师能够格式化测试,这些测试可以在学习管理系统中打印、管理,或作为测试库的Word文档导出。Test Builder提供了一个现代化的、精简的界面,无须下载。
Test Builder允许你:
● 从特定标题访问所有测试库内容。
● 通过强大的过滤选项,轻松定位最相关的内容。
● 操纵问题的顺序或重排问题和/或答案。
● 将问题固定到测试中的特定位置。
● 确定你对算法问题的首选处理方式。
● 选择布局和间距。
● 添加说明并配置默认设置。
Test Builder提供了一个安全的界面,以更好地保护内容,并允许及时更新内容。
写作作业 在connect和connect Master中,Writing Assignment(写作作业)工具提供了一种学习体验,帮助学生提高书面沟通技能并加深对概念的理解。作为一名教师,你可以更有效地分配、监控和提供写作反馈,并给出评分。
用你的方式写书 McGraw-Hill的由Create提供支持的内容集是一个自助网站,它使教师能够利用McGraw-Hill的全面、跨学科内容创建定制课程材料和电子书。从我们的高质量教科书、文章和案例中选择你想要的,快速轻松地将其与自己的内容相结合,并利用其他受版权保护的第三方内容,如案例和文章。内容可以最适合你的课程的方式安排,你还可添加课程名称和信息。为你的课程选择最佳格式:彩色打印、黑白打印或电子书。电子书可以包含在你的connect课程中,也可在免费的ReadAnywhere应用程序中使用,用于智能手机或平板电脑访问。完成定制后,你将在几分钟内收到一份免费的数字副本供查看!访问McGraw Hill Create——www.mcgrawhillcreate.com——从今天开始创建!