



Python是一种功能强大且灵活的编程语言,学习起来既有趣又简单。它是许多专业人士和爱好者的首选编程语言。Python的强大之处在于其庞大的软件包生态系统和友好的社区,以及与编译扩展模块无缝通信的能力。这使得Python非常适合解决各种问题,尤其是数学问题。
数学通常与计算和方程相关联,但实际上,这只是一个更大主题的很小一部分。从本质上讲,数学是关于解决问题及其逻辑结构化的方法。一旦你超越了方程、计算、导数和积分,就会发现一个广阔而优美的结构世界。
本书是使用Python解决数学问题的入门指南。书中将介绍一些基本的数学概念以及如何使用Python处理这些概念,还将提供一些用于解决数学众多领域内各种数学问题的基本模板。前几章侧重于核心技能,如使用NumPy数组、绘图、计算微积分和计算概率等。这些主题在整个数学领域中都非常重要,并且是本书其余部分的基础。在接下来的章节中,我们将讨论更多的实际问题,涵盖数据分析与统计、树与网络、回归与预测、博弈论以及优化等主题。我们希望本书能够为你解决数学问题提供基础,并为你进一步探索数学世界提供工具。
本书主要面向那些熟悉Python并且想用Python解决某种数学问题的人。在前几章中,我们旨在为那些不熟悉基础知识的读者简单介绍一些数学背景知识,但由于篇幅限制,我们只能点到为止。我们会在每一章的末尾提供一些拓展阅读的建议,以引导你找到可以深入学习的资源。希望本书能够帮助你着手解决数学问题,并激发你对这些主题背后的数学知识的好奇心。
第1章介绍本书后续内容所需的一些基本工具和概念,包括用于数学编程的主要Python包:NumPy和SciPy。
第2章涵盖使用Matplotlib绘制图形的基础知识,这些知识几乎可以用于解决所有数学问题。
第3章介绍微积分中的主题,如微分和积分,以及一些更高级的主题,如常微分方程和偏微分方程。
第4章介绍随机性和概率的基本原理,以及如何使用Python探索这些原理。
第5章介绍如何使用NetworkX包在Python中处理树和网络(图)。
第6章会提供多种使用Python处理、操作和分析数据的技术。
第7章描述使用Statsmodels包和scikit-learn进行数据建模和预测未来值的各种技术。
第8章展示如何使用Shapely包在Python中处理几何对象。
第9章介绍优化和博弈论,利用数学方法寻找问题的最佳解决方案。
第10章涵盖使用Python解决数学问题时可能遇到的各种情况。
为了更好地利用本书,你需要掌握Python的基础知识。我们并不假定你有任何数学知识,不过如果你熟悉一些基本的数学概念,你将能更好地理解我们讨论的技术的背景和细节。
你需要使用较新版本的Python,至少是Python 3.6,建议使用更高版本(本书代码已在Python 3.10上进行了测试,在Python 3.6到Python 3.10的中间版本上应该也能够正常运行)。你可能更倾向于使用Anaconda这个Python发行版本,它包含了本书所需的许多软件包和工具。如果是这种情况,你应该使用conda包管理器来安装这些包。所有主要操作系统——Windows、macOS和Linux,以及许多其他平台都支持Python。
本书中使用的Python包及其在撰写代码时的版本如下:NumPy 1.23.3,SciPy 1.9.1,Matplotlib 3.6.0,Jax 0.3.13(以及jaxlib 0.3.10),Diffrax 0.1.2,PyMC 4.2.2,pandas 1.4.3,Bokeh 2.4.3,NetworkX 3.5.3,scikit-learn 1.1.2,StatsModels 0.13.2,Shapely 1.8.4,NashPy 0.0.35,Pint 0.20.1,Uncertainties 3.1.7,Xarray 2022.11.0,NetCDF4 1.6.1,CartoPy 0.21.0,Cerberus 1.3.4,Cython 0.29.32,Dask 2022.10.2。
你可能更喜欢在Jupyter Notebook中而不是在简单的Python文件中运行本书中的示例代码。在本书的某些地方,你可能需要重复执行绘图命令,因为这些图不能像当前所示的那样在后续单元格中得到更新。
你可以从GitHub下载本书的示例代码文件,链接为https://github.com/PacktPublishing/Applying-Math-with-Python-2nd-Edition。如果代码有更新,那么GitHub代码库中的代码也将进行更新。