br[i]=br[i]-p+q; bi[i]=bi[i]-s+p+q; } } js[n-1]=n-1; for (k=n-1;k>=0;k--) { if (js[k]!=k) { p=br[k]; br[k]=br[js[k]]; br[js[k]]=p; p=bi[k]; bi[k]=bi[js[k]]; bi[js[k]]=p; } } free(js); return(1); }
//全选主元高斯-约当消去法 //a-n*n 存放方程组的系数矩阵,返回时将被破坏 //b-n*m常数向量,每列为一组,返回时存放m组解向量 //n-方程组的阶数 //m-方程组右端常数向量的个数 //返回0表示原方程组的系数矩阵奇异 int ccgj(double a[],double b[],int n,int m) { int *js,l,k,i,j,is,p,q; double d,t; js=malloc(n*sizeof(int)); l=1; for (k=0;k<=n-1;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; } for (j=0;j<=m-1;j++) { p=k*m+j; q=is*m+j; t=b[p]; b[p]=b[q]; b[q]=t; } } } if (l==0) {
上一篇:浙江台州互联网行业浅析--问题篇
下一篇:数值计算程序大放送-特征值和特征向量
|