📄 矩阵逆.cpp
字号:
//programm juzhenni.cpp
#include <iostream.h>
#include<iomanip.h>
void main()
{
const int N=100;
float a[N][N],b[N][N],l;
int i,j,k,m,s,B=1;
do
{
cout<<"请输入矩阵的维数m:"<<endl;
cin>>m;
}while(!(m>0&&m<=100));
cout<<"Enter the elements of matrix a("<<m<<"*"<<m<<"):"<<endl;
for(i=0;i<m;i++)
for(j=0;j<m;j++)
cin>>a[i][j];
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{
if(i==j)
b[i][j]=1;
else
b[i][j]=0;//单位矩阵
}
for(k=0;B!=0&&k<m;k++)
{
if(a[k][k]==0)
{
for(i=k;i<m;i++)
{
if(a[i][k])
{
l=a[i][k];
for(j=k;j<m;j++)
{
a[i][j]=a[i][j]/l;
a[k][j]=a[k][j]+a[i][j];
}
for(j=0;j<m;j++)
{
b[i][j]=b[i][j]/l;
b[k][j]=b[k][j]+b[i][j];
}
for(j=0;j<m;j++)
{
if(j!=k)
{
l=a[j][k];
for(s=0;s<m;s++)
{
a[j][s]=a[j][s]-a[k][s]*l;
b[j][s]=b[j][s]-b[k][s]*l;
}
}
else
continue;
}
break;
}
else if(i==m-1&&a[i][k]==0)
{
B=0;
cout<<"该矩阵没有逆!"<<endl;
}
}
}
else
{
l=a[k][k];
for(j=k;j<m;j++)
a[k][j]/=l;
for(j=0;j<m;j++)
b[k][j]/=l;
for(j=0;j<m;j++)
{
if(j!=k)
{
l=a[j][k];
for(s=0;s<m;s++)
{
a[j][s]=a[j][s]-a[k][s]*l;
b[j][s]=b[j][s]-b[k][s]*l;
}
}
else
continue;
}
}
}
if(B)
{
cout<<setiosflags(ios::fixed)<<setprecision(4);
cout<<"现在我们可得到逆矩阵:"<<endl;
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
cout<<setw(8)<<b[i][j];
cout<<endl;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -