3x3 행렬의 determinant 와 역행렬
#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;
}