前言
科学计算即数值计算,是指应用计算机处理科学研究和工程技术中所遇到的数学计算问题。在现代科学和工程技术中,经常会遇到大量复杂的数学计算问题,这些问题用一般的计算工具来解决非常困难,而用计算机来处理却非常容易。
在计算机出现之前,科学研究和工程设计主要依靠实验或实验提供数据,计算仅处于辅助地位。计算机技术的迅速发展,使越来越多的复杂计算成为可能。利用计算机进行科学计算带来了巨大的经济效益,同时也使科学技术本身发生了根本变化: 传统的科学技术只包括理论和实验两个组成部分,使用计算机后,计算已成为同等重要的第三个组成部分。
Python是一种计算机程序设计语言,是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多地被用于独立的、大型项目的开发。自从20世纪90年代初Python语言诞生至今,它已广泛应用于系统管理任务的处理和Web编程中。
Python在设计上坚持了清晰且整齐划一的风格,这使得Python成为一门易读、易维护,并且受大量用户欢迎的、用途广泛的语言。由于其特性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python来教授“程序设计”课程。
说起科学计算,首先会被提到的应该是MATLAB。然而除了MATLAB的一些专业性很强的工具箱还无法被替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相应的扩展库。和MATLAB相比,用Python做科学计算有如下优点:
MATLAB是一款商用软件,并且价格不菲。而Python完全免费,众多开源的科学计算库都提供了Python的调用接口。用户可以在任何计算机上免费安装Python及其绝大多数扩展库。
与MATLAB相比,Python是一门更易学、更严谨的程序设计语言。它能让用户编写出更易读、易维护的代码。
MATLAB主要专注于工程和科学计算。然而即使在计算领域,也经常会遇到文件管理、界面设计、网络通信等各种需求。而Python有着丰富的扩展库,可以轻易完成各种高级任务,开发者可以用Python实现完整应用程序所需的各种功能。
本书是一种利用Python实现科学计算,解决实际问题的参考书,其编写本身具有如下特点。
(1) 内容由浅入深,涵盖知识全面。
本书第1章用于简单介绍Python软件基础知识,让读者认识Python; 第2~11章全面涵盖了科学计算的内容,让读者除了学习科学计算知识外,还可体会到利用Python解决科学计算问题的简便、快捷。
(2) 易学易懂,实例丰富。
每章都是先介绍相关概念、公式,再通过典型实例帮助读者巩固相关知识点,而且在实例实现代码中,都有相关详细注释,让读者快速读懂代码,领会知识要点。
(3) 实战性强,有较高的应用价值。
除了每章提供的相关实例用来巩固知识点外,最后一章是经典实战,通过Python实现一款流行游戏,进一步说明Python在科学计算中应用广泛。
(4) 完整的源代码和训练数据集。
书中所有的案例都提供了免费的代码,使读者学习更方便。另外,读者也可以轻松获得书中案例的训练数据集。
全书共11章。第1章介绍了Python基础,主要包括Python辅助工具、第三方库、模块、函数等内容。第2章介绍了模型评估与概率统计,主要包括经验误差与过拟合、评估方法、性能度量、比较检验等内容。第3章介绍了贝叶斯分类器,主要包括参数估计、朴素贝叶斯、半朴素贝叶斯、贝叶斯网等内容。第4章介绍了频域与快速傅里叶变换,主要包括频率直方图、傅里叶变换、快速傅里叶变换、频域滤波、平滑空域滤波器等内容。第5章介绍了线性回归,主要包括普通线性回归、广义线性模型、逻辑回归、岭回归、弹性网络等内容。第6章介绍了多分类器系统,主要包括多分类器系统原理及误差、Bagging与AdaBoost算法、随机森林算法等内容。第7章介绍了Scipy科学计算库,主要包括文件输入和输出、线性代数操作、离散余弦变换积分、插值、拟合、图像处理等内容。第8章介绍了统计分析,主要包括随机变量、几种常用分布、样本分析、核密度估计等内容。第9章介绍了数值分析,主要包括主成分分析、奇异值分解、k近邻算法、聚类算法、数据标准化等内容。第10章介绍了数据可视化,主要包括Matplotlib生成数据图、其他数据图等内容。第11章介绍了数据处理,主要包括CSV文件格式、JSON数据、数据清洗、读取网络数据等内容。
资源下载
本书提供案例代码、习题答案等资料,请扫描此处二维码或者到清华大学出版社官方网站本书页面下载。
由于时间仓促,加之编者水平有限,本书疏漏之处在所难免。在此,诚恳地期望得到各领域的专家和广大读者的批评指正。
编者
2020年12月