预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

求解逆矩阵源代码:#include<stdio.h>#include<stdlib.h>#include<math.h>#defineTINY1.0e-20voidinverse(double**,int);voidludcmp(double**,int,int*,double*);voidlubksb(double**,int,int*,double*);double**matrix(int,int,int,int);double*vector(int,int);voidfree_matrix(double**,int,int,int,int);voidfree_vector(double*,int,int);voidinverse(double**mat,intdim){inti,j,*indx;double**y,d,*col;y=matrix(0,dim-1,0,dim-1);indx=(int*)malloc((unsigned)(dim*sizeof(int)));col=vector(0,dim-1);ludcmp(mat,dim,indx,&d);for(j=0;j<dim;j++){for(i=0;i<dim;i++)col[i]=0.0;col[j]=1.0;lubksb(mat,dim,indx,col);for(i=0;i<dim;i++)y[i][j]=col[i];}for(i=0;i<dim;i++)for(j=0;j<dim;j++)mat[i][j]=y[i][j];free_matrix(y,0,dim-1,0,dim-1);free_vector(col,0,dim-1);free(indx);}voidludcmp(double**a,intn,int*indx,double*d){inti,imax,j,k;doublebig,dum,sum,temp;double*vv;vv=(double*)malloc((unsigned)(n*sizeof(double)));if(!vv){fprintf(stderr,"ErrorAllocatingVectorMemory\n");exit(1);}*d=1.0;for(i=0;i<n;i++){big=0.0;for(j=0;j<n;j++){if((temp=fabs(a[i][j]))>big)big=temp;}if(big==0.0){fprintf(stderr,"SingularMatrixinRoutineLUDCMP\n");for(j=0;j<n;j++)printf("%f",a[i][j]);printf("/n");exit(1);}vv[i]=1.0/big;}for(j=0;j<n;j++){for(i=0;i<j;i++){sum=a[i][j];for(k=0;k<i;k++)sum-=a[i][k]*a[k][j];a[i][j]=sum;}big=0.0;for(i=j;i<n;i++){sum=a[i][j];for(k=0;k<j;k++)sum-=a[i][k]*a[k][j];a[i][j]=sum;if((dum=vv[i]*fabs(sum))>=big){big=dum;imax=i;}}if(j!=imax){for(k=0;k<n;k++){dum=a[imax][k];a[imax][k]