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

 我来答
fxrxwh
高粉答主

2015-09-02 · 说的都是干货,快来关注
知道顶级答主
回答量:7.1万
采纳率:89%
帮助的人:2.4亿
展开全部
  对矩阵实行初等行变换,化为行最简形矩阵,其特点是:非零行的第一个非零元为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))<eps))
  continue;
  end
  N_zero=find(temp);
  clear temp;
  [p,q]=size(N_zero);
  clear Modulus;
  if( all(abs(object(i,1:n))<eps))
  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)<eps;
  object(L)=0;
  a=object;
tanarri
2010-11-06 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5123
采纳率:33%
帮助的人:8099万
展开全部
用rref函数,rref(A)即为A的行最简矩阵
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式