高斯全主元消去法解线性方程组
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高斯全主元消去法解线性方程组
#include
#include
Gaussdiedai(n,a,x)
int n;
double *a,*x;
{
int i,j,k,r,l,c;
double m;
int cc[3];
for(j=0;j cc[j]=j; for(k=0;k { m=0; for(i=k;i for(j=k;j if(fabs(a[i*(n+1)+j])>m) { r=i;c=j; m=fabs(a[i*(n+1)+j]); } if(r>k) for(j=k;j { m=a[k*(n+1)+j]; a[k*(n+1)+j]=a[r*(n+1)+j]; a[r*(n+1)+j]=m; } if(c>k) { for(i=0;i { m=a[i*(n+1)+k]; a[i*(n+1)+k]=a[i*(n+1)+c]; a[i*(n+1)+c]=m; l=cc[k]; cc[k]=cc[c]; cc[c]=l; } } for(i=k+1;i { m=a[i*(n+1)+k]/a[k*(n+1)+k]; for(j=k+1;j a[i*(n+1)+j]-=m*a[k*(n+1)+j]; } } x[cc[n-1]]=a[(n-1)*(n+1)+n]/a[(n-1)*(n+1)+(n-1)]; for(i=n-2;i>=0;i--) { m=a[i*(n+1)+n]; for(j=i+1;j m-=a[i*(n+1)+j]*x[cc[j]]; x[cc[i]]=m/a[i*(n+1)+i]; } } main() { double a[3][4]={{0.001000,2.000,3.000,1.000},{-1.000,3.712,4.623,2.000},{- 2.000,1.072,5.643, 3.000}},x[3]; int i; Gaussdiedai(3,a,x); for(i=0;i<3;i++) printf("%f\n",x[i]); }