第1章 导论 1
1.1科学计算软件 1
1.2本书的规划 3
1.3 Python能与编译语言竞争吗 7
1.4本书的局限性 8
1.5安装Python和附加软件包 8
第2章 IPython入门 9
2.1 Tab键代码自动补全功能 9
2.2自省 9
2.3历史命令 11
2.4魔法命令 11
2.5 IPython实践:扩展示例 13
2.5.1使用IPython终端的工作流程 14
2.5.2使用IPython笔记本的工作流程 14
第3章 Python简明教程 18
3.1输入Python代码 18
3.2对象和标识符 19
3.3数值类型 20
3.3.1整型 20
3.3.2实数 21
3.3.3布尔值 22
3.3.4复数 23
3.4名称空间和模块 23
3.5容器对象 25
3.5.1列表 25
3.5.2列表索引 26
3.5.3列表切片 26
3.5.4列表的可变性 27
3.5.5元组 28
3.5.6字符串 29
3.5.7字典 29
3.6 Python的if语句 30
3.7循环结构 31
3.7.1 Python的for循环结构 31
3.7.2 Python的continue语句 32
3.7.3 Python的break语句 33
3.7.4列表解析 33
3.7.5 Python的while循环 34
3.8函数 35
3.8.1语法和作用范围 35
3.8.2位置参数 38
3.8.3关键字参数 38
3.8.4可变数量的位置参数 38
3.8.5可变数量的关键字参数 39
3.8.6 Python的输入/输出函数 39
3.8.7 Python的print函数 40
3.8.8匿名函数 42
3.9 Python类简介 42
3.10 Python程序结构 44
3.11素数:实用示例 45
第4章 NumPy 49
4.1一维数组 50
4.1.1初始构造函数 51
4.1.2“相似”构造函数 52
4.1.3向量的算术运算 52
4.1.4通用函数 54
4.1.5向量的逻辑运算符 55
4.2二维数组 58
4.2.1广播 58
4.2.2初始构造函数 59
4.2.3“相似”构造函数 61
4.2.4数组的运算和通用函数 61
4.3多维数组 62
4.4内部输入和输出 62
4.4.1分散的输出和输入 62
4.4.2 NumPy文本文件的输出和输入 64
4.4.3 NumPy二进制文件的输出和输入 65
4.5外部输入和输出 65
4.5.1小规模数据 65
4.5.2大规模数据 66
4.6其他通用函数 66
4.6.1最大值和最小值 66
4.6.2求和与乘积 67
4.6.3简单统计 67
4.7多项式 67
4.7.1根据数据求多项式系数 68
4.7.2根据多项式系数求数据 68
4.7.3系数形式的多项式运算 68
4.8线性代数 68
4.8.1矩阵的基本运算 68
4.8.2矩阵的特殊运算 70
4.8.3求解线性方程组 71
4.9有关NumPy的更多内容和进一步学习 71
4.9.1 SciPy 71
4.9.2 SciKits 72
第5章 二维图形 73
5.1概述 73
5.2绘图入门:简单图形 74
5.2.1前端 74
5.2.2后端 74
5.2.3一个简单示例图形 75
5.2.4交互式操作 77
5.3面向对象的Matplotlib 77
5.4笛卡儿坐标绘图 78
5.4.1 Matplotlib绘图函数 78
5.4.2曲线样式 79
5.4.3标记样式 79
5.4.4坐标轴、网格线、标签和标题 80
5.4.5一个稍复杂的示例:傅里叶级数的部分和 81
5.5极坐标绘图 82
5.6误差条 83
5.7文本与注释 84
5.8显示数学公式 84
5.8.1非LaTeX用户 85
5.8.2 LaTeX用户 86
5.8.3 LaTeX用户的替代方案 86
5.9等高线图 87
5.10复合图形 89
5.10.1多个图形 89
5.10.2多个绘图 90
5.11曼德尔布罗特集:实用示例 91
第6章 多维图形 96
6.1概述 96
6.2降维到二维 96
6.3可视化软件 97
6.4可视化任务示例 97
6.5孤立波的可视化 98
6.5.1交互式操作任务 98
6.5.2动画任务 100
6.5.3电影任务 101
6.6三维对象的可视化 102
6.7三维曲线 103
6.7.1使用mplot3d可视化曲线 103
6.7.2使用mlab可视化曲线 105
6.8简单曲面 106
6.8.1使用mplot3d可视化简单曲面 106
6.8.2使用mlab可视化简单曲面 108
6.9参数化定义的曲面 109
6.9.1使用mplot3d可视化Enneper曲面 109
6.9.2使用mlab可视化Enneper曲面 110
6.10居里叶集的三维可视化 111
第7章 SymPy:一个计算机代数系统 113
7.1计算机代数系统 113
7.2符号和函数 114
7.3 Python和SymPy之间的转换 116
7.4矩阵和向量 117
7.5一些初等微积分 118
7.5.1微分 118
7.5.2积分 118
7.5.3级数与极限 119
7.6等式、符号等式和化简 120
7.7方程求解 121
7.7.1单变量方程 122
7.7.2具有多个自变量的线性方程组 122
7.7.3更一般的方程组 124
7.8常微分方程的求解 125
7.9在SymPy中绘图 127
第8章 常微分方程 132
8.1初值问题 132
8.2基本思想 132
8.3 odeint函数 135
8.3.1理论背景 135
8.3.2谐波振荡器 136
8.3.3范德波尔振荡器 139
8.3.4洛伦兹方程 140
8.4两点边值问题 142
8.4.1概述 142
8.4.2边值问题的公式化 143
8.4.3简单示例 144
8.4.4线性特征值问题 145
8.4.5非线性边值问题 147
8.5延迟微分方程 151
8.5.1模型方程 151
8.5.2更一般的方程及其数值解 152
8.5.3逻辑斯谛方程 153
8.5.4麦克-格拉斯方程 155
8.6随机微分方程 157
8.6.1维纳过程 158
8.6.2 Ito微积分 158
8.6.3 Ito与斯特拉托诺维奇随机积分 162
8.6.4随机微分方程的数值求解 162
第9章 偏微分方程:伪谱方法 169
9.1初边值问题 169
9.2直线法 170
9.3有限差分空间导数 170
9.4周期问题的谱技术空间导数方法 171
9.5空间周期问题的IVP 172
9.6非周期问题的谱技术 174
9.7 f2py概述 176
9.7.1使用标量参数的简单示例 177
9.7.2向量参数 178
9.7.3使用多维参数的简单示例 179
9.7.4 f2py的其他特征 180
9.8 f2py真实案例 181
9.9实用示例:伯格斯方程 182
9.9.1边界条件:传统方法 183
9.9.2边界条件:惩罚方法 183
第10章 案例研究:多重网格 187
10.1一维情形 188
10.1.1线性椭圆型方程 188
10.1.2平滑众数和粗糙众数 188
10.2多重网格工具 189
10.2.1松弛法 189
10.2.2残差与误差 191
10.2.3延拓和限制 192
10.3多重网格算法 193
10.3.1双重网格算法 194
10.3.2 V循环算法 195
10.3.3完全多重网格算法 195
10.4简单的Python多重网格实现 196
10.4.1实用函数 197
10.4.2平滑函数 198
10.4.3多重网格函数 200
附录A 安装Python环境 205
附录B 伪谱方法的Fortran77子程序 213
参考文献 218