/**************reverse matrix************************/
//利用的是 AX=B,X=A’B,这里 B=E;进行初等行变换求解,把左边化为单位阵,右边就
是 A 矩阵的逆矩阵;
void swap(double *a,int i,int line,int n) // exchange line//交换行位置,i 控制行号,line 也是行
号,//n 是矩阵列数
{
int j;
double temp;
for(j=0;j<n;j++)
{
temp=a[i*n+j];
a[i*n+j]=a[line*n+j];
a[line*n+j]=temp;
}
}
void calculate(double *p,double *q,int n) //形成上三角阵
{
int i,j,k,m,line;
double max,temp,mmul;
for(i=0;i<n;i++)
{
max=fabs(p[i*n+i]);
temp=p[i*n+i];
line=i;
for(j=i+1;j<n;j++) //选出每一列中最大值,并且用 line 记录行号,
//用 temp 记录该最大值,用 j 来控制行号
{
if(fabs(p[j*n+i])>max)
{
max=fabs(p[j*n+i]);
temp=p[j*n+i];
line=j;
}
}
if(max<=1e-5)
{
printf("no inverse array");
return;
}
if(line!=i)
{