s=(ar[v]-ai[v])*(br[u]+bi[u]); br[u]=(p-q)/d; bi[u]=(s-p-q)/d; } for (i=0;i<=n-1;i++) { if (i!=k) { u=i*n+k; for (j=k+1;j<=n-1;j++) { v=k*n+j; l=i*n+j; p=ar[u]*ar[v]; q=ai[u]*ai[v]; s=(ar[u]+ai[u])*(ar[v]+ai[v]); ar[l]=ar[l]-p+q; ai[l]=ai[l]-s+p+q; } for (j=0;j<=m-1;j++) { l=i*m+j; v=k*m+j; p=ar[u]*br[v]; q=ai[u]*bi[v]; s=(ar[u]+ai[u])*(br[v]+bi[v]); br[l]=br[l]-p+q; bi[l]=bi[l]-s+p+q; } } } } for (k=n-1;k>=0;k--) { if (js[k]!=k) { for (j=0;j<=m-1;j++) { u=k*m+j;v=js[k]*m+j; p=br[u]; br[u]=br[v]; br[v]=p; p=bi[u]; bi[u]=bi[v]; bi[v]=p; } } } free(js); return(1); }
//求解三对角线方程组的追赶法 //存放三对角线矩阵中三对角线上的元素 //存放顺序为a00,a01,a10,a11,a12,a21,a22,a23,...,an-1,n-2,an-1,n-1 //就是按行依次存储 //n-方程组的阶数 //m-b的长度,应为m=3n-2,本函数中用来做检验 //d-存放方程组右端常数向量,返回时存放解向量 int cetrd(double b[],int n,int m,double d[]) { int k,j; double s; if (m!=(3*n-2)) { printf("err\n"); return(-2); } for (k=0;k<=n-2;k++) { j=3*k; s=b[j]; if (fabs(s)+1.0==1.0)
上一篇:IIS 6.0配置HTTP压缩
下一篇:微软怎么设计Exchange 2003的体系结构
|