C Program to Find the Rank of the given Matrix of any order
In this Article we will see a C program to find the rank of the matrix in step by step process.
Rank of a Matrix
The rank of the matrix r is defined if –
1) It has at least one non-zero mirror of order r.
2) Every minor of A of order higher than r is zero.
To find the rank of matrix reduce the given matrix to upper triangular form. Rank of the matrix is equal to the number of non-zero rows.
Rank of a Matrix C Program
/* C Program:Rank of Matrix */
#include<stdio.h>
#include<conio.h>
int a[10][10],i,j,m,n;
int rank(int, int);
void swap(int,int,int);
void read(int, int);
void display(int, int);
int main()
{
int rnk;
printf("enter the order of matrix (row and col size):\n");
scanf("%d%d",&m,&n);
read(m,n);
display(m,n);
rnk= rank(m,n);
printf("\n\nThe rank of above matrix is: %d\n", rnk);
return 0;
}
/** Function reading the matrix row by row **/
void read(int r,int c)
{
printf("Enter %d x %d order matrix values(Row by Row) :\n",r,c);
for(i=0;i<r;i++)
for(j=0;j<c;j++)
scanf("%d",&a[i][j]);
}
/** function display matrix **/
void display(int r, int c)
{
printf("Matrix is : \n");
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
/** This function exchange two rows of a matrix **/
void swap(int r1, int r2, int c)
{
int t;
for(i=0;i<c;i++)
{
t= a[r1][i];
a[r1][i] = a[r2][i];
a[r2][i]=t;
}
}
/**This function find rank of matrix **/
int rank(int r1, int c1)
{
int i,j,k;
float ratio;
for(i=0;i<c1;i++)
{
printf("\nSTEP = %d\n",i+1);
display(m,n);
if(a[i][i]!=0) /* Diagonal element is not zero */
for(j=0;j<r1;j++)
if (j!=i)
{
/* Make all the element above and nelow the current principal
diagonal element zero */
ratio = a[j][i]/a[i][i];
for(k=0;k<c1;k++)
a[j][k]-=ratio*a[i][k];
}
else
printf("\n");
/* principal Diagonal element is zero */
else
{
for(j=i+1;j<r1;j++)
if(a[j][i]!=0)
{ /* Find non zero elements in the same column */
swap(i,j,c1);
break;
}
if(j==r1)
{
c1--;
for(j=0;j<r1;j++)
a[j][i] = a[j][c1];
}
i--;
}
}
return c1;
}
OUTPUT
enter the order of matrix (row and col size): 3 4 Enter 3 x 4 order matrix values(Row by Row) : 1 2 -1 3 3 4 0 -1 -1 0 -2 7 Matrix is : 1 2 -1 3 3 4 0 -1 -1 0 -2 7 STEP = 1 Matrix is : 1 2 -1 3 3 4 0 -1 -1 0 -2 7 STEP = 2 Matrix is : 1 2 -1 3 0 -2 3 -10 0 2 -3 10 STEP = 3 Matrix is : 1 0 2 -7 0 -2 3 -10 0 0 0 0 STEP = 3 Matrix is : 1 0 -7 -7 0 -2 -10 -10 0 0 0 0 The rank of above matrix is: 2
You might also Like :- C Program to find the inverse of matrix of any order
