Tuesday 10 April 2012

to find the invers of a 3*3 matrix

this my creation and my logic.execute and comment it
#include<stdio.h>
#include<math.h>
main()
{
int i,j,k,r,a[10][10],b[10][10],c[10][10],det=0,m,h,flag=0,p=0;
printf("enter a 3/3 metrix\n");
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
{

printf("enter (%d of %d)\t ",i,j);
scanf("%d",&a[i][j]);
}
printf("your metrix A= \n");
for(i=1;i<=3;i++)
{
for(j=1;j<=3;j++)
printf("\t%d",a[i][j]);
printf("\n");
}
for(i=1;i<=3;i++)
{
for(j=2,m=1;j<=3;j++,m++)
for(r=1,k=1;k<=3;k++)
if(k!=i)
{
b[m][r]=a[j][k];
r++;
}
det=det+pow(-1,i+1)*a[1][i]*(b[1][1]*b[2][2]-b[1][2]*b[2][1]);

}

printf("determinant of matrix|A|=%d",det);
for(i=1;i<=3;i++)
{
for(j=1;j<=3;j++)
{
for(k=1,h=1;k<=3;k++)
{
for(m=1,flag=0,p=1;m<=3;m++)
{
if((k!=i)&&(m!=j))
{
b[h][p]=a[k][m];
p=p+1;
flag=1;
}
}
if(flag==1)
h++;
}
c[i][j]=pow((-1),i+j)*(b[1][1]*b[2][2]-b[1][2]*b[2][1]);
}

}

printf("\nco factor of a matrix=\n\n");
for(i=1;i<=3;i++)
{
for(j=1;j<=3;j++)
printf("\t%d",c[i][j]);
printf("\n");
}
printf("\ninverse of 3*3 matrix=adjoint of A/|A|=\n");
printf("\t...................\n");
for(i=1;i<=3;i++)
{
for(j=1;j<=3;j++)
printf("\t%d",c[j][i]);
printf("\n");
}

printf("\t...................\n");
printf("\t\t%d\n",det);
}

No comments:

Post a Comment