Python 是一种功能强大且灵活的编程语言,非常有趣且易于学习。它是许多专业人士、爱好者和科学家的首选编程语言。Python 的强大之处在于它庞大的软件包生态系统和友好的社区,以及它与编译的扩展模块无缝通信的能力。这意味着 Python 非常适合解决各种问题,尤其是数学问题。
数学通常与计算和方程式联系在一起,但在现实中,这些都是一门更大学科中非常小的部分。数学的核心是解决问题,以及解决问题的逻辑、结构化方法。一旦你探索过去的方程,计算,导数和积分,你会发现一个美丽,优雅的结构广阔的世界。
本书介绍如何使用 Python 解决数学问题。它介绍了数学中的一些基本概念——以及如何使用 Python 处理这些概念——以及用于解决数学中大量主题的各种数学问题的模板。前几章重点介绍核心技能,如使用 NumPy 数组、绘图、微积分和概率。这些主题在整个数学中是非常重要的,作为本书其余部分的基础。在剩下的章节中,我们将讨论更多的实际问题,包括数据分析和统计、网络、回归和预测、优化和博弈论等主题。我们希望这本书能为你解决数学问题提供基础,并为你进一步探索数学世界提供工具。
读者需要具备 Python 的基本知识。虽然熟悉一些基本数学概念的读者会更好地理解我们所讨论的技术的背景和细节,但我们不假设他们有任何数学知识。
第 1 章基本包、函数和概念介绍了本书其余部分所需的一些基本工具和概念,包括数学编程的主要 Python 包、NumPy 和 SciPy。
第 2 章使用 Matplotlib 进行数学绘图介绍了使用 Matplotlib 进行绘图的基础知识,这在解决几乎所有数学问题时都很有用。
第三章微积分与微分方程介绍了微积分中的微分与积分等主题,以及一些更高级的主题,如常微分方程和偏微分方程。
第 4 章处理随机性和概率,介绍了随机性和概率的基本原理,以及如何使用 Python 来探索这些思想。
第 5 章处理树和网络介绍了使用 NetworkX 包在 Python 中处理树和网络(图形)。
第 6 章处理数据和统计,给出了使用 Python 处理、操作和分析数据的各种技术。
第 7 章回归和预测介绍了使用 Statsmodels 软件包和 scikit learn 对数据建模和预测未来价值的各种技术。
第 8 章几何问题演示了使用 Shapely 软件包在 Python 中处理几何对象的各种技术。
第 9 章寻找最优解介绍了最优化和博弈论,它们使用数学方法寻找问题的最优解。
第 10 章杂项主题涵盖了使用 Python 解决数学问题时可能遇到的各种情况。
本书中唯一的要求是 Python 的最新版本,至少是 Python 3.6,但最好是更高版本。一些读者可能更喜欢使用 Python 的 Anaconda 发行版,它附带了本书所需的许多包和工具。如果是这种情况,您应该使用conda包管理器来安装包。Python 在所有主要操作系统(Windows、macOS 和 Linux)以及许多平台上都受支持。下表列出了撰写本书时使用的主要图书馆及其版本:
| 本书所涵盖的软件/库 | 版本 | 第章 | | python | 3.6 或以上 | 全部的 | | 努比 | 1.18.3 | 全部的 | | 松软的 | 1.4.1 | 全部的 | | Matplotlib | 3.2.1 | 全部的 | | 熊猫 | 1.0.3 | 6 - 10 | | 博克 | 2.1.0 | 6. | | Scikit 学习 | 0.22.1 | 7. | | 达斯克 | 2.18.1 | 10 | | 阿帕奇·卡夫卡 | 2.5.0 | 10 |
如果您使用的是本书的数字版本,我们建议您自己键入代码或通过 GitHub 存储库访问代码(下一节提供链接)。这样做将帮助您避免与复制和粘贴代码相关的任何潜在错误。
有些读者可能更喜欢在 Jupyter 笔记本中阅读本书中的代码示例,而不是在简单的 Python 文件中。本书中有一两处可能需要重复打印命令。这些地方在说明书中有标记。
您可以从您的账户www.packt.com下载本书的示例代码文件。如果您在其他地方购买了本书,您可以访问www.packtpub.com/support并注册,将文件通过电子邮件直接发送给您。
您可以通过以下步骤下载代码文件:
- 登录或注册www.packt.com。
- 选择“支持”选项卡。
- 点击代码下载。
- 在搜索框中输入图书名称,然后按照屏幕上的说明进行操作。
下载文件后,请确保使用以下最新版本解压或解压缩文件夹:
- WinRAR/7-Zip for Windows
- 适用于 Mac 的 Zipeg/iZip/UnRarX
- 适用于 Linux 的 7-Zip/PeaZip
该书的代码包也托管在 GitHub 上的https://github.com/PacktPublishing/Applying-Math-with-Python 。如果代码有更新,它将在现有 GitHub 存储库中更新。
我们的丰富书籍和视频目录中还有其他代码包,请访问**https://github.com/PacktPublishing/** 。看看他们!
本书的行动代码视频可在查看 https://bit.ly/2ZQcwIM 。
本书中使用了许多文本约定。
CodeInText:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。下面是一个示例:decimal包还提供了一个Context对象,它允许对Decimal对象的精度、显示和属性进行细粒度控制
代码块设置如下:
from decimal import getcontext
ctx = getcontext()
num = Decimal('1.1')
num**4 # Decimal('1.4641')
ctx.prec = 4 # set new precision
num**4 # Decimal('1.464')当我们希望提请您注意代码块的特定部分时,相关行或项目以粗体显示:
from numpy import linalg
A = np.array([[3, -2, 1], [1, 1, -2], [-3, -2, 1]])
b = np.array([7, -4, 1])任何命令行输入或输出的编写方式如下:
python3.8 -m pip install numpy scipy粗体:表示一个新术语、一个重要单词或您在屏幕上看到的单词。例如,菜单或对话框中的单词出现在文本中,如下所示。下面是一个示例:“从管理面板中选择系统信息。”
Warnings or important notes appear like this. Tips and tricks appear like this.
在这本书中,你会发现几个经常出现的标题(准备就绪、如何做……、如何工作……、还有更多……、另见。
要明确说明如何完成配方,请使用以下部分:
本节告诉您配方中的预期内容,并介绍如何设置配方所需的任何软件或任何初步设置。
本节包含遵循配方所需的步骤。
本节通常包括对上一节中发生的情况的详细解释。
本节包含有关配方的附加信息,以使您更了解配方。
本节提供了有关配方的其他有用信息的有用链接。
我们欢迎读者的反馈。
一般反馈:如果您对本书的任何方面有疑问,请在邮件主题中注明书名,并发送电子邮件至customercare@packtpub.com。
勘误表:尽管我们已尽一切努力确保内容的准确性,但还是会出现错误。如果您在本书中发现错误,如果您能向我们报告,我们将不胜感激。请访问www.packtpub.com/support/errata,选择您的书籍,单击 errata 提交表单链接,然后输入详细信息。
盗版:如果您在互联网上发现我们作品的任何形式的非法复制品,请您提供我们的位置地址或网站名称,我们将不胜感激。请通过copyright@packt.com与我们联系,并提供该材料的链接。
如果您有兴趣成为一名作家:如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请访问authors.packtpub.com。
请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在读者可以看到并使用您的无偏见意见做出购买决定,我们 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们书籍的反馈。非常感谢。
有关 Packt 的更多信息,请访问Packt.com。