MatLab中矩阵的RREF

时间:2013-04-10 22:23:10

标签: arrays matlab matrix

我对手动RREF给定矩阵有疑问。所以我部分地完成了它,但我无法弄清楚从哪里开始。谢谢!

 M = [1 0 2 1 18; 
     0 -3 -2 0 -8; 
     -2 -3 0 0 -41; 
     1 0 -1 1 16];
 M2=M;
 M2(3,:) = M2(3,:)+(2*M2(1,:));
 M2(4,:) = M2(4,:)-M2(1,:);
 M3 = M2;
 M3(3,:) = M3(3,:)+M3(2,:);
 M3(3,:) = M3(3,:)-M3(2,:);
 M3(3,:) = M3(3,:)-M3(2,:);
 M3(2,:) = (-1/3)*M3(2,:)

结束我最终

[1 0 2 1 18; 
0 1 .6667 0 2.6667; 
0 0 6 2 3; 
0 0 -3 0 -2]

1 个答案:

答案 0 :(得分:0)

选择你离开的地方:

x = [1 0 2 1 18; 0 1 .6667 0 2.6667; 0 0 6 2 3; 0 0 -3 0 -2];
x(3,:) = x(3,:) / 6;

x(1,:) = x(1,:) - 2 * x(3,:);
x(2,:) = x(2,:) - 2/3 * x(3,:);
x(4,:) = x(4,:) + 3 * x(3,:);

x(1,:) = x(1,:) - 1/3 * x(4,:);
x(2,:) = x(2,:) + 2/9 * x(4,:);
x(3,:) = x(3,:) - 1/3 * x(4,:);

rref(x)类似,这会产生:

x =

    1.0000         0         0    0.0000   17.1667
         0    1.0000    0.0000         0    2.2223
         0         0    1.0000         0    0.6667
         0         0         0    1.0000   -0.5000

如果你想知道它们之间的所有步骤,这是一种方便的方法,但显然使用rref函数通常更好地找到减少的行梯形形式。

请注意,如果您在matlab中执行所有步骤而不是复制.6667之类的值,则不会发生舍入问题。