首页 > 代码库 > 高斯消元法

高斯消元法

#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;
}

高斯消元法