《数值计算与数据处理编程及实践》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:张正秋编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302249566
  • 页数:331 页
图书介绍:编写高效率的数值计算处理程序,可以大大提高科研水平。本书共13章,介绍了数计算发展史,数据格式和压缩处理方法,自我描述格式的文件等内容。

第1章 数值计算与计算机 1

1.1 计算机发展史与数值模式 1

1.2 计算机软件与数值模式比较 3

1.2.1 计算机软件和数值模式的特点 3

1.2.2 计算机软件与数值模式的发展 4

1.3 程序设计对计算的影响 9

1.3.1 计算方法对计算精度的影响 9

1.3.2 程序设计对计算精度的影响 10

1.3.3 程序设计对计算速度的影响 11

1.4 数值误差与科学预测 12

1.5 数值计算中值得注意的几个问题 13

1.6 本章小结 14

思考题 15

主要参考文献 15

第2章 数据储存格式变换和压缩 16

2.1 计算机中数的表示和运算 16

2.1.1 计算机内数的表示方法 16

2.1.2 原码、反码和补码 18

2.1.3 位运算方法 18

2.1.4 Little-Endian Big-Endian 20

2.1.5 不同系统下数据格式变换 20

2.2 几种常见的数据压缩算法 22

2.2.1 行程编码 23

2.2.2 Huffman编码 23

2.2.3 算术编码 23

2.2.4 LZ系列算法 24

2.2.5 整数编码 28

2.3 LZSS压缩实例 29

2.3.1 环形字符串缓冲区 29

2.3.2 二叉查找树的应用 30

2.3.3 LZSS算法的实现方法 30

2.4 本章小结 35

思考题 35

主要参考文献 36

第3章 几种自我描述格式文件 37

3.1 文件概述 37

3.1.1 文件的组织结构 37

3.1.2 文件的存取方式 38

3.1.3 文件的访问方式 38

3.2 GRIB文件及其使用工具 39

3.2.1 GRIB2的格式 39

3.2.2 GRIB2压缩方法 41

3.2.3 GRIB2格式数据访问 42

3.3 HDF文件及其使用工具 44

3.3.1 HDF5文件 44

3.3.2 HDF5工具软件 45

3.3.3 HDF5库简介 46

3.3.4 使用HDF5库的实例 47

3.4 NetCDF文件及其使用工具 50

3.4.1 NetCDF文件 51

3.4.2 NetCDF工具软件 52

3.4.3 NetCDF库简介 52

3.4.4 使用NetCDF库的实例 53

3.5 并行HDF和NetCDF库的接口简介 57

3.6 本章小结 58

思考题 58

主要参考文献 59

第4章 无微分算法及其应用实例 60

4.1 方程求解算法 60

4.1.1 使用反拉格朗日多项式求解方程 60

4.1.2 二分法算法 62

4.1.3 试位法算法 62

4.1.4 雷德斯算法 63

4.1.5 反二次插值试位法算法 65

4.2 单元函数的极值搜寻计算 66

4.2.1 黄金分割搜寻 67

4.2.2 斐波那契搜寻 68

4.3 多元函数的极值搜寻计算 70

4.3.1 Nelder-Mead算法 70

4.3.2 多元方向设置算法 78

4.3.3 现代随机优化算法 82

4.4 无微分算法的应用实例 87

4.5 本章小结 88

思考题 89

主要参考文献 89

第5章 高精度计算程序设计 91

5.1 高精度数的基本表示方法 91

5.1.1 高精度数的储存形式 91

5.1.2 高精度整数与小数 92

5.1.3 数字存放顺序 92

5.1.4 数的进制设置 92

5.1.5 数的输入与输出转换 93

5.2 高精度加法和减法 94

5.3 高精度乘法的直接计算 98

5.3.1 高精度乘法计算基础 99

5.3.2 高精度整数乘法 99

5.3.3 高精度浮点数乘法 101

5.4 使用FFT进行高精度乘法的计算 103

5.4.1 快速傅里叶变换原理 103

5.4.2 使用FFT进行多项式乘法的计算原理 106

5.4.3 FFT程序设计 107

