rref
简化的行阶梯形矩阵(Gauss-Jordan 消去法)
说明
示例
创建一个矩阵并计算简化行阶梯形矩阵。在这种形式中,矩阵在每列的主元位置具有前导 1。
A = magic(3)
A = 3×3
8 1 6
3 5 7
4 9 2
RA = rref(A)
RA = 3×3
1 0 0
0 1 0
0 0 1
3×3 幻方矩阵为满秩,因此简化行阶梯形矩阵是单位矩阵。
现在,计算 4×4 幻方矩阵的简化行阶梯形矩阵。指定两个输出以返回非零主元列。由于该矩阵秩亏,因此结果不是单位矩阵。
B = magic(4)
B = 4×4
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
[RB,p] = rref(B)
RB = 4×4
1 0 0 1
0 1 0 3
0 0 1 -3
0 0 0 0
p = 1×3
1 2 3
对增广矩阵使用 Gauss-Jordan 消去法来求解线性系统并计算逆矩阵。这些方法主要用于学术研究,因为有更高效和数值稳定的方法来计算这些值。
创建一个 3×3 幻方矩阵。在矩阵的末尾添加一个额外的列。此增广矩阵表示线性系统 ,其中额外的列对应于 。
A = magic(3); A(:,4) = [1; 1; 1]
A = 3×4
8 1 6 1
3 5 7 1
4 9 2 1
计算 A
的简化行阶梯形矩阵。对 R
进行索引以提取该额外(增广)列中的项,该列包含线性系统的解。
R = rref(A)
R = 3×4
1.0000 0 0 0.0667
0 1.0000 0 0.0667
0 0 1.0000 0.0667
x = R(:,end)
x = 3×1
0.0667
0.0667
0.0667
求解此线性系统的更高效方法是使用反斜杠运算符,即 x = A\b
。
创建一个类似的幻方矩阵,但这次在末尾列追加一个相同大小的单位矩阵。
A = [magic(3) eye(3)]
A = 3×6
8 1 6 1 0 0
3 5 7 0 1 0
4 9 2 0 0 1
计算 A
的简化行阶梯形矩阵。在此形式中,额外的列包含该 3×3 幻方矩阵的逆矩阵。
R = rref(A)
R = 3×6
1.0000 0 0 0.1472 -0.1444 0.0639
0 1.0000 0 -0.0611 0.0222 0.1056
0 0 1.0000 -0.0194 0.1889 -0.1028
inv_A = R(:,4:end)
inv_A = 3×3
0.1472 -0.1444 0.0639
-0.0611 0.0222 0.1056
-0.0194 0.1889 -0.1028
计算逆矩阵的更高效方法是使用 inv(A)
。
以一个包含四个方程和三个未知数的线性系统为例。
创建一个表示该方程组的增广矩阵。
A = [1 1 5; 2 1 8; 1 2 7; -1 1 -1]; b = [6 8 10 2]'; M = [A b];
使用 rref
以简化行阶梯形矩阵表示该方程组。
R = rref(M)
R = 4×4
1 0 3 2
0 1 2 4
0 0 0 0
0 0 0 0
R
的前两行包含表示 和 关于 的方程。接下来的两行表示存在至少一个适合右侧向量的解(否则其中一个方程将显示为 )。第三列不包含主元,因此 是自变量。因此, 和 的解有无限多个,可以自由选择 。
例如,如果 ,则 且 。
从数值的角度来看,求解该方程组的更高效方法是使用 x0 = A\b
,此方法(对于矩形矩阵 A
)计算最小二乘解。在这种情况下,您可以使用 norm(A*x0-b)/norm(b)
检查解的精确度,通过检查 rank(A)
是否等于未知数的数目来确定解的唯一性。如果存在多个解,则它们都具有 形式,其中 是零空间 null(A)
且 可以自由选择。
输入参数
输入矩阵。
数据类型: single
| double
复数支持: 是
主元容差,指定为标量。如果主元列中的最大元素(按绝对值)低于容差,则该列将归零。这可以防止使用小于容差的非零主元元素进行除法和乘法。
数据类型: single
| double
输出参量
A
的简化行阶梯形矩阵形式,以矩阵形式返回。
非零主元列,以向量形式返回。p
中的每个元素均为 A
的列索引。您可以使用 p
估算下面几个量:
length(p)
是A
的秩的估计值。x(p)
包含线性系统Ax = b
中的主元变量。A(:,p)
是A
范围的依据。R(1:r,p)
是r
×r
单位矩阵,其中r = length(p)
。
局限性
对于计算矩阵的秩和基向量,
rank
、orth
、null
通常更快、更准确。建议使用
mldivide
求解线性系统问题。
详细信息
部分主元消去法的做法是在主元列中选择具有最大绝对值的列元素,然后交换矩阵的行以使该元素处于主元位置(行中最左边的非零元素)。
例如,在以下矩阵中,算法首先确定第一列中的最大值((2,1) 位置中的值,等于 1.1
),然后交换完整的第一行和第二行,使该值出现在 (1,1) 位置。
在高斯消去法中使用部分主元消去法可减少(但会不消除)计算中的舍入误差。
满足以下条件时,矩阵为行阶梯形式:
所有非零行都在全部为零的行之上。
每一行的首项系数严格位于其上一行的首项系数的右侧。
行阶梯形式的矩阵的示例如:
简化行阶梯形式的另一项要求是:
每个首项系数必须为 1,并且必须是其列中唯一的非零值。
虽然单位矩阵最常与简化行阶梯形式相关联,但也可与其他形式相关联。另一个简化行阶梯形式的矩阵的示例如:
算法
rref
通过部分主元消去法实现 Gauss-Jordan 消去法。(max(size(A))*eps*norm(A,inf)
) 的默认容差检验可忽略不计的列元素,这些列元素会归零以减少舍入误差。
扩展功能
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2006a 之前推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)