MATLAB - 行最简形
MATLAB - 简化行阶梯形(RREF)
Section titled “MATLAB - 简化行阶梯形(RREF)”**简化行阶梯形(Reduced Row Echelon Form, RREF)**是矩阵的一种独特形式,对于求解线性方程组和理解线性代数中的矩阵特性至关重要。它通过对矩阵应用一系列初等行变换得到。MATLAB 的内置 rref 函数提供了一种强大且数值稳定的方法来计算它。
RREF 矩阵的特性
Section titled “RREF 矩阵的特性”如果一个矩阵满足以下所有条件,则它处于简化行阶梯形(RREF):
- 主元 1(Leading 1s):每个非零行中的第一个非零元素(称为主元)必须是 1。
- 主元列(Pivot Columns):每个主元(主元 1)是其所在列中唯一的非零元素。
- 阶梯形模式(Staircase Pattern):任意行中的主元总是在其上方行的主元的右侧。
- 零行(Zero Rows):所有只包含零的行都位于矩阵的底部。
概念示例:手动计算
Section titled “概念示例:手动计算”理解高斯-约旦消元法的手动步骤有助于理解 rref 函数的作用。让我们找出矩阵 A 的 RREF:
$$ A = \begin{bmatrix} 1 & 2 & 1 \ 2 & 4 & -3 \ 3 & 6 & 4 \end{bmatrix} $$
步骤 1:第一个主元已经为 1。使用它在其下方创建零。
$$ R_2 \leftarrow R_2 - 2 \times R_1 \implies \begin{bmatrix} 1 & 2 & 1 \ 0 & 0 & -5 \ 3 & 6 & 4 \end{bmatrix} $$
$$ R_3 \leftarrow R_3 - 3 \times R_1 \implies \begin{bmatrix} 1 & 2 & 1 \ 0 & 0 & -5 \ 0 & 0 & 1 \end{bmatrix} $$
步骤 2:移到下一个主元。下一个可用的主元在第三列。让我们将其变为 1(在 R3 中它已经是 1)。交换 R2 和 R3 以获得阶梯形。
$$ R_2 \leftrightarrow R_3 \implies \begin{bmatrix} 1 & 2 & 1 \ 0 & 0 & 1 \ 0 & 0 & -5 \end{bmatrix} $$
步骤 3:使用 R2 中的新主元在其上方和下方创建零。
$$ R_1 \leftarrow R_1 - 1 \times R_2 \implies \begin{bmatrix} 1 & 2 & 0 \ 0 & 0 & 1 \ 0 & 0 & -5 \end{bmatrix} $$
$$ R_3 \leftarrow R_3 + 5 \times R_2 \implies \begin{bmatrix} 1 & 2 & 0 \ 0 & 0 & 1 \ 0 & 0 & 0 \end{bmatrix} $$
结果矩阵现在处于 RREF 形式。
在 MATLAB 中使用 rref 函数
Section titled “在 MATLAB 中使用 rref 函数”MATLAB 通过 rref 函数自动化了整个过程。
R = rref(A)[R, p] = rref(A)R = rref(A, tol)R = rref(A):返回矩阵A的 RREF,使用高斯-约旦消元法和部分主元法以确保数值稳定性。[R, p] = rref(A):除了返回 RREF 外,还返回一个包含主元列索引的向量p。R = rref(A, tol):使用指定的容差tol来确定哪些元素可以忽略并应被视为零。这对于处理可能存在浮点数不精确性的实际数据至关重要。
示例 1:求解线性方程组
Section titled “示例 1:求解线性方程组”考虑以下系统: 2x + 4y = 10 4x + 9y = 19
% 定义增广矩阵 [系数 | 常数]A = [2 4 10; 4 9 19];
% 计算简化行阶梯形R = rref(A);
% 显示结果disp('The Augmented Matrix:');disp(A);disp('The RREF is:');disp(R);输出:
The Augmented Matrix: 2 4 10 4 9 19
The RREF is: 1 0 7 0 1 -1RREF [1 0 | 7; 0 1 | -1] 转换回方程为:
- 1x + 0y = 7 => x = 7
- 0x + 1y = -1 => y = -1
这是一个具有唯一解的系统。
示例 2:容差的重要性
Section titled “示例 2:容差的重要性”浮点数可能引入小误差。tol 参数帮助 rref 区分显著值和数值噪声。
% 一个近似秩亏的矩阵A = [1 2 3; 2 4 6.000001; 3 6 9];
% --- 使用默认(小)容差 ---% 微小的差异被认为是显著的。R_low_tol = rref(A);disp('RREF with default low tolerance:');disp(R_low_tol);
% --- 使用较大的容差 ---% 微小的差异被视为零。tol = 1e-5; % 任何小于此值的内容都将被视为 0R_high_tol = rref(A, tol);disp('RREF with higher tolerance of 1e-5:');disp(R_high_tol);输出:
RREF with default low tolerance: 1 2 0 0 0 1 0 0 0
RREF with higher tolerance of 1e-5: 1 2 3 0 0 0 0 0 0RREF 的实际应用
Section titled “RREF 的实际应用”除了求解线性系统,RREF 还用于:
- 查找矩阵的秩:秩是其 RREF 中非零行(或主元)的数量。
- 查找零空间(核)的基:通过使用 A 的 RREF 求解系统 Ax=0。
- 确定向量集的线性无关性。