书籍详情

科学计算基础编程(第五版 Python版 )

科学计算基础编程(第五版 Python版 )

作者:汉斯.佩特.兰坦根 著

出版社:清华大学出版社

出版时间:2020-06-01

ISBN:9787302549437

定价:¥128.00

购买这本书可以去
内容简介
  本书通过数学和自然科学中的计算例子来讲授计算机程序设计。选择语法简单紧凑且功能强大的Python语言作为编程语言。本书关注于问题的计算求解过程,而不是程序语言细节,书中使用了大量的案例,并专注问题定义、分析和程序求解以及程序正确性验证。通过本书的学习,读者将能使用程序员的方式进行思考,并能写出正确优质的程序。
作者简介
  张春元,国防科技大学计算机学院副院长,博士,教授,博士生导师,计算机体系结构专家,学术带头人,著有《计算机体系结构》等教材。 毛晓光,国防科技大学计算机学院计算机系副主任,博士,教授,博士生导师,著有《离散数学》等教材。
目录
目录
第1章公式的计算1
1.1编程计算: 个公式1
1.1.1用程序作计算器1
1.1.2程序和编程2
1.1.3编写程序的工具2
1.1.4个Python程序3
1.1.5输入程序文本时的警告3
1.1.6验证结果4
1.1.7变量4
1.1.8变量名4
1.1.9Python中的保留字5
1.1.10注释5
1.1.11指定文字和数字的输出格式6
1.2计算机专业术语9
1.3计算另一个公式: 摄氏度与华氏度的转换12
1.3.1容易被忽略的错误: 整数除法12
1.3.2Python中的对象13
1.3.3避免整数除法14
1.3.4算术运算符和优先级15
1.4求标准数学函数的值15
1.4.1示例: 使用平方根函数15
1.4.2示例: 计算sinh x17
1.4.3初窥舍入误差17
1.5交互式计算18
1.5.1使用Python shell18
1.5.2类型转换19
1.5.3IPython20
1.6复数23
1.6.1Python中的复数运算23
1.6.2Python中的复函数24
1.6.3实数函数与复数函数的统一处理25
1.7符号计算26
1.7.1基本的微分和积分26
1.7.2方程求解27
1.7.3泰勒级数和其他28
1.8本章小结28
1.8.1本章主题28
1.8.2示例: 球的轨迹31
1.8.3关于本书中的排版约定32
1.9习题33
第2章循环与列表41
2.1while循环41
2.1.1直接的方法41
2.1.2while循环42
2.1.3布尔表达式43
2.1.4示例: 累加求和45
2.2列表46
2.2.1列表的基本操作46
2.2.2for循环48
2.3列表和循环的替代实现50
2.3.1用while循环实现for循环50
2.3.2Range结构50
2.3.3用for循环对列表索引进行迭代51
2.3.4修改列表元素52
2.3.5列表推导式53
2.3.6同时遍历多个列表53
2.4嵌套列表54
2.4.1表格: “行”或“列”构成的列表54
2.4.2打印对象55
2.4.3提取子列表56
2.4.4遍历嵌套列表58
2.5元组60
2.6本章小结61
2.6.1本章主题61
2.6.2示例: 分析列表数据64
2.6.3如何找到更多的Python信息66
2.7习题67
第3章函数与分支74
3.1函数74
3.1.1数学函数作为Python函数74
3.1.2了解程序执行过程75
3.1.3局部变量和全局变量76
3.1.4多参数78
3.1.5使用函数参数还是全局变量79
3.1.6非数学函数79
3.1.7返回多个值80
3.1.8求和81
3.1.9无返回值82
3.1.10关键字参数84
3.1.11文档字符串85
3.1.12函数作为函数的参数87
3.1.13主程序89
3.1.14lambda函数89
3.2分支90
3.2.1ifelse语句90
3.2.2内嵌if语句92
3.3混合循环、分支、函数的生物信息学应用示例93
3.3.1DNA字符串中的字母计数93
3.3.2效率评估96
3.3.3验证实现98
3.4本章小结99
3.4.1本章主题99
3.4.2示例: 数值积分100
3.5习题104
第4章用户输入和错误管理120
4.1提出问题和读入应答120
4.2从命令行读取121
4.2.1在命令行上提供输入121
4.2.2可变数量的命令行参数122
4.2.3关于命令行参数的进一步理解123
4.3将用户文本转换为活跃对象123
4.3.1神奇的eval函数124
4.3.2神奇的exec函数127
4.3.3将字符串表达式转换为函数129
4.4命令行上的参数名值对130
4.4.1argparse模块的基本用法130
4.4.2将数学表达式作为值131
4.5从文件中读取数据133
4.5.1逐行读取文件134
4.5.2其他读取文件的方法135
4.5.3读取文本和数字的混合文件137
4.6将数据写入文件138
4.6.1示例: 将表格写入文件139
4.6.2标准输入和输出作为文件对象140
4.6.3文件到底是什么142
4.7错误处理144
4.7.1异常处理145
4.7.2产生异常148
4.8图形化的用户界面150
4.9制作模块151
4.9.1示例: 银行存款利息152
4.9.2将函数收集在模块文件中153
4.9.3测试块153
4.9.4验证模块代码155
4.9.5获取输入数据156
4.9.6模块中的文档字符串158
4.9.7使用模块158
4.9.8发布模块161
4.9.9使软件在互联网上可用161
4.10Python 2和Python 3的代码162
4.10.1Python 2和Python 3的基本差异162
4.10.2将Python 2代码转换为Python 3代码163
4.11本章小结165
4.11.1本章主题165
4.11.2示例: 二分查找168
4.12习题175
第5章数组计算和曲线绘图182
5.1向量182
5.1.1向量的概念182
5.1.2向量的数学运算183
5.1.3向量算术和向量函数184
5.2Python程序中的数组185
5.2.1用列表来收集函数数据185
5.2.2Numerical Python的数组基础186
5.2.3计算坐标和函数值187
5.2.4向量化188
5.3绘制函数曲线190
5.3.1用Matplotlib实现MATLAB风格的绘图190
5.3.2Matplotlib和Pyplot前缀194
5.3.3SciTools和Easyviz195
5.3.4制作动画200
5.3.5制作视频204
5.3.6用文本字符绘制曲线205
5.4绘制高难度函数206
5.4.1分段定义函数206
5.4.2快速变化函数208
5.5更高级的函数向量化209
5.5.1StringFunction对象向量化209
5.5.2Heaviside函数向量化210
5.5.3帽状函数向量化213
5.6Numerical Python数组深入剖析215
5.6.1复制数组215
5.6.2原地运算216
5.6.3数组分配217
5.6.4广义索引217
5.6.5数组类型检测218
5.6.6数组生成的紧凑语法219
5.6.7形状操作219
5.7数组的高性能计算219
5.7.1标量实现方式220
5.7.2向量化实现方式221
5.7.3节省内存的实现方式221
5.7.4内存使用分析222
5.7.5CPU时间分析223
5.8高维数组224
5.8.1矩阵与数组224
5.8.2Python的二维数值数组225
5.8.3数组计算228
5.8.4矩阵对象228
5.9一些常见的线性代数运算229
5.9.1逆、行列式和特征值229
5.9.2乘积230
5.9.3范数230
5.9.4和与极值230
5.9.5索引232
5.9.6转置和上/下三角部分232
5.9.7求解线性方程组233
5.9.8矩阵的行列操作233
5.9.9计算矩阵的秩234
5.9.10符号化线性代数235
5.10绘制标量和向量场237
5.10.1安装237
5.10.2曲面绘图238
5.10.3参数化曲线239
5.10.4等高线239
5.10.5梯度向量场240
5.11Matplotlib240
5.11.1曲面绘图241
5.11.2等高线绘图241
5.11.3向量场绘图243
5.12Mayavi243
5.12.1曲面绘图244
5.12.2等高线绘图245
5.12.3向量场绘图247
5.12.4一个3D标量场及其梯度场247
5.12.5动画249
5.13本章小结249
5.13.1本章主题249
5.13.2示例: 动画函数251
5.14习题254
第6章字典与字符串269
6.1字典269
6.1.1创建字典269
6.1.2字典操作270
6.1.3示例: 多项式作为字典271
6.1.4具有默认值和排序的字典273
6.1.5示例: 在字典中存储文件数据276
6.1.6示例: 在嵌套字典中存储文件数据277
6.1.7示例: 读取和绘制在特定日期记录的数据281
6.2字符串285
6.2.1字符串常见操作285
6.2.2示例: 读取数值对289
6.2.3示例: 读取坐标292
6.3从网页读取数据294
6.3.1关于网页294
6.3.2如何编程访问网页295
6.3.3示例: 读取纯文本文件296
6.3.4示例: 从HTML提取数据298
6.3.5处理非英文文本298
6.4读写电子表格文件301
6.4.1CSV文件301
6.4.2读取CSV文件302
6.4.3处理电子表格数据303
6.4.4写入CSV文件303
6.4.5用Numerical Python数组表示数值单元格304
6.4.6使用更高级的Numerical Python功能305
6.5分析DNA的示例306
6.5.1计算频率306
6.5.2分析频率矩阵313
6.5.3寻找碱基频率315
6.5.4将基因转换成蛋白质318
6.5.5有的人可以喝牛奶,而有的人则不能323
6.6编写兼容Python 2和Python 3的代码324
6.6.1Python 2和Python 3之间更多的差异324
6.6.2将Python 2代码转换成Python 3代码325
6.7本章小结325
6.7.1本章主题325
6.7.2示例: 文件数据库328
6.8习题331
第7章Python类简介337
7.1简单函数类337
7.1.1挑战: 带参数的函数337
7.1.2将函数表示为类339
7.1.3self 变量343
7.1.4另一个函数类的例子344
7.1.5另一种函数类的实现345
7.1.6无构造方法的类347
7.1.7闭包349
7.2更多关于类的例子350
7.2.1银行账户350
7.2.2电话簿352
7.2.3圆354
7.3特殊方法355
7.3.1call特殊方法355
7.3.2示例: Automagic差分356
7.3.3示例: Automagic积分360
7.3.4将实例转换为字符串362
7.3.5使用特殊方法的电话簿363
7.3.6支持加法的对象364
7.3.7示例: 多项式的类364
7.3.8多项式的精美打印367
7.3.9算术运算和其他特殊方法369
7.3.10字符串转换的特殊方法369
7.4示例: 平面中向量的类371
7.4.1对向量的一些数学运算371
7.4.2实现371
7.4.3用法373
7.5示例: 复数类374
7.5.1实现374
7.5.2非法操作376
7.5.3复数与实数混合运算376
7.5.4动态类型、静态类型、强类型、弱类型和Duck类型377
7.5.5应用于右操作数的特殊方法378
7.5.6检查实例379
7.6静态方法和属性380
7.7本章小结381
7.7.1本章主题381
7.7.2示例: 区间运算383
7.8习题387
第8章随机数和简单的游戏401
8.1生成随机数401
8.1.1种子401
8.1.2均匀分布的随机数402
8.1.3可视化分布情况402
8.1.4随机数生成的向量化403
8.1.5计算平均值和标准差404
8.1.6高斯或正态分布406
8.2生成整数407
8.2.1随机整数函数407
8.2.2示例: 投掷骰子408
8.2.3根据列表生成随机数410
8.2.4示例: 从整副牌中选牌411
8.2.5示例: 牌的类实现413
8.3计算概率416
8.3.1蒙特卡罗模拟的原理416
8.3.2示例: 投掷骰子416
8.3.3示例: 从帽子中取球419
8.3.4基因的随机变异421
8.3.5示例: 限制人口增长的政策426
8.4简单游戏428
8.4.1猜数字428
8.4.2掷两个骰子429
8.5蒙特卡罗积分432
8.5.1蒙特卡罗积分的推导432
8.5.2标准蒙特卡罗积分的实现433
8.5.3通过随机点来计算区域面积437
8.6单维度的随机游走438
8.6.1基本实现438
8.6.2可视化439
8.6.3以差分方程表示随机游走439
8.6.4计算粒子位置的统计量440
8.6.5向量化实现440
8.7两维度的随机游走442
8.7.1基本实现442
8.7.2向量化实现443
8.8本章小结444
8.8.1本章主题444
8.8.2示例: 随机增长446
8.9习题451
第9章面向对象编程463
9.1继承与类层次 463
9.1.1Line类463
9.1.2初试Parabola类464
9.1.3使用继承的Parabola类464
9.1.4检查类之类型466
9.1.5属性与继承: hasa与isa关系467
9.1.6将超类作为接口468
9.2数值微分类470
9.2.1计算微分的类470
9.2.2验证472
9.2.3构建灵活的主程序474
9.2.4扩展475
9.2.5基于函数的实现478
9.2.6基于函数式编程的实现478
9.2.7由单个类实现的数值微分方法479
9.3数值积分类481
9.3.1数值积分方法481
9.3.2用于积分的类481
9.3.3验证485
9.3.4使用类层次486
9.3.5关于面向对象编程488
9.4用于绘图的类489
9.4.1使用对象集合489
9.4.2几何对象的类的例子497
9.4.3通过递归增强功能501
9.4.4对图形进行缩放、平移和旋转504
9.5用于DNA分析的类506
9.5.1表示区域的类506
9.5.2表示Gene的类507
9.5.3子类512
9.6本章小结513
9.6.1本章主题513
9.6.2示例: 输入数据读取器514
9.7习题519
附录A数列和差分方程526
A.1用差分方程构建数学模型526
A.1.1利息计算527
A.1.2用差分方程处理阶乘问题529
A.1.3斐波那契数529
A.1.4生物群体的增长531
A.1.5逻辑增长531
A.1.6偿还贷款532
A.1.7使用差分方程来求积分533
A.1.8使用差分方程计算泰勒级数535
A.1.9投资与生活536
A.1.10牛顿迭代法537
A.1.11反函数539
A.2对声音编程541
A.2.1将声音写入文件542
A.2.2从文件读取声音542
A.2.3播放多个单音543
A.2.4数列产生的音乐544
A.3习题546
附录B离散微积分简介555
B.1离散函数555
B.1.1正弦函数555
B.1.2插值557
B.1.3求近似值557
B.1.4概括558
B.2用有限差分来实现微分559
B.2.1正弦函数微分559
B.2.2网格上的差分560
B.2.3归纳561
B.3用求和实现积分562
B.3.1子区间划分563
B.3.2子区间积分564
B.3.3子区间求和564
B.3.4归纳565
B.4泰勒级数567
B.4.1函数在某一点附近的近似值567
B.4.2指数函数近似567
B.4.3更高精度的展开567
B.4.4近似的精度569
B.4.5再论导数571
B.4.6更准确的差分近似572
B.4.7二阶导数574
B.5习题576
附录C微分方程计算简介579
C.1入门案例579
C.2指数增长581
C.3逻辑增长585
C.4单摆585
C.5疾病传播模型588
C.6习题589
附录D一个完整的微分方程工程591
D.1问题描述: 物理中的运动和力591
D.1.1物理问题591
D.1.2求解算法592
D.1.3数学模型推导592
D.1.4算法推导594
D.2程序编写及测试594
D.2.1算法实现594
D.2.2回调函数597
D.2.3制作模块599
D.2.4验证600
D.3可视化602
D.3.1同步计算及绘图602
D.3.2若干应用604
D.3.3关于Δt的选取606
D.3.4在子图中对若干量进行
比较606
D.3.5比较近似解与精确解607
D.3.6误差随Δt减小而变化的情况608
D.4习题610
附录E编程求解微分方程612
E.1标量常微分方程612
E.1.1右手边函数示例613
E.1.2前向欧拉方法613
E.1.3函数实现614
E.1.4验证实现615
E.1.5从离散解到连续解616
E.1.6转换数值方法617
E.1.7类实现方式617
E.1.8逻辑增长的函数方法实现621
E.1.9逻辑增长的类方法实现622
E.2常微分方程组624
E.2.1数学问题624
E.2.2常微分方程组示例625
E.2.3函数实现626
E.2.4类实现628
E.3ODESolver类层次结构629
E.3.1数值方法629
E.3.2求解器层次结构的构造630
E.3.3后向欧拉方法633
E.3.4验证635
E.3.5示例: 指数衰减636
E.3.6示例: 具有问题类和求解器类的Logistic方程638
E.3.7示例: 振荡系统645
E.3.8应用: 球的轨迹647
E.3.9ODESolver的进一步开发649
E.4习题649
附录F调试672
F.1使用调试器672
F.2如何调试675
F.2.1程序编写和调试的方法675
F.2.2应用实例677
F.2.3从代码分析器获取帮助688
附录G提高Python运行效率的技术690
G.1用Python编写蒙特卡罗模拟的代码690
G.1.1计算问题690
G.1.2Python实现的标量版本690
G.1.3Python实现的向量化版本691
G.2将标量Python代码移植到
Cython692
G.2.1直接的Cython实现692
G.2.2改良的Cython实现695
G.3将Python/Cython代码移植到
C代码中697
G.3.1编写C程序697
G.3.2通过f2py将循环移植到C代码中697
G.3.3通过Cython将循环移植到C代码中699
G.3.4效率比较699
附录H技术主题701
H.1获取Python701
H.1.1需要的软件701
H.1.2在MacOS X和Windows平台上安装软件702
H.1.3Anaconda与Spyder702
H.1.4VMWare Fusion虚拟机703
H.1.5Windows双重启动705
H.1.6Vagrant虚拟机705
H.2如何编写和运行Python程序706
H.2.1文本编辑器706
H.2.2终端窗口707
H.3Web服务: SageMathCloud与Wakari 708
H.3.1SageMathCloud简介708
H.3.2Wakari简介708
H.3.3安装自己的Python包708
H.4IPython Notebook的使用709
H.4.1启动IPython Notebook709
H.4.2混编文本、数学、代码和图形709
H.5运行Python程序的不同方式 710
H.5.1在IPython中运行Python程序711
H.5.2在UNIX中运行Python程序711
H.5.3在Windows中运行Python程序712
H.5.4在MacOS X中运行Python程序713
H.5.5制作完整的独立可执行文件713
H.6在Python中执行操作系统命令713
H.7可变数量的函数参数716
H.7.1可变数量的位置参数717
H.7.2可变数量的关键字参数719
H.8评估程序执行效率721
H.8.1测量时间721
H.8.2分析Python程序性能722
H.9软件测试723
H.9.1测试函数需要遵循的约定724
H.9.2编写测试函数及预先计算数据724
H.9.3编写测试函数以及获得精确数值解725
H.9.4测试函数鲁棒性726
H.9.5自动执行测试728
参考文献730s
猜您喜欢

读书导航