在线性代数中,线性系统能够解决很多的问题。
理论上讲,等式可以带有实数,复数,事实上可以是任意域。
2.4.1 线性方程
变量和常量写成的等式
一个未知数 直接移项
两个未知数 得到代入法
得到多组解
这张图是从geometric角度 绘制出
线性方程的定义
The set of all solutions to a linear equation of two unknowns consists of a line;hence the name “linear equation.”
2.4.2 两个未知数的线性方程
得到相交,平行,重合三种情况
2,3两种情况发生的条件如下:
2,3的区别在于:
消元法求解(ps:跟中学里学的没差)
作者给出了一个例子
这里还是中学里的知识
2.4.3 一般线性系统
下面把直线方程上升到矩阵
c1 = c2 = .. = cm = 0的被称为 均质系统(homogeneous system)
根据矩阵相乘的特性,把系数放在一个矩阵中,把变量放在一个单列矩阵中,得到的值也是一个单列矩阵
解一般线性系统的方法有很多,广泛使用的是 高斯消元法(Gaussian elimination )
我在附录A中找到了这个方法。
在高斯消元法之前,先讲解三角形方程组(Triangular System):
用回代法(back substitution)解
后面有该算法的实现
高斯消元法(Gaussian elimination )
用回代法技巧,首先将该系统一步一步的转化成三角型,然后代入计算。
- 交换两行
- 对其中一行乘一个非零的系数
- 用他们的和替换两行(合并两行)
其中 exchanging two rows 的要点是什么?
在无限精度的算法中,这个要点没有意义。但是在计算机实现时候,这是相当有意义的一部转换。
下面是Johnson and Riess 在1982所提出的例子,一个简单的两个未知数,两个方程的连列。
在没有误差的算法中,得到正确的结果如上。
但是在有误差的计算机中,假设6位数,只能够存储3位的情况下:
得到错误的结果。
上面这段有两层意思
- 误差会随着back-substitution 不断累计
- 误差有受到分母和分子的相对大小的影响
(后面这一点没有很好的理解,希望得到解答~)
这里重新排列的标准是 取x1得到系数绝对值最大(ps:是否这样能通过增大分母而减小误差呢?)
(ps:最后答案应是 (1, -3, 2))
作者给出了伪代码如下:
抱歉,我暂时还无法用python实现这段伪代码,下面是我的疑惑
- pivot step中,为什么不是对行循环而是列?以为前面的例子中,排序最高的-3是针对同一列中的x1来说的。
- 不是很能理解,这个跟三角方程的关系
接下来从附录回到 Linear Systems
2.4.4 高斯消去法,梯阵和阶级(Row Reductions, Echelon Form, and Rank)
通过上述例子,得到的结论:
对一行乘一个系数,以及用一行和另外一行的和替换该行,不影响结果。
(今后用矩阵代表,线性方程系统)另外一个结论是,用交换行不影响结果。
把上述两点结合起来,可以得到:
通过消去行的主要元素,我们通过回代法解得一个矩阵。得到倒三角形
upper triangular形状。
这里可以观察到, r <= m,因为部分被消去
有的时候也会出现下面这样的特殊情况:
ci=0,完全消去
ci != 0, 解不存在。
以上这些操作都能让系统变得更小
r=n时,矩阵有唯一解
r != n时,矩阵多个解
初等行变换(elementary row operations):
- 交换两行
- 行乘一个非0常数
- 用一行和其他行的和能代替该行
消行( row reductions):合并造成至少一个非0行消去
消行的结果是得到,梯形(echelon form)。最终的矩阵是,完全消除(“completely reduced”)矩阵。他的size表示这他的阶数(rank)。也就是说,阶数是一个矩阵固有的属性,只有在他完全消行之后能显示出来。
一个矩阵的阶数,关系到他的基础层面(concepts of basis),维度,独立线性在下面几个方面:阶数表示在矩阵行(列)方向上的线性独立;如果阶数=维度,行可以被看作定义了矩阵的基本空间。
如果两行方向上不是线性独立的,有以下规则:
(最后一个section不是很懂)