{ printf("fail\n"); return(0); } b[j+1]=b[j+1]/s; d[k]=d[k]/s; b[j+3]=b[j+3]-b[j+2]*b[j+1]; d[k+1]=d[k+1]-b[j+2]*d[k]; } s=b[3*n-3]; if (fabs(s)+1.0==1.0) { printf("fail\n"); return(0); } d[n-1]=d[n-1]/s; for (k=n-2;k>=0;k--) { d[k]=d[k]-b[3*k+1]*d[k+1]; } return(2); }
//一般带型方程组的求解 //n-方程组的阶数 //l-系数矩阵的半带宽 //il-系数矩阵的带宽,应为il=2l+1 //m-方程组右端的常数 int cfband(double b[],double d[],int n,int l,int il,int m) { int ls,k,i,j,is,u,v; double p,t; if (il!=(2*l+1)) { printf("fail\n"); return(-2); } ls=l; for (k=0;k<=n-2;k++) { p=0.0; for (i=k;i<=ls;i++) { t=fabs(b[i*il]); if (t>p) { p=t; is=i; } } if (p+1.0==1.0) { printf("fail\n"); return(0); } for (j=0;j<=m-1;j++) { u=k*m+j; v=is*m+j; t=d[u]; d[u]=d[v]; d[v]=t; } for (j=0;j<=il-1;j++) { u=k*il+j; v=is*il+j; t=b[u]; b[u]=b[v]; b[v]=t; } for (j=0;j<=m-1;j++) { u=k*m+j; d[u]=d[u]/b[k*il]; } for (j=1;j<=il-1;j++) { u=k*il+j; b[u]=b[u]/b[k*il]; } for (i=k+1;i<=ls;i++) { t=b[i*il];
上一篇:浙江台州互联网行业浅析--问题篇
下一篇:数值计算程序大放送-特征值和特征向量
|