본문 바로가기
수업/수치계산

[수치계산] 연립선형방정식의 해 - Gauss Jordan 소거법

by graygreat 2017. 6. 11.
728x90
반응형


Gauss Jordan 소거법

n 개의 미지수를 가지는 n 개 연립 방정식을 아래와 같은 모양으로 변환



※ Gauss 소거법과 비슷하지만 다름.




Gauss 소거법

▼▼▼▼▼▼▼▼▼▼▼


Gauss Jordan 소거법 예제




일반화





#include <stdio.h>
#define n 4

void main(){
    float a[5][5], b[5], x[5];
    int i, j, k;
    float c;

    printf("Input A : \n");
    for(i = 1; i <= 4; i++)
        scanf("%f %f %f %f", &a[i][1], &a[i][2], &a[i][3], &a[i][4]);
    printf("Input b : \n");
    scanf("%f %f %f %f", &b[1], &b[2], &b[3], &b[4]);

    for(k = 1; k <= n; k++){
        for(i = 1; i <= n; i++){
            if(i == k)  continue;
            c = a[i][k] / a[k][k];
            for(j = k; j <= n; j++){
                a[i][j] = a[i][j] - c * a[k][j];
            }
            b[i] = b[i] - c * b[k];
        }
    }
    printf("\nResult : \n");

    for(i = 1; i <= 4; i++){
        printf("%8.3f x1 + %8.3f x2 + %8.3f x3 + %8.3f x4 = %8.3f \n",
                a[i][1], a[i][2], a[i][3], a[i][4], b[i]);
    }

    for(i = 1; i <= n; i++){
        x[i] = b[i] / a[i][i];
    }

    for(i = 1; i <= n; i++)
        printf("x%d = %8.3f\n", i, x[i]);
}



반응형

댓글