Python科学计算(原书第2版)
书籍作者:[英] 约翰·M.斯图尔特 |
ISBN:9787111633907 |
书籍语言:简体中文 |
连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 |
下载次数:9976 |
创建日期:2021-02-14 |
发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
《Python科学计算(原书第2版)》讲解如何使用Python科学计算软件包来实现和测试复杂的数学算法,第2版针对Jupyter笔记本用户更新了部分代码,并新增了讲解SymPy的章节。书中首先介绍Python相关知识,涵盖IPython、NumPy和SymPy,以及二维和多维图形的绘制。之后讨论不同领域的应用实例,涉及常微分方程、偏微分方程和多重网格,并展示了处理Fortran遗留代码的方法。全书内容简洁,示例丰富,所有代码均可免费下载,是广大科技工作者和理工科学生的有益参考。
前言
本书是面向理工科学生和科技工作者的Python程序设计教程。广大的理工科学生、科技工作者和科学家需要使用计算机科学计算软件包辅助日常学习和科学研究工作。相对于传统的商业软件包(如Matlab和Mathematica),以Python为代表的开源软件计算包具有免费、开源、广泛的库支持等特点,是昂贵的专有软件包的重要开源替代品,已经成为科技工作者的首选科学计算软件包。
本书通过丰富的、可下载的、实用的以及可适应不同平台的代码片段,从最基础的环节开始指导科技工作者学习Python的所有相关知识。读者将会发现,实现和测试复杂的数学算法是一件非常容易的事。本书提供了一系列与许多不同领域相关的示例,充分展示了Python语言的魅力,并且引导读者使用众多免费的附加模块。同时,作者还展示了如何在Python环境中使用遗留代码(通常是Fortran77语言),从而避免学习和掌握原始代码的麻烦。
本书的前半部分(以及附录)涵盖了科技工作者使用Python科学计算软件包所需要的几乎所有知识。本书的后半部分则使用Python科学计算软件包来解决三个具体科研领域的问题:第8章涵盖四种截然不同的常微分方程,并且展示了如何使用各种相关的“黑盒”,这些“黑盒”通常是那些实际使用且可信的Fortran代码的Python封装;第9章虽然表面上讲的是关于演化偏微分方程的伪谱方法,但实际上涵盖了一个对许多科学家都非常有用的主题,即如何在不理解Fortran语言的情况下,在Python语言中以类似Fortran的速度来重用那些通常用Fortran77编写的遗留代码;最后一章讨论通过多重网格求解非常大的线性系统,这也是如何在科学环境中有意义地使用面向对象程序设计的案例。科技工作者可以在这些知识的基础上举一反三,使用Python科学计算软件包来解决自己所在领域(如生物化学、晶体学等)的实际问题。
本书作者是英国剑桥大学应用数学和理论物理系的约翰.M.斯图尔特教授,他是《非平衡相对论动力学理论》(1971年)和《高级广义相对论》(1991年)的作者,并且还翻译和编辑了汉斯·斯蒂芬尼的《广义相对论》(1990年)。作者基于自己借助计算机从事科学研究超过40年的经验,阐述了使用Python科学计算软件包处理科研领域问题的方法,以帮助科研工作者有效地解决自己专业领域中的问题。
本书由华东师范大学江红和余青松共同翻译。衷心感谢本书的编辑曲熠老师和张志铭老师,积极帮我们筹划翻译事宜并认真审阅翻译稿件。翻译也是一种再创造,同样需要艰辛的付出,感谢朋友、家人以及同事的理解和支持。在本书翻译的过程中我们力求忠于原著,但由于时间和学识有限,且本书涉及多个领域的专业知识,不足之处在所难免,敬请诸位同行、专家和读者指正。
目录
出版者的话
译者序
第2版前言
第1版前言
第1章 导论
1.1 科学计算软件
1.2 本书的规划
1.3 Python能与编译语言竞争吗
1.4 本书的局限性
1.5 安装Python和附加软件包
第2章 IPython入门
2.1 Tab键代码自动补全功能
2.2 自省
2.3 历史命令
2.4 魔法命令
2.5 IPython实践:扩展示例
2.5.1 使用IPython终端的工作流程
2.5.2 使用IPython笔记本的工作流程
第3章 Python简明教程
3.1 输入Python代码
3.2 对象和标识符
3.3 数值类型
3.3.1 整型
3.3.2 实数
3.3.3 布尔值
3.3.4 复数
3.4 名称空间和模块
3.5 容器对象
3.5.1 列表
3.5.2 列表索引
3.5.3 列表切片
3.5.4 列表的可变性
3.5.5 元组
3.5.6 字符串
3.5.7 字典
3.6 Python的if语句
3.7 循环结构
3.7.1 Python的for循环结构
3.7.2 Python的continue语句
3.7.3 Python的break语句
3.7.4 列表解析
3.7.5 Python的while循环
3.8 函数
3.8.1 语法和作用范围
3.8.2 位置参数
3.8.3 关键字参数
3.8.4 可变数量的位置参数
3.8.5 可变数量的关键字参数
3.8.6 Python的输入/输出函数
3.8.7 Python的print函数
3.8.8 匿名函数
3.9 Python类简介
3.1 0Python程序结构
3.1 1素数:实用示例
第4章 NumPy
4.1 一维数组
4.1.1 初始构造函数
4.1.2 “相似”构造函数
4.1.3 向量的算术运算
4.1.4 通用函数
4.1.5 向量的逻辑运算符
4.2 二维数组
4.2.1 广播
4.2.2 初始构造函数
4.2.3 “相似”构造函数
4.2.4 数组的运算和通用函数
4.3 多维数组
4.4 内部输入和输出
4.4.1 分散的输出和输入
4.4.2 NumPy文本文件的输出和输入
4.4.3 NumPy二进制文件的输出和输入
4.5 外部输入和输出
4.5.1 小规模数据
4.5.2 大规模数据
4.6 其他通用函数
4.6.1 最大值和最小值
4.6.2 求和与乘积
4.6.3 简单统计
4.7 多项式
4.7.1 根据数据求多项式系数
4.7.2 根据多项式系数求数据
4.7.3 系数形式的多项式运算
4.8 线性代数
4.8.1 矩阵的基本运算
4.8.2 矩阵的特殊运算
4.8.3 求解线性方程组
4.9 有关NumPy的更多内容和进一步学习
4.9.1 SciPy
4.9.2 SciKits
第5章 二维图形
5.1 概述
5.2 绘图入门:简单图形
5.2.1 前端
5.2.2 后端
5.2.3 一个简单示例图形
5.2.4 交互式操作
5.3 面向对象的Matplotlib
5.4 笛卡儿坐标绘图
5.4.1 Matplotlib绘图函数
5.4.2 曲线样式
5.4.3 标记样式
5.4.4 坐标轴、网格线、标签和标题
5.4.5 一个稍复杂的示例:傅里叶级数的部分和
5.5 极坐标绘图
5.6 误差条
5.7 文本与注释
5.8 显示数学公式
5.8.1 非LaTeX用户
5.8.2 LaTeX用户
5.8.3 LaTeX用户的替代方案
5.9 等高线图
5.1 0复合图形
5.1 0.1 多个图形
5.1 0.2 多个绘图
5.1 1曼德尔布罗特集:实用示例
第6章 多维图形
6.1 概述
6.2 降维到二维
6.3 可视化软件
6.4 可视化任务示例
6.5 孤立波的可视化
6.5.1 交互式操作任务
6.5.2 动画任务
6.5.3 电影任务
6.6 三维对象的可视化
6.7 三维曲线
6.7.1 使用mplot3d可视化曲线
6.7.2 使用mlab可视化曲线
6.8 简单曲面
6.8.1 使用mplot3d可视化简单曲面
6.8.2 使用mlab可视化简单曲面
6.9 参数化定义的曲面
6.9.1 使用mplot3d可视化Enneper曲面
6.9.2 使用mlab可视化Enneper曲面
6.1 0居里叶集的三维可视化
第7章 SymPy:一个计算机代数系统
7.1 计算机代数系统
7.2 符号和函数
7.3 Python和SymPy之间的转换
7.4 矩阵和向量
7.5 一些初等微积分
7.5.1 微分
7.5.2 积分
7.5.3 级数与极限
7.6 等式、符号等式和化简
7.7 方程求解
7.7.1 单变量方程
7.7.2 具有多个自变量的线性方程组
7.7.3 更一般的方程组
7.8 常微分方程的求解
7.9 在SymPy中绘图
第8章 常微分方程
8.1 初值问题
8.2 基本思想
8.3 odeint函数
8.3.1 理论背景
8.3.2 谐波振荡器
8.3.3 范德波尔振荡器
8.3.4 洛伦兹方程
8.4 两点边值问题
8.4.1 概述
8.4.2 边值问题的公式化
8.4.3 简单示例
8.4.4 线性特征值问题
8.4.5 非线性边值问题
8.5 延迟微分方程
8.5.1 模型方程
8.5.2 更一般的方程及其数值解
8.5.3 逻辑斯谛方程
8.5.4 麦克-格拉斯方程
8.6 随机微分方程
8.6.1 维纳过程
8.6.2 Ito微积分
8.6.3 Ito与斯特拉托诺维奇随机积分
8.6.4 随机微分方程的数值求解
第9章 偏微分方程:伪谱方法
9.1 初边值问题
9.2 直线法
9.3 有限差分空间导数
9.4 周期问题的谱技术空间导数方法
9.5 空间周期问题的IVP
9.6 非周期问题的谱技术
9.7 f2py概述
9.7.1 使用标量参数的简单示例
9.7.2 向量参数
9.7.3 使用多维参数的简单示例
9.7.4 f2py的其他特征
9.8 f2py真实案例
9.9 实用示例:伯格斯方程
9.9.1 边界条件:传统方法
9.9.2 边界条件:惩罚方法
第10章 案例研究:多重网格
10.1 一维情形
10.1.1 线性椭圆型方程
10.1.2 平滑众数和粗糙众数
10.2 多重网格工具
10.2.1 松弛法
10.2.2 残差与误差
10.2.3 延拓和限制
10.3 多重网格算法
10.3.1 双重网格算法
10.3.2 V循环算法
10.3.3 完全多重网格算法
10.4 简单的Python多重网格实现
10.4.1 实用函数
10.4.2 平滑函数
10.4.3 多重网格函数
附录A 安装Python环境
附录B 伪谱方法的Fortran77子程序
参考文献