首页 > 代码库 > 高斯消元法
高斯消元法
#include <stdio.h>
#include <stdlib.h>
int main() {
// FILE *f;
double a[15][15];
double b[15],s;
int i,j,k,n;
//f=fopen("C:\\Users\\dzww\\Desktop\\高斯消元法\\test.dat","r");
scanf("%d",&n);
for(i=1; i<=n; i++) {
for(j=1; j<=n; j++)
scanf("%lf",&a[i][j]);
scanf("%lf",&b[i]);
}
// fclose(f);
k=1;
do {
for(j=k+1; j<=n; j++)
a[k][j]=a[k][j]/a[k][k];
b[k]=b[k]/a[k][k];
i=1;
for(i=k+1; i<=n; i++) {
for(j=k+1; j<=n; j++)
a[i][j]=a[i][j]-a[i][k]*a[k][j];
b[i]=b[i]-a[i][k]*b[k];
}
if(k==n)
break;
k++;
} while(1);
for(i=n-1; i>=1; i--) {
s=0;
for(j=i+1; j<=n; j++)
s=s+a[i][j]*b[j];
b[i]=b[i]-s;
}
for(i=1; i<=n; i++)
printf("b[%2d]=%lf\n",i,b[i]);
return 0;
}
高斯消元法