📄 ma.cpp
字号:
#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
#include<math.h>
double det(double **p,int n)
{
int i,j,k;
double m,max,detp=1;
if(n==1)
return p[0][0];
else
{
for(i=0;i<n;i++)
{
max=p[i][i];
k=i;
for(j=i+1;j<n;j++)
if(fabs(max)<fabs(p[j][i]))
{ max=p[i][j];
k=j;
detp*=-1;
}
for(j=i;j<n;j++)
{
max=p[k][j];
p[k][j]=p[i][j];
p[i][j]=max;
}
m=p[i][i];
for(j=i;j<n;j++)
p[i][j]=p[i][j]/m;
detp*=m;
for(j=i+1;j<n;j++)
{
m=p[j][i];
for(k=i;k<n;k++)
p[j][k]=p[j][k]-m*p[i][k];
}
}
for(i=0;i<n;i++)
detp*=p[i][i];
if(fabs(detp)<0.0000001)
return 0;
else
return detp;
}
}
void main()
{
int i,j,k,size;
double m,temp;
double **a;
double **b;
cout<<"请输入矩阵的阶数:\n";
cin>>size;
a=new double*[size];
for(i=0;i<size;i++)
a[i]=new double[size];
b=new double*[size];
for(i=0;i<size;i++)
b[i]=new double[size];
cout<<"请输入矩阵("<<size*size<<"个数):\n";
for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
cin>>a[i][j];
}
cout<<"原矩阵为:\n";
for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
cout<<setw(12)<<a[i][j];
cout<<endl;
}
for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
{
b[i][j]=a[i][j];
}
for(j=size;j<2*size;j++)
{
if((i+size)==j)
b[i][j]=1;
else
b[i][j]=0;
}
}
cout<<"求逆过程:\n";
for(i=0;i<size;i++)
{
for(j=0;j<2*size;j++)
cout<<setw(12)<<b[i][j];
cout<<endl;
}
cout<<"\n";
cout<<"\n";
for(i=0;i<size;i++)
{
m=b[i][i];
for(j=i;j<size*2;j++)
b[i][j]/=m;
for(j=i+1;j<size;j++)
{
m=b[j][i];
for(k=i;k<size*2;k++)
b[j][k]=b[j][k]-m*b[i][k];
}
}
for(i=0;i<size;i++)
{
for(j=0;j<2*size;j++)
cout<<setw(12)<<b[i][j];
cout<<endl;
}
cout<<"\n";
cout<<"\n";
for(i=size-1;i>=0;i--)
{
m=b[i][i];
for(j=i-1;j>=0;j--)
{
m=b[j][i];
for(k=i;k<size*2;k++)
b[j][k]=b[j][k]-m*b[i][k];
}
}
for(i=0;i<size;i++)
{
for(j=0;j<2*size;j++)
cout<<setw(12)<<b[i][j];
cout<<endl;
}
cout<<"逆矩阵为:\n";
for(i=0;i<size;i++)
{
for(j=size;j<size*2;j++)
cout<<setw(12)<<b[i][j];
cout<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -