高斯消元法求矩阵的秩
现在假设一个 \(n\times n\) 矩阵 \(B=\)
\[\begin{bmatrix}a_{1,1}&\cdots&a_{1,n}\\\vdots&\ddots&\vdots\\a_{n,1}&\cdots&a_{n,n}\end{bmatrix}
\]
目标是将其通过线性变换使得其成为一个上三角矩阵。操作如下:
- 对每一列从小到大枚举,假设现在枚举到第i列,则该矩阵的前i行i列的矩阵应该已经成为一个上三角矩阵,且前 \(i\) 列第 \(i+1\) 到第 \(n\) 列均为 \(0\).形如:(假设现在枚举到第2列);
\[\begin{bmatrix}a_{1,1}&a_{1,2}&a_{1,3}&\cdots&a_{1,n}\\0& a_{2,2} &a_{2,3} &\cdots&a_{2,n}\\0&0&a_{3,3}&\cdots&a_{3,n}\\\vdots&\vdots&\vdots&\ddots&\vdots\\0&0&a_{3,n}&\cdots&a_{n,n}\end{bmatrix}
\]
-
对于每个元,枚举每一列,找到该元系数绝对值最大的一列 \(i\),将第 \(i\) 列换到第 \(i\) 行;
-
通过加减消元使得 \(a_{i,i}=1\);
-
重复此操作n次,直到整个矩阵被化为一个上三角矩阵。此时,矩阵对角线上非0元素的个数即为矩阵的秩。
对于第2步的两点说明:
-
枚举时,如果该元绝对值最大的系数是0,则该元可任取;
-
寻找系数绝对值最大的一列可以保证精度相对误差较小,但是这样也会导致精度趋向最大误差的概率更大。任取系数非0的一列也可保证算法的正确性。在实际应用中可因不同需求而选用不同方法。
注意到高斯消元法的所有变换均为线性变换,所以不会影响解的变化。其正确性显然可用归纳法证得。