矩阵求逆:
int inverse(double C[][MAX],double B[][MAX],int n)
{//1.set B[][] I;
double A[MAX][MAX],e;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
A[i][j]=C[i][j];
if(i==j) B[i][j]=1;
else B[i][j]=0;
}
//2. inverse and judge the Matrix inversable
for(i=0;i<n;i++)
{
//对主元为零的处理
if(A[i][i]==0)
for(int j=i+1;j<n;j++)
{
if(A[j][i]!=0)
{
for(int k=0;k<n;k++)
{
A[i][k]+=A[j][k];
B[i][k]+=B[j][k];
}
break;
}
}
if(fabs(A[i][i])<0.000000000000001)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
B[i][j]=0;
return 0;
}//MAT can't be inversed
// line processing
e=A[i][i];
for(int j=0;j<n;j++)
{
A[i][j]=A[i][j]/e;
B[i][j]=B[i][j]/e;
}
// row processing
for(j=0;j<n;j++)
{
e=A[j][i];
for(int k=0;k<n;k++)
if(i!=j)
{
A[j][k]+=-1*e*A[i][k];
B[j][k]+=-1*e*B[i][k];
}
}
}
return 1;
}
这是方阵求逆,如果要广义逆算法, 联系我.
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。