用Matlab怎么将一个矩阵化为行最简矩阵

2024-11-30 13:02:00
推荐回答(2个)
回答1:

  对矩阵实行初等行变换,化为行最简形矩阵,其特点是:非零行的第一个非零元为1,且这些非零元所在的运耐列的其他元素都为0
  x=[2 -1 -1 1 2;1 1 -2 1 4;4 -6 2 -2 4;3 6 -9 7 9]
  object=x;
  [m,n]=size(object);
  for i=1:m
  temp(1:m,1)=object(1:m,i);
  if( all(abs(temp(i:m,1))  continue;
  end
  N_zero=find(temp);
  clear temp;
  [p,q]=size(N_zero);
  clear Modulus;
  if( all(abs(object(i,1:n))  continue;
  end
  
  z=1;
  for j=1:p
  T_M=object(N_zero(j,1),i)/object(N_zero(i,1),i);
  if z==1
  Modulus=T_M;
  z=z+1;
  continue;
  end
  Modulus=[Modulus,T_M];
  z=z+1;
  end
  %初等行变换:把某一行所有元素的k倍加到另一行对应的元素上去(第j行的k倍加到第i行上,记做ri+k*rj)
  for j=1:p
  if j==i
  continue;
  end
  庆悄脊object(N_zero(j,1),1:n)=object(N_zero(j,1),1:n)-object(N_zero(i,1),1:n)*Modulus(j);
  end
  %初等行变换:对调两行(对调i,j两行,记做ri<->rj)
  temp(1:m,1)=object(1:m,i);
  N_zero=find(temp);
  clear temp;
  if N_zero(1)==i
  object(i,1:n)=object(i,1:n)/object(i,i);
  continue;
  end
  temp(1,1:n)=object(i,1:n);
  object(i,1:n)=object(N_zero(1,1),1:n);
  object(N_zero(1,1),1:n)=temp(1,1:n);
  %初等誉渗行变换:以数k~=0乘某一行中的所有元素(第i行乘k,记作ri*k);
  object(i,1:n)=object(i,1:n)/object(i,i);
  end
  L=abs(object)  object(L)=0;
  a=object;

回答2:

用rref函数,rref(A)即为A的行最简矩阵