#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
int main()
{
float a[3][6];
float t,m,n,l,q;
float b[3][3],c[3][3],d[3][3];
int i,j,k;
cout<<"请输入原非奇异矩阵:"<<endl;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{cin>>a[i][j];b[i][j]=a[i][j];}
for(j=3;j<6;j++)
a[i][j]=0;
a[i][3+i]=1;
}
t=a[1][0];m=a[0][0];l=a[2][0];
for(j=0;j<6;j++)
{
a[0][j]=a[0][j]/m;
a[1][j]=-t*a[0][j]+a[1][j];
if(j==1) n=a[1][1];
a[1][j]=a[1][j]/n;
a[2][j]=a[2][j]-l*a[0][j];
if (j==1) q=a[2][1];
a[2][j]=a[2][j]-q*a[1][j];
}
t=a[2][2];
for(j=0;j<6;j++)
{ a[2][j]=a[2][j]/t;
if(j==2){m=a[1][2];n=a[0][2];}
a[1][j]=a[1][j]-m*a[2][j];
a[0][j]=a[0][j]-n*a[2][j];
if(j==1)q=a[0][1];
a[0][j]=a[0][j]-q*a[1][j];
}
for(i=0;i<3;i++)
for(j=3;j<6;j++)
d[i][j-3]=a[i][j];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{ c[i][j]=0;
for( k=0;k<3;k++)
c[i][j]=b[i][k]*d[k][j]+c[i][j];
}
cout<<"其逆矩阵为:"<<endl;
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
cout<<setw(5)<<d[i][j];
cout<<endl;
}
cout<<"二者乘积为:"<<endl;
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
{if(fabs(c[i][j]-int(c[i][j]))<0.000001)
c[i][j]=int(c[i][j]);
cout<<setw(3)<<c[i][j];}
cout<<endl;
}
return 0;
}
评论0