嵌入式

编程与应用
posts - 14, comments - 1, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

高斯约旦求矩阵的逆

Posted on 2010-04-17 10:55 陈显锋 阅读(755) 评论(1)  编辑 收藏 引用
#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;
    }

}

}





Feedback

# re: 高斯约旦求矩阵的逆  回复  更多评论   

2010-08-17 09:07 by zhan
这不是高斯约旦算法

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理