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

[수치계산] 연립선형방정식의 해 - 행렬

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


행렬의 기본 연산은 다들 할 수 있을 거라 믿는다.


행렬의 기본 연산




#include <stdio.h>

void main(){
    int A[5][5], B[5][5], C[5][5];
    int i, j, k;

    printf("Input A : \n");
for(i = 1; i <= 4; i++){ printf("row %d : ", i); scanf("%d %d %d %d", &A[i][1], &A[i][2], &A[i][3], &A[i][4]); } printf("Input B : \n"); for(i = 1; i <= 4; i++){ printf("row %d : ", i); scanf("%d %d %d %d", &B[i][1], &B[i][2], &B[i][3], &B[i][4]); } for(i = 1; i <= 4; i++){ for(j = 1; j <= 4; j++){ C[i][j] = 0;
for(k = 1; k <= 4; k++){ C[i][j] += A[i][k] * B[k][j]; } } } printf("Output C = A * B : \n"); for(i = 1; i <= 4; i++){ for(j = 1; j <= 4; j++) printf("%8d", C[i][j]); printf("\n");
} }






행렬식




마지막에 |A| = -5 x 8 이 아니라 |A| = -5 x 6 = -30 이다.


◎ 3 X 3 행렬식 구하기 실습


#include <stdio.h>

int det(int m[][4]){
    return m[1][1] * ((m[2][2] * m[3][3]) - (m[2][3] * m[3][2]))
       - m[1][2] * ((m[2][1] * m[3][3]) - (m[3][1] * m[2][3]))
       + m[1][3] * ((m[2][1] * m[3][2]) - (m[3][1] * m[2][2]));
}

int main(){
    int a[4][4] = {
        {0, 0, 0, 0},
        {0, 2, 3, -1},
        {0, 1, -2, 1},
        {0, 1, -12, 5}
    };

    printf("%d\n", det(a));
    return 0;
}


반응형

댓글