高斯约旦求矩阵的逆

#include < iostream >
using   namespace  std;

#define  n 3
int  main()
{
 
int i,j,k;double m;
 
double a[n][n],E[n][n];

 
//单位矩阵E[n][n]
 for(i=0;i<n;i++){
     
for(j=0;j<n;j++){
         
if(i==j)
             E[i][j]
=1;
         
else
             E[i][j]
=0;
     }

}

 
//输入矩阵a[n][n]
 cout<<"输入矩阵:"<<endl;
 
for(i=0;i<n;i++)
  
for(j=0;j<n;j++)
   cin
>>a[i][j];

//上三角变换
 for(k=0;k<n-1;k++){
  
for(i=k+1;i<n;i++){
   m
=a[i][k]/a[k][k];
   
for(j=0;j<n;j++){
    a[i][j]
=a[i][j]-m*a[k][j];
    E[i][j]
=E[i][j]-m*E[k][j];
   }

  }

 }

 
//下三角变换
 for(k=n-1;k>0;k--){
     
for(i=k-1;i>=0;i--){
         m
=a[i][k]/a[k][k];
         
for(j=0;j<n;j++){
             a[i][j]
=a[i][j]-m*a[k][j];
             E[i][j]
=E[i][j]-m*E[k][j];
         }

     }

 }

//单位矩阵……
 for(i=0;i<n;i++)
     
for(j=0;j<n;j++){
         E[i][j]
=E[i][j]/a[i][i];
     }


 
//输出矩阵的逆
 cout<<"矩阵的逆是:"<<endl;
for(i=0;i<n;i++){
    
for(j=0,k=0;j<n;j++){
        cout
<<E[i][j]<<"\t";k++;
        
if(k==n)
            cout
<<endl;
    }

}

}





你可能感兴趣的:(高斯约旦求矩阵的逆)