数值计算中初等矩阵的表示:如何用u、v实现所有初等行变换?
这个问题问得很到位!咱们先从初等矩阵的本质和秩1修正的逻辑说起,再逐一对应三种初等行变换找到对应的u和v。
为什么这个定义成立?
首先,初等矩阵是对单位矩阵执行一次初等行变换得到的矩阵。而所有初等行变换带来的单位矩阵的修改,都可以等价于加上一个秩1矩阵(也就是uv^T的形式,因为向量外积的秩最多是1)。这种表示的核心优势在于:只需要存储两个n维向量u和v,就能替代存储整个n×n的初等矩阵,大大节省存储空间;同时秩1修正矩阵还有很多便于计算的性质(比如行列式、逆矩阵的快速推导)。
接下来我们逐一对应三种初等行变换,找到对应的u和v:
1. 倍加变换:将第j行的k倍加到第i行(i≠j)
这是最常见的初等行变换,对应的初等矩阵是把单位矩阵的第(i,j)位置改成k。我们可以把它拆成:
E = I + k e_i e_j^T
其中e_i是标准单位向量(第i个分量为1,其余全为0),e_j同理。
- 对应的u和v:
u = k e_i,v = e_j - 验证:
uv^T = k e_i e_j^T,这是一个只有第(i,j)位置为k,其余全为0的矩阵,加在单位矩阵I上正好得到倍加变换的初等矩阵。
例子:n=3,把第2行的2倍加到第1行,对应的E是:
[1 2 0] [0 1 0] [0 0 1]
取u=[2, 0, 0]^T,v=[0, 1, 0]^T,uv^T就是:
[0 2 0] [0 0 0] [0 0 0]
I加上这个矩阵正好等于E,完全正确。
2. 数乘变换:将第i行乘以非零常数c
这种变换是把单位矩阵的第(i,i)位置改成c,其余不变。我们可以写成:
E = I + (c-1) e_i e_i^T
- 对应的u和v:
u = (c-1) e_i,v = e_i - 验证:
uv^T = (c-1) e_i e_i^T,这是一个只有第(i,i)位置为c-1的矩阵,加在I上后,第(i,i)位置变为1+(c-1)=c,正好是数乘变换的初等矩阵。
例子:n=3,第2行乘5,对应的E是:
[1 0 0] [0 5 0] [0 0 1]
取u=[0, 4, 0]^T,v=[0, 1, 0]^T,uv^T就是:
[0 0 0] [0 4 0] [0 0 0]
I加上这个矩阵等于E,符合要求。
3. 交换变换:交换第i行和第j行(i≠j)
交换两行的初等矩阵是置换矩阵,看起来结构特殊,但其实也可以表示为I加上一个秩1矩阵:
E = I + (e_i - e_j)(e_j^T - e_i^T)
展开后可以看到,这个秩1矩阵会把I的第(i,i)和(j,j)位置的1抵消,同时在(i,j)和(j,i)位置补上1,正好实现两行交换。
- 对应的u和v:
u = e_i - e_j,v = e_j - e_i - 验证:
uv^T = (e_i - e_j)(e_j^T - e_i^T),展开后是e_i e_j^T - e_i e_i^T - e_j e_j^T + e_j e_i^T,加在I上就得到交换两行的矩阵。
例子:n=2,交换第1和2行,对应的E是:
[0 1] [1 0]
取u=[1, -1]^T,v=[-1, 1]^T,uv^T就是:
[-1 1] [1 -1]
I加上这个矩阵等于[[1-1, 0+1], [0+1, 1-1]] = [[0,1],[1,0]],完全正确。
额外补充:秩1修正矩阵的实用性质
这种表示方法不止是节省空间,还有很多好用的计算性质:
- 行列式:
det(I + uv^T) = 1 + v^T u(标量点积),比直接计算n×n矩阵行列式快得多。 - 逆矩阵:当
1 + v^T u ≠ 0时,(I + uv^T)^{-1} = I - (uv^T)/(1 + v^T u),这个公式推导和计算都很方便。
内容的提问来源于stack exchange,提问作者Ted

