📜  MATLAB 中的简化行梯形 (rref) 矩阵

📅  最后修改于: 2022-05-13 01:55:48.478000             🧑  作者: Mango

MATLAB 中的简化行梯形 (rref) 矩阵

矩阵的缩减行梯形形式用于查找矩阵的秩,并进一步允许求解线性方程组。矩阵是行梯队形式,如果

  • 所有仅由零组成的行都在底部。
  • 非零行的第一个非零元素始终严格位于其上方行的第一个非零元素的右侧。

例子 :

\left[ \begin{array}{ccccc} 1 & a_0 & a_1 & a_2 & a_3 \\ 0 & 0 & 2 & a_4 & a_5 \\ 0 & 0 & 0 & 1 & a_6\\ 0 & 0 & 0 & 0 & 0 \end{array} \right]

一个矩阵可以有多个行梯队形式。矩阵是缩减行梯队形式,如果

  • 它是排梯队形式。
  • 每个非零行中的第一个非零元素是 1。
  • 包含非零为 1 的每一列在其所有其他条目中都有零。

例子:



{\displaystyle \left[{\begin{array}{ccccc}1&0&a_{1}&0&b_{1}\\0&1&a_{2}&0&b_{2}\\0&0&0&1&b_{3}\end{array}}\right]}

其中 a1,a2,b1,b2,b3 是非零元素。

一个矩阵有一个 独特的缩减行梯队形式。 Matlab 允许用户使用 rref() 方法找到缩减行梯队形式。 rref() 的不同语法是:

  • R = rref(A)
  • [R,p] = rref(A)

让我们详细讨论上述语法:

参考文献(A)

它使用Gauss-Jordan方法返回矩阵A的缩减行梯形形式。

Matlab
% creating a matrix using magic(n)
% generates n*n matrix with values
% from 1 to n^2 where every row sum
% is equal to every column sum
A = magic(4);
disp("Matrix");
disp(A);
  
% Reduced Row Echelon Form of A
RA = rref(A);
disp("rref :");
disp(RA);


Matlab
% creating a matrix using magic(n)
% generates n*n matrix with values 
% from 1 to n^2 where every row sum
% is equal to every column sum
A = magic(5);
disp("Matrix");
disp(A);
  
% Reduced Row Echelon Form of A
[RA,p] = rref(A);
disp("rref :");
disp(RA);
  
% Displaying pivot vector p
disp("Pivot vector");
disp(p);


Matlab
% Coefficient matrix
A = [1  1  1;
     1  2  3;
     1  4  7];
       
% Constant matrix
b = [6 ;14; 30];
  
% Augmented matrix
M = [A b];
disp("Augmented matrix");
disp(M)
  
% Reduced Row echelon form of 
% Augmented matrix
R = rref(M);
disp("rref");
disp(R)


输出 :



参考文献(A)

  • 它返回简化行阶梯表R枢轴p的矢量
  • p是一个行号向量,在其缩减行梯队形式中具有一个非零元素。
  • 矩阵 A 的是 length(p)。
  • R(1:length(p),1:length(p)) (R 中的第一个 length(p) 行和 length(p) 列)是一个单位矩阵

MATLAB

% creating a matrix using magic(n)
% generates n*n matrix with values 
% from 1 to n^2 where every row sum
% is equal to every column sum
A = magic(5);
disp("Matrix");
disp(A);
  
% Reduced Row Echelon Form of A
[RA,p] = rref(A);
disp("rref :");
disp(RA);
  
% Displaying pivot vector p
disp("Pivot vector");
disp(p);

输出 :

使用缩减行梯队形式寻找线性方程组的解:

线性方程组
x+y+z=6\\ x+2y+3z=14\\ x+4y+7z=30

系数矩阵A 是
 \left[ \begin{array}{ccccc} 1 & 1 & 1 \\ 1 & 2 & 3\\ 1 & 4 & 7 \end{array} \right]

常数矩阵B 是
 \left[ \begin{array}{ccccc} 6 \\ 14\\ 30 \end{array} \right]

那么增广矩阵[AB] 是
 \left[ \begin{array}{ccccc} 1 & 1 & 1 & 6\\ 1 & 2 & 3 & 14\\ 1 & 4 & 7 & 30 \end{array} \right]

MATLAB

% Coefficient matrix
A = [1  1  1;
     1  2  3;
     1  4  7];
       
% Constant matrix
b = [6 ;14; 30];
  
% Augmented matrix
M = [A b];
disp("Augmented matrix");
disp(M)
  
% Reduced Row echelon form of 
% Augmented matrix
R = rref(M);
disp("rref");
disp(R)

输出 :

那么简化的方程x-z=-2\;, y+2z=8

它有无限的解,一个可以是x=1\;,y=2\;,z=3    .