您的位置:首页 > 其它

高斯约旦求矩阵的逆

2010-12-08 15:51 281 查看
#include<iostream>
using namespace std;

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

,E

;

//单位矩阵E

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

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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: