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

[수치계산] 연립선형방정식의 해 - Cramer의 법칙

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


Cramer의 법칙


Cramer의 법칙 실습


#include <stdio.h>
int det(int arr[][4]) {
    return arr[1][1] * (arr[2][2] * arr[3][3] - arr[2][3] * arr[3][2])
        - arr[1][2] * (arr[2][1] * arr[3][3] - arr[3][1] * arr[2][3])
        + arr[1][3] * (arr[2][1] * arr[3][2] - arr[3][1] * arr[2][2]);
}
void main() {
    int A[4][4] = {
        {0, 0, 0, 0},
        {0, 2, 3, -1},
        { 0, 1, -2, 1 },
        { 0, 1, -12, 5 }
    };
    int b[4] = { 0, 4, 6, 10 };
    int A_i[4][4];

    int detA, detA_i;
    int i, j, k;

    detA = det(A);
    for (i = 1; i <= 3; i++) {
        for (j = 1; j <= 3; j++)
            for (k = 1; k <= 3; k++)
                A_i[j][k] = A[j][k];
        for (j = 1; j <= 3; j++)
            A_i[j][i] = b[j];
        detA_i = det(A_i);
        printf("%8f\n", (float)detA_i / detA);
    }
}



Cramer의 법칙 한계

● 행렬식을 계산하기 힘들다.
 
- n x n 행렬의 행렬식을 계산하기 위해서는 (n - 1)n!번의 연산을 필요로 함

- 크레이머 법칙에 필요한 연산 : (n -1)(n + 1)!

- n > 3인 경우, 컴퓨터를 사용하더라도 크레이머의 법칙은 좋지 않다!


반응형

댓글