日期:2014-05-19  浏览次数:20724 次

求逆矩阵的问题,大家帮忙看一下
我下了一个求解逆矩阵的函数,运行发现全是零,大家帮忙看一下在哪里出错了。下面是我的代码

#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];