线性代数及其应用-线性代数中的线性方程组

原书链接:线性代数及其应用

0.1 前言

完成微积分的学生学习起来更易接受。

本身特点

  • 提前介绍主要概念
  • 矩阵乘法的现代观点:定义和证明中使用矩阵的“列”,而非“元素”,核心课题是将矩阵与向量之乘积$Ax$视为关于$A$的列的一个线性组合。这种现代方法简化了很多论述,并将向量空间和线性系统的研究联系在了一起。
  • 线性变换:贯穿整本书,增强了本书的几何趣味。
  • 特征值和动力系统:特征值来源并应用于离散动力系统和连续动力系统。
  • 正交性和最小二乘法:与普通入门教材相比,本书对这些主题的讨论更为全面。

0.2 给学生的注释

独立完成尽可能多的习题,过早查看答案,会误以为已经理解了尚未理解的概念。

线性代数是一种语言,用学习外语的方法每天学习这种语言

数值计算的注解

关注一下这部分内容,因为现实中的应用通常会涉及一定误差下的计算,这部分可帮助你理解计算中潜在的困难。

Study Guide

善用之。

第一章 线性代数中的线性方程组

1949年夏末,哈佛大学教授列昂惕夫(Leontief)使用当时最大的计算机之一Mark II计算包含500个未知数的500个方程的方程组。由于运算量“过大”,他只好将问题简化为包含42个未知数的42个方程的方程组。他后来获得了诺贝尔经济学奖,他在哈佛的工作标志着应用计算机分析大规模数学模型的开始

线性代数在科学的各个领域有极为广泛的应用。

线性方程组是线性代数的核心,本章以它来引入线性代数的许多重要概念。先介绍求解线性方程组的一个系统方法;再说明线性方程组等价于一个向量方程与矩阵方程,其后引出线性组合、线性表示与线性变换等概念。

1.1 线性方程组

本章先是讨论求解线性方程组的一个系统方法。早在初中数学里,我们就学过了线性方程组的求解方法,当时实际上已经提到了解法的一般过程,核心部分是消元,因为只有消元才能将方程转化为可直接求解的一元方程。本章讨论的系统方法也是循着这一思路。

包含未知数$x_1, x_2, \cdots, x_n$的一个线性方程是形如

$$a_1x_1 + a_2x_2 + \cdots + a_nx_n = b$$

的方程,其中$b$与诸系数是实数或复数,通常为已知数。

线性方程组是由一个或几个包含相同变量$x_1, x_2, \cdots, x_n$的线性方程组成的。

方程组的一个是一组数$(s_1, s_2, \cdots, s_n)$,解满足方程组的每一个方程。方程组所有可能的解的集合称为其解集。两个方程组称为等价的,若它们有相同的解集。

最简单的线性方程是二元一次方程,在几何上它对应于一条直线,它的解与直线上的点一一对应。而两个二元一次方程构成方程组的解集,即对应于两条直线的交点。两条直线可能会相交、平行或重合,这意味着该类方程组的解集也有三种情形:

  1. 唯一解
  2. 无穷多解
  3. 无解

我们说一个线性方程组是相容的,若它有一个或无穷多个解(即有解);否则称它为不相容的(即无解)。

1.1.1 矩阵记号

给定一个线性方程组,可以想见,该方程组解集的情况取决于系数和等式右端的常数,与未知数的具体记号无关,所以可以用一个矩阵(矩形阵列)来表示方程组,如

$$\begin{split}
x_1 - 2x_2 + x_3 = 0
\
2x_2 - 8x_3 = 8
\
-4x_1 + 5x_2 + 9x_3 = -9
\end{split}$$

矩阵

$$\begin{bmatrix}
1 & -2 & 1 \[0.3em]
0 & 2 & -8 \[0.3em]
-4 & 5 & 9
\end{bmatrix}$$

称为方程组的系数矩阵,而加上方程组右端常数列的

$$\begin{bmatrix}
1 & -2 & 1 & 0 \[0.3em]
0 & 2 & -8 & 8 \[0.3em]
-4 & 5 & 9 & 9
\end{bmatrix}$$

称为其增广矩阵

矩阵的定义引出其维数的概念,表示其行列数。上述增广矩阵的维数是3行4列,一般矩阵称$m \times n$矩阵。

1.1.2 线性方程组的解法

基本思路是把方程组用一个更容易的等价方程组代替,类似于我们熟悉的消元法

化简方程组有三种基本变换(即行初等变换):

  • 倍加
  • 对换
  • 倍乘(一行的所以元素乘以同一个非零数)

容易证明,一个方程组的增广矩阵经过若干次行初等变换后,新方程组与原方程组解集相同。而且,这些行变换是可逆的

