高斯消元法 解 线性方程
对于Ax=b:
for i := 1 to n-1: for j := i+1 to n: if a(i,j)==0: substitute row j with some row below j row j := row j - row i * a(j,i) / a(i,i)
结合矩阵相乘的row picture来看,高斯消元每一步均可看做是一个矩阵E乘以A,例如:
( E_{i,j}A=egin{bmatrix}1 & 0 & 0\ 1 & 1 & 0\ 0 & 0 & 1end{bmatrix}egin{bmatrix}mathbf{a_1}\mathbf{a_2}\mathbf{a_3}end{bmatrix}=egin{bmatrix}mathbf{a_1}\mathbf{a_1+a_2}\mathbf{a_3}end{bmatrix} )
Eij乘以A得到EA的意义是:第一行结果不变,第二行结果是原第一行加上原第二行,第三行结果不变。将所有Eij相乘(包括逆向迭代的过程),得到的结果就是A的逆矩阵(1.如果有逆的话;2.不考虑行交换):A-1Ax = Ix = x
将b并入A,得到增广矩阵 [A b],目的是让对A的操作均等效在b中(相当于Eij乘以b),之后对增广矩阵进行高斯消元得到 [A-1A A-1b],即 [ I A-1b],A-1b即为线性方程的解。
总结:1. 构造增广矩阵;2. 对增广矩阵进行高斯消元。
逆矩阵
判断A是否可逆
这里讨论的逆矩阵都是方阵的逆。假如A是m*n的,B是n*m的,AB=Im,BA=In,我们似乎能定义:B就是非方阵A的逆矩阵。
为什么不讨论非方阵矩阵的逆?可以证明上述情况下,m=n,也就是A必须是方阵。
Quora的一个直观解释是,我们可以从“线性变换”的角度看这个问题:一个m*n的矩阵A,可以看做 n维空间 到 m维空间 的一个转化。它的逆矩阵是 m维空间 到 n维空间 的一个转化。假如n>m,那么A的转化就是“高维到低维”的一个转化,也就是不可逆的(我们可以从人得到影子,但是无法从影子得到人)。
如果A满足以下条件之一,A就是可逆的:
- 消元之后有n个主元pivot(也就是A满秩) or
- Ax=0无非零解(否则(左)A-1Ax=x=(右)A-10=0) or
- A的行列式不等于0
利用Gauss-Jordan消元法求A-1
设A-1=[ a b; c d],AA-1按照column picture可以看做两个线性方程:A*[a;c]=[1;0]和A*[b;d]=[0;1],将这两个方程同时解(也就是增广矩阵右侧是矩阵I)就是Gauss-Jordan消元法:
( A^{-1}egin{bmatrix}A & Iend{bmatrix}=egin{bmatrix}I & A^{-1}end{bmatrix} )
将求逆过程看做对系数矩阵 [A I] 进行高斯消元,将所有Eij相乘(见高斯消元)得到A的逆矩阵。
总结:1. 构造大的增广矩阵;2. 对增广矩阵进行高斯消元。
从GJ消元法得到的一个不大不小的推论:假如L是下三角矩阵,那么L的逆也是下三角矩阵(考虑求L的逆的过程即可得出)。
注:单位矩阵,常标注为 I (identity matrix),但有时也被标为 E(elementary matrix)。
矩阵的LU分解
L=Lower,是一个下三角矩阵, U=Upper,是一个上三角矩阵。高斯消元的过程可以理解为A的LU分解:
- U就是消元之后的系数矩阵
- L是高斯消元每一步之积E的逆,EA=U,A=LU,L的对角线是1,下三角矩阵中每个元素 l(i,j) 都是高斯消元的系数 c(i,j)
- (E也是下三角矩阵,对角线也等于1,但是下三角中每个元素就没有这个性质)
可以按照row picture结合高斯消元的步骤来理解:
(row 3 of U) = (row 3 of A) - c(3,1)*(row 1 of U) - c(3,2)*(row 2 of U) =>高斯消元的步骤
(row 3 of A) = c(3,1)*(row 1 of U) + c(3,2)*(row 2 of U) + 1*(row 3 of U) =>row picture的含义
U还能再分解为DU,D=diagonal是对角线矩阵,对角线元素等于U的主元(U的每一行都要除以相应的主元)。
以上假设A不需要进行行交换,有时需要对A的行进行调整,就需要permutation matrice P:PA=LU (这就是matlab函数lu的参数意义)
转置矩阵
- (AB)T = BT AT
- (A-1)T = (AT)-1
AB是B的行的组合,BT AT是BT的列的组合。对称矩阵的逆还是对称的。任何矩阵乘以其转置得到一个对称矩阵:(RRT)T==RTTRT=RRT.对称矩阵分解成LDU后,L与U互为转置。