程序员数学:用Python学透线性代数和微积分
上QQ阅读APP看书,第一时间看更新

第一部分 向量和图形

第一部分将深入研究称为线性代数的数学分支。线性代数能够在非常高的层次上处理多维度的计算,这里的“维度”是一个几何概念,当我说“正方形是二维的”或者“立方体是三维的”时,你应该能直观地了解我的意思。线性代数让我们把关于维度的几何概念变成可以具体计算的东西。

线性代数中最基本的概念是向量(vector),可以把它看作某个多维空间中的一个数据点。举个例子,你在高中学习代数和几何时一定听说过二维坐标平面。正如第2章将介绍的那样,二维空间中的向量对应于平面上的点,这些点可以用形式为的有序数对来表示。第3章将考虑三维空间,其中的向量(点)可以用形式为的三元数对来表示。基于这两种情况,我们可以使用向量的集合来定义几何形状,而这些形状又可以被转换成有趣的图形。

线性代数中的另一个关键概念是线性变换(linear transformation),将在第4章中介绍。线性变换是一种函数,将一个向量作为输入并返回一个向量作为输出,同时保持所操作向量(在特殊意义上)的几何形状。例如,如果一个向量(点)的集合位于二维平面的一条直线上,在应用线性变换后,它们仍然会位于一条直线上。第5章会介绍矩阵(matrix),这是一种可以表示线性变换的矩形数组。我们对线性变换的最终应用是,在一个Python程序中,随着时间的推移将其应用到图形之上,从而得到三维动画。

虽然只能对二维和三维空间中的向量和线性变换进行可视化处理,但我们其实可以定义任意维数的向量。在维空间中,向量是一个包含个元素的元组,形式为。第6章会对二维和三维空间的概念进行逆向研究,得到向量空间(vector space)的一般概念,并更具体地定义维度的概念。值得注意的是,由像素构成的数字图像可以被看作高维向量空间中的向量,可以通过线性变换来进行图像处理。

最后,第7章会研究线性代数中最普遍的计算工具:解线性方程组(system of linear equations)。你可能还记得高中代数课上的内容:两个线性方程的解可以告诉我们两条直线在平面上的交点的位置。一般来说,线性方程能帮助我们求得线、平面或高维空间在向量空间中的相交位置。通过使用Python处理线性方程组,我们将构建视频游戏引擎的第一个版本。