如何求矩阵的秩,二阶矩阵的秩( 二 )


{ int i,j;
  do
   { printf("m(1-%d)=",MAX);
     scanf("%d",&(dat->m));
   } while((dat->m)<1||(dat->m)>MAX);
  do
   { printf("n(1-%d)=",MAX);
     scanf("%d",&(dat->n));
   } while((dat->n)<1||(dat->n)>MAX);
  for(i=0;i<(dat->m);i++)
   for(j=0;j<(dat->n);j++)
    { printf("a(%d,%d)=",i+1,j+1);
      scanf("%d",&(dat->a[i][j]));
    }
}
void output_matrix(matrix dat)  //显示矩阵
{ int m,n,i,j;
  m=dat.m;n=dat.n;
  for(i=0;i<m;i++)
   { for(j=0;j<n;j++)
      printf("%-4d",dat.a[i][j]);
     printf("\n");
   }
}
void exchang_row(int *a,int *b,int n)
{ int i,t;
  for(i=0;i<n;i++)
   { t=a[i];
     a[i]=b[i];
     b[i]=t;
   }
}
void mul_row(int *a,int k,int n)
{ int i;
  for(i=0;i<n;i++)
   a[i]*=k;
}
void add_row(int *a1,int *a2,int k,int n)
{ int i;
  for(i=0;i<n;i++)
   a1[i]+=a2[i]*k;
}
int rank_matrix(matrix dat,matrix *res) //求秩(返回值为秩, 第2个参数为变换得到的阶梯阵)
{ int m,n,i,t;
  int ri,ci;  //行标记与列标记
  int f_z;    //某列是否全为0的标志, 为1表示全为0
  m=dat.m;n=dat.n;
  for(ri=ci=0;ci<n;ci++)
   { f_z=1;
     for(i=ri;i<m;i++)
      if(dat.a[i][ci]!=0)
       { if(i!=ri)
          if(f_z)
           exchang_row(&(dat.a[ri][ci]),&(dat.a[i][ci]),n-ci);
          else
           { t=dat.a[i][ci];
            mul_row(&(dat.a[i][ci]),dat.a[ri][ci],n-ci);
            add_row(&(dat.a[i][ci]),&(dat.a[ri][ci]),-t,n-ci);
           }
         f_z=0;
       }
     if(!f_z) ri++;
   }
  *res=dat;
  return ri;
}
怎样在excel中求矩阵的秩 引理设矩阵A=(aij)sxn的列秩等于A的列数n, 则A的列秩, 秩都等于n 。
定理矩阵的行秩, 列秩, 秩都相等 。
定理初等变换不改变矩阵的秩 。
定理矩阵的乘积的秩Rab<=min{Ra,Rb};
当r(A)<=n-2时, 最高阶非零子式的阶数<=n-2, 任何n-1阶子式均为零, 而伴随阵中的各元素就是n-1阶子式再加上个正负号, 所以伴随阵为0矩阵 。
当r(A)<=n-1时, 最高阶非零子式的阶数<=n-1, 所以n-1阶子式有可能不为零, 所以伴随阵有可能非零(等号成立时伴随阵必为非零) 。
扩展资料

矩阵的秩是反映矩阵固有特性的一个重要概念 。
设A是一组向量, 定义A的最大无关组中向量的个数为A的秩 。
定义1. 在m*n矩阵A中, 任意决定k行和k列交叉点上的元素构成A的一个k阶子矩阵, 此子矩阵的行列式, 称为A的一个k阶子式 。

推荐阅读