求逆矩阵的问题,大家帮忙看一下
我下了一个求解逆矩阵的函数,运行发现全是零,大家帮忙看一下在哪里出错了。下面是我的代码
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
double b[9];
double a[9]={1,0,0,0,1,4,4,0,1};
int gaus(double a[],double b[],int n)
{ int *js,l,k,i,j,is,p,q;
double d,t;
js=(int *)malloc(n*sizeof(int));
l=1;
for (k=0;k <=n-2;k++)
{ d=0.0;
for (i=k;i <=n-1;i++)
for (j=k;j <=n-1;j++)
{ t=fabs(a[i*n+j]);
if (t> d) { d=t; js[k]=j; is=i;}
}
if (d+1.0==1.0) l=0;
else
{ if (js[k]!=k)
for (i=0;i <=n-1;i++)
{ p=i*n+k; q=i*n+js[k];
t=a[p]; a[p]=a[q]; a[q]=t;
}
if (is!=k)
{ for (j=k;j <=n-1;j++)
{ p=k*n+j; q=is*n+j;
t=a[p]; a[p]=a[q]; a[q]=t;
}
t=b[k]; b[k]=b[is]; b[is]=t;
}
}
if (l==0)
{ free(js); printf( "fail\n ");
return(0);
}
d=a[k*n+k];