1.1.3 存在与唯一性问题

前面提及,线性方程组的解集有三种可能,可归为如下两个基本问题:

  1. 方程组是否相容,即它是否有解?
  2. 若它有解,解是否唯一?

通过行变换法,我们可以借助化简了的增广矩阵判断出方程组是否有解,进一步得出其解是否唯一。

1.1.4 解方程组与数值计算

计算机中的浮点数表示难免出现舍入误差,这种不精确性有时需要引起注意。

1.2 行化简与阶梯型矩阵

将1.1中的方法精确化后,可以得到行化简算法,可以解任意线性方程组,而且容易编程实现。这样就可以解决1.1中提出的存在与唯一性问题。该算法适用于任意矩阵。

矩阵中的非零行/列指矩阵中至少包含一个非零元素的行/列,非零行的先导元素指该行中最左边的非零元素。由此引出两类矩阵:

定义:一个矩阵称为阶梯形(或行阶梯形),若它有以下三个性质:

  1. 每一非零行在零行之上;
  2. 每一行的先导元素所在的列位于前一行先导元素的右面;
  3. 某一先导元素所在列下方元素都是零。

若一个阶梯形矩阵还满足以下性质,则称它为简化阶梯形

  1. 每一非零行的先导元素是1;
  2. 每一先导元素1是该元素所在列的唯一非零元素。

若一个矩阵具有阶梯形(简化阶梯形),它就称为阶梯形(简化阶梯形)矩阵。一个矩阵可以行化简为阶梯形矩阵,不同的方法可能得到不同的阶梯形,但一个矩阵只能化为唯一的简化阶梯形矩阵。

定理1:每个矩阵行等价于唯一的简化阶梯形矩阵

1.2.1 主元位置

矩阵化为阶梯形后,进一步化为简化阶梯形时,先导元素的位置并不改变,而简化阶梯形是唯一的,故一个矩阵的所有阶梯形的先导元素在相同的位置上。这些先导元素对应于简化阶梯形的先导1。

定义:矩阵中的主元位置是对应于其阶梯形中先导元素的位置,含有主元位置的列称为主元列

将矩阵化为阶梯形就可以确定出主元位置,该过程可手工计算完成,由此可抽象出一个通用的行化简算法

1.2.2 行化简算法

该算法分为5步,1-4步化矩阵为阶梯形,自左至右,称为向前步骤,第5步化阶梯形为简化阶梯形,自右至左,称为向后步骤

数值计算的注解:第2步选择主元时,一般选择一列中绝对值最大的元素作为主元,此方法称为部分主元法,可减少舍入误差。

1.2.3 线性方程组的解

行化简算法应用于方程组的增广矩阵时,可以得出线性方程组解集的一种显式方法。比如,一个方程组化简之后如下:

$$\begin{split}
x_1 - 5x_3 = 1
\
x_2 + x_3 = 4
\
0 = 0
\end{split}$$

其相应的增广矩阵也得到了化简,对应于主元列的变量$x_1$和$x_2$称为基本变量,$x_3$则称为自由变量

若方程组是相容的,其解集可显式表示出来。如果有自由变量,则用其表示基本变量。由于件化阶梯形中,每个基本变量仅包含在一行(一个方程)中,这是容易表示的。上面的方程组解集可表示为:

$$\begin{cases}
x_1 = 1 + 5x_3 \
x_2 = 4 - x_3 \
x_3是自由变量
\end{cases}
$$

所谓自由变量是指它可以取任意的值。自由变量的值确定之后,基本变量的值也随之确定下来。这种解集表示称为通解,因为它给出了方程组所有解的显式表示。此种表示亦称为解集的参数表示,其中自由变量作为参数。

若方程组是相容的,且具有自由变量,那么其解集具有多种参数表示,一般约定为使用自由变量作为参数来表示。

1.2.4 回代

计算机程序在解线性方程组时,通常使用回代法求解,即在阶梯形基础上回代,而非求出简化阶梯形后再求解。一个浮算(flop)就是两个浮点数的一次运算,一般地行化简算法的向前步骤比向后步骤需要更多运算。使用Matlab的flops可以计算某次计算中所需要的浮算次数。

手工计算时求出简化阶梯形更不易出错。

1.2.5 存在与唯一性问题

虽然非简化阶梯形不能直接解出线性方程组,但已足以回答关于方程组的两个基本问题,也就是如下的定理。

定理2:存在与唯一性定理

线性方程组相容的充要条件是增广矩阵的最右列不是主元列。若方程组相容,当其没有自由变量,有唯一解;否则有无穷多解。