c·c++/c 프로그래밍

3x3 행렬의 determinant 와 역행렬

바로이순간 2014. 6. 27. 16:00

#include<stdio.h>

int main(){

 

    int a[3][3],i,j;

    double determinant=0;

    double inv[3][3];

 

    printf("Enter the 9 elements of matrix: ");

    for(i=0;i<3;i+=1) {

        for(j=0;j<3;j+=1) {

            scanf("%d",&a[i][j]);

        }

    }

 

    printf("\nThe matrix is\n");

    for(i=0;i<3;i+=1) {

        printf("\n");

        for(j=0;j<3;j+=1) {

            printf("%d\t",a[i][j]);

        }

    }

 

    determinant = a[0][0]*a[1][1]*a[2][2] - a[0][0]*a[1][2]*a[2][1]

                + a[0][1]*a[1][2]*a[2][0] - a[0][1]*a[1][0]*a[2][2]

                + a[0][2]*a[1][0]*a[2][1] - a[0][2]*a[1][1]*a[2][0];


    printf("\n\ndeterminant=%g\n", determinant);

   

    if(determinant==0.0) {

        printf("\nNo inverse matrix exists.\n");

        return 0;

    }


    for(i=0;i<3;i+=1) {

        for(j=0;j<3;j+=1) {

            inv[i][j]=1.0/determinant*

                (a[(i+1)%3][(j+1)%3]*a[(i+2)%3][(j+2)%3] - a[(i+1)%3][(j+2)%3]*a[(i+2)%3][(j+1)%3]);

        }

    }


    printf("\nInverse of matrix is: \n\n");

    for(i=0;i<3;i+=1) {

        for(j=0;j<3;j+=1) {

            printf("%10.4f\t", inv[i][j]);

        }

        printf("\n");

    }

 

 

    return 0;

}

'c·c++ > c 프로그래밍' 카테고리의 다른 글

next_permutation  (0) 2014.07.21
연결 리스트 - 선행노드를 모르고 삭제하기  (0) 2014.06.29
c/c++ 언어 공부  (0) 2014.06.26
pseudo random number generator  (0) 2014.06.20
c소스 정리(이쁘게 만들기)  (0) 2014.05.25