/* * ass14.c Matrix Inversion */ #include #define ORD 20 void readMat(int , double [][ORD]); void writeMat(int, double [][ORD]); void copyMat(int, double [][ORD], double [][ORD]); void initInvMat(int, double [][ORD]); void gaussElim(int, double [][ORD], double [][ORD]); void jordanElim(int, double [][ORD], double [][ORD]); double det(int, double [][ORD]); void makeIdentity(int, double [][ORD], double [][ORD]); void multMat(int, double [][ORD], double [][ORD], double [][ORD]); int main() { int n; double a[ORD][ORD], aInv[ORD][ORD], b[ORD][ORD]; printf("Enter the order of matrix: "); scanf("%d", &n); printf("\nEnter the matrix in row-major order: "); readMat(n, a); printf("\nThe matrix is:\n"); writeMat(n, a); copyMat(n,b,a); initInvMat(n, aInv); printf("\nThe augmented matrix is:\n"); writeMat(n, aInv); gaussElim(n, a, aInv); printf("\nThe matrix after Gauss Elimination:\n"); writeMat(n,a); printf("Augmented matrix:\n"); writeMat(n,aInv); jordanElim(n,a, aInv); printf("\nThe matrix after Jordan Elimination:\n"); writeMat(n,a); printf("Augmented matrix:\n"); writeMat(n,aInv); printf("\nThe determinant is: %6.2f\n", det(n,a)); makeIdentity(n,a, aInv); printf("\nThe Inverse matrix:\n"); writeMat(n, aInv); copyMat(n, a, b); multMat(n, a, aInv, b); printf("\nThe Product is I:\n"); writeMat(n, b); return 0; }