4.1.1 线性代数综述
为什么要在介绍NumPy库之前介绍线性代数呢?主要原因是NumPy库拥有一个新的数据结构:Series。而它正好可以用来表示矩阵。NumPy作为一个新兴的Python的第三方库,拥有大量关于矩阵以及线性代数的运算的方法和类。这里先通过平面解析几何引入相关概念。
平面解析几何是以代数为工具来研究平面几何的。在一般情况下,通过建立平面直角坐标系将平面上的几何对象代数化。例如,用一个二元有序数组(x,y)表示平面某一点P的坐标,记为P(a,b),a和b就是代数对象,于是平面上的点和有序数组就建立了一一对应的关系,这称为“几何对象代数化”。连接平面上的两个点,可以得到一个二元一次方程。而两条直线的交点坐标,可以看作两个二元一次方程构成的方程组的一对解。所以,当且仅当两条直线平行时,对应的线性方程组无解;当且仅当两条直线重合时,对应的线性方程组有无穷多解。
二元一次方程组求解至少需要两个方程;而n元一次方程组求解则至少需要n个方程联立。线性代数将这些二元一次方程组化为矩阵的形式进行计算,以简化“消元法”求解n元一次方程组的复杂计算过程,将复杂的消元计算转为矩阵计算,现在的复杂度就只有O(1)了。
在空间解析几何中,通过建立空间直角坐标系,将空间的点与三元数组建立一一对应的关系,将空间中的平面与三元一次方程建立一一对应的关系。空间中平面的位置关系,可以通过研究三元一次方程组解的情况来确定。二元一次方程在平面内是一条直线,而三元一次方程在空间中是平面。总而言之,一次方程就是“线性方程”,而“线性方程组”是线性代数的一个重要的研究内容。
从平面到三维空间乃至n维空间,是存在线性的,称这样的空间是“线性空间”。实际上,二维空间(即“平面”)还有三维空间都是n维空间(即“线性空间”)的特例。
所以在平面上,只需要两个不共线的向量e1、e2,依向量分解定理,任意一个向量a均可以唯一分解为e1、e2的线性组合,即存在唯一一组数(x,y)使得a=x·e1+y·e2,(x,y)就称为向量a在仿射坐标系[O;e1,e2]下的坐标。需要注意的是,在仿射坐标系[O;e1,e2]中,基向量e1、e2既不需要相互垂直,也不需要是单位向量,只需不共线即可。同理,在三维空间中,仿射坐标系[O;e1,e2,e3]的基向量e1、e2、e3只需不共面即可。那在n维向量空间的仿射坐标系下呢?同理,要求它们“线性无关”。
同时,一次项可以通过“配方”(平移)来消除,在n维向量空间中,主要研究一元二次齐次多项式,这被称为“二次型理论”,当然n元二次也算作“二次型理论”的范畴。例如,给定一个二元二次方程,可以通过坐标变换(即旋转和平移)将其转化为标准方程来判断它的形状。二次曲线会涉及长度和夹角等性质,推广到二次型时,需引入内积的概念,由此又会引出相应的度量概念,如向量的模、正交等。在二次型理论中,还会研究如何通过线性变换将二次型变换为标准的二次型(只含平方项,不含交叉项的二次型),这种操作称为“线性变换”。
线性代数的主要研究内容有以下4点。
(1)线性方程组。
(2)向量的线性相关和线性无关。
(3)二次型理论。
(4)线性空间与其相关的线性变换。
不仅是“矩阵”,“行列式”也是线性代数、二次型的重要研究工具。