C Program to find the determinant and inverse of a Matrix

Program to find the  determinant and inverse of a Matrix

#include<stdio.h>
#include<conio.h>
#include<math.h>
float given[10][10],red[10][10],dem[10][10],adj[10][10];
int n;
float step1(int p,int q)
{
    int x,y,i,j,k;
    float temp,prod=1;
    for(i=0,x=0;i<n;i++)
    for(j=0,y=0;j<n;j++)
if((i!=p)&&(j!=q))
{
   red[x][y]=given[i][j];
   y++;
   if(y<(n-1))
continue;
   x++;
   break;
}
    for(k=0;k<n-2;k++)
    {
for(i=k+1;i<n-1;i++)
{
   temp=red[i][k]/red[k][k];
   for(j=0;j<n;j++)
red[i][j]=red[i][j]-temp*red[k][j];
}
    }
    for(i=0;i<n-1;i++)
prod*=red[i][i];
    return(prod);
}
void main()
{
    int i,j,k;
    float ans,temp1,d=1;
    clrscr();
    printf("Enter the order of matrix : ");
    scanf("%d",&n);
    printf("Enter the elements:\n");
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
scanf("%f",&given[i][j]);
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
ans=step1(i,j);
dem[i][j]=ans*pow((-1),(i+j));
    }
    for(k=0;k<n-1;k++)
    {
for(i=k+1;i<n;i++)
{
    temp1=given[i][k]/given[k][k];
    for(j=0;j<n+1;j++)
given[i][j]=given[i][j]-temp1*given[k][j];
}
    }
    for(i=0;i<n;i++)
d=d*given[i][i];
    printf("\nDeterminant = %f\n\n",d);
    printf("Inverse of matrix:\n\n");
    for(i=0;i<n;i++)
    {
printf("\t");
for(j=0;j<n;j++)
{
    adj[i][j]=dem[j][i];
    printf("%f\t",adj[i][j]/d);
}
printf("\n");
    }
    getch();
}

0 comments:

Post a Comment