5.4.4 使用FFT进行长整数乘法计算的实例 109

5.5 高精度除法 110

5.5.1 直接进行高精度除法计算 110

5.5.2 高精度除法快速计算 111

5.6 高精度乘方和开方 112

5.7 本章小结 113

思考题 113

主要参考文献 113

第6章 等值线图制作技术及程序设计 115

6.1 等值线标注字体和连线 115

6.1.1 点阵字体和矢量字体 115

6.1.2 作图连线方法 116

6.1.3 数字的矢量表示法 117

6.1.4 小数点和负号的表示法 119

6.2 等值线插值 119

6.2.1 插值点的判别 119

6.2.2 插值计算方法 119

6.2.3 插值过程和顺序 120

6.3 等值线生成法 121

6.3.1 追踪法 121

6.3.2 拼图法 123

6.4 等值线图绘制的基本设计 124

6.4.1 图形数据与图形显示 124

6.4.2 等值线标注 124

6.4.3 等值线生成控制 125

6.4.4 等值线平滑 126

6.4.5 等值线显示设计 128

6.5 等值线图填充 129

6.5.1 一般的图形填充方法 129

6.5.2 等值线图的填充方法 132

6.6 等值线作图的实例 134

6.7 等值线作图的应用 139

6.7.1 等值线科学应用 139

6.7.2 等值面积和体积的计算 140

6.7.3 等值线剖面图的绘制 140

6.8 本章小结 140

思考题 141

主要参考文献 141

第7章 字符串表达式匹配的程序设计 143

7.1 字符及转义 143

7.1.1 普通字符及其转义 143

7.1.2 特殊字符及其转义 144

7.2 正则表达式 145

7.2.1 单元符 145

7.2.2 定位符 146

7.2.3 限定符 146

7.3 通配符 147

7.3.1 常见的通配符 147

7.3.2 通配符与正则表达式的区别 148

7.4 字符串匹配过程中的问题 148

7.5 字符串匹配程序的设计方法 149

7.6 正则表达式匹配的编程实例 150

7.6.1 正则表达式字符串的解释 151

7.6.2 一个简单的正则表达式匹配程序 154

7.7 通配符匹配的编程实例 156

7.8 本章小结 159

思考题 160

主要参考文献 160

第8章 简单脚本运行程序的设计 161

8.1 解释程序的工作原理 161

8.1.1 解释程序的运行过程 161

8.1.2 解释程序工作环境的设计 162

8.2 解释程序设计的技术基础 163

8.2.1 脚本语言的关键字 164

8.2.2 控制语句分类 164

8.2.3 对脚本解释的方法 165

8.2.4 对单语句的规定 166

8.2.5 对程序块的处理方法 167

8.3 解释程序运行过程的初步设计 169

8.3.1 脚本的装载 169

8.3.2 脚本关键字的确定和关键字查寻表 170

8.3.3 脚本程序的主函数 171

8.3.4 脚本打印语句的解释方法 172

8.3.5 脚本函数的解释方法 173

8.4 利用递归原理设计解释程序 175

8.4.1 递归式解释的主控函数 175

8.4.2 递归式解释的用户自定义函数 176

8.4.3 递归式解释的循环控制 177

8.4.4 递归式解释的条件控制 179

8.5 利用堆栈原理设计解释程序 180

8.6 一个对脚本文件解释的实例 185

8.7 本章小结 187

思考题 188

主要参考文献 188

第9章 计算程序代码的优化设计 189

9.1 程序优化概述 189

9.1.1 程序优化层次 189

9.1.2 程序优化分类 190

9.2 程序可维护性的优化设计 190

9.3 程序代码优化的基本方法 191

9.3.1 删除冗余代码 191

9.3.2 提出公用子表达式 192

9.3.3 简化运算步骤 193

9.3.4 减小计算强度 194

9.4 程序代码结构的优化 196

9.4.1 变量的优化 197

9.4.2 表达式的优化 198

9.4.3 一般函数结构的优化 198

9.4.4 减小程序复杂度 200

9.4.5 降低数组维数 201

9.5 程序控制结构的优化 201

9.5.1 顺序结构的优化 201

