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