9.5.2 选择结构的优化 202

9.5.3 循环结构的优化 208

9.6 内存使用的优化 213

9.7 与编译器或处理器相关的优化 215

9.7.1 使用修饰符 215

9.7.2 对字节对齐优化 217

9.7.3 数组下标排列及其优化 218

9.7.4 使用2的乘方数 221

9.7.5 合理分配寄存器 221

9.8 递归函数的优化 222

9.9 本章小结 225

思考题 226

主要参考文献 226

第10章 可复用计算程序的设计 227

10.1 可复用程序的设计概述 227

10.1.1 复用程序与设计可复用程序 227

10.1.2 影响程序可复用性的因素 228

10.1.3 通用程序与可复用程序 228

10.1.4 可复用程序的“手性”特点 229

10.2 “手掌型”可复用程序的设计 230

10.2.1 程序的封装 230

10.2.2 使用模板 231

10.2.3 使用共享环境 234

10.2.4 使用泛型 236

10.3 “掌指关节型”可复用程序的设计 237

10.3.1 代码替换 237

10.3.2 变量替换 240

10.3.3 函数调用接口覆盖 241

10.3.4 使用类型转换共享函数调用接口 245

10.3.5 共享I/O接口 247

10.4 “手指型”可复用程序的设计 249

10.4.1 “手指型”与“手掌型”可复用程序设计的比较 249

10.4.2 使用相对性对象 249

10.4.3 使用情景函数 250

10.5 C++程序的复用机制 250

10.6 本章小结 252

思考题 253

主要参考文献 253

第11章 并行计算MPI程序设计基础 254

11.1 并行程序的设计基础 254

11.1.1 线程与进程 254

11.1.2 并行程序设计模型 255

11.1.3 并行计算的通信 257

11.1.4 并行程序的工作任务分解 257

11.1.5 并行计算的工作原理 258

11.2 MPI并行程序设计入门 259

11.3 MPI的基本通信操作 261

11.3.1 点对点通信(P2P) 261

11.3.2 集合通信 262

11.3.3 通信阻塞与同步 267

11.4 MPI进程组和通信子 268

11.4.1 进程组管理 268

11.4.2 通信集管理 270

11.4.3 通信分组应用实例 271

11.5 进程拓扑结构 272

11.5.1 笛卡儿拓扑结构 272

11.5.2 图拓扑结构 276

11.5.3 进程拓扑应用实例 277

11.6 派生数据类型 279

11.6.1 数据类型查询函数 279

11.6.2 新类型的构建 280

11.6.3 提交和释放 282

11.6.4 派生数据类型应用实例 282

11.7 本章小结 284

思考题 284

主要参考文献 285

第12章 数值计算的混合编程 286

12.1 混合编程的实现方法 286

12.1.1 结合式的连接方法 286

12.1.2 调用式连接的方法 287

12.1.3 中介式连接的方法 288

12.2 Fortran与C/C++语言的混合编程 289

12.2.1 Fortran与C/C++比较 290

12.2.2 Fortran与C/C+混合编程的简单实例 291

12.2.3 Fortran与C/C++程序之间的参数传递方法 296

12.2.4 通过库文件进行Fortran C/C++的混合编程 300

12.3 低版本与高版本语言的混合编程 303

12.3.1 C与C++间的混合编程 303

12.3.2 F77与F90/95间的混合编程 305

12.4 脚本与计算程序的混合编程 306

12.4.1 计算作业自动提交脚本的设计 306

12.4.2 绘图程序与计算程序的混合编程 308

12.5 本章小结 311

思考题 312

主要参考文献 312

第13章 UNIX/Linux系统下计算的辅助编程 313

13.1 文件和目录管理操作 313

13.1.1 system()函数 313

13.1.2 文件和目录管理函数 314

13.1.3 文件的遍历查找 319

13.2 编写一个在Xnix系统下运行的服务程序 320

13.3 在Xnix系统下建立回收站 326

13.4 SSH自动登录 328

13.4.1 公钥与私钥的设置方法 328

13.4.2 使用expect的方法 330

13.5 本章小结 330

思考题 331

主要参考文献 331