0% found this document useful (0 votes)
83 views3 pages

Inverse of A Square Matrix

The document discusses the inverse of a square matrix. It defines the inverse of a square matrix A with a non-zero determinant as the adjoint matrix divided by the determinant. It provides an example of calculating the inverse of a 3x3 matrix. It also notes that the inverse of a 2x2 matrix can be written explicitly using the formula that involves the determinant and matrix elements.

Uploaded by

spoof183
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
83 views3 pages

Inverse of A Square Matrix

The document discusses the inverse of a square matrix. It defines the inverse of a square matrix A with a non-zero determinant as the adjoint matrix divided by the determinant. It provides an example of calculating the inverse of a 3x3 matrix. It also notes that the inverse of a 2x2 matrix can be written explicitly using the formula that involves the determinant and matrix elements.

Uploaded by

spoof183
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Inverse of a Square Matrix

Inverse of a square matrix



Written by Paul Bourke

August 2002


See also: Determinant of a Square Matrix


The inverse of a square matrix A with a non zero determinant is
the adjoint matrix divided by the determinant, this can
be written as

  1  
-1
A =  adj(A)
  det(A) 


The adjoint matrix is the transpose of the cofactor matrix. The cofactor
matrix is the matrix of determinants of the
minors Aij
multiplied by -1i+j. The i,j'th minor of A is the
matrix A without the i'th column or the j'th row.

Example (3x3 matrix)


The following example illustrates each matrix type and at 3x3 the
steps can be readily calculated on paper. It can also
be verified that
the original matrix A multipled by its inverse gives the identity
matrix (all zeros except along the
diagonal which are ones).

  1     2    0  
A =   -1    1    1  
  1     2    3  


Determinant = 9

        
  1    1     -1    1     -1    1  
  +   -   +
  2    3     1     3     1     2  

  
  
  
        
  1     4     -3  
  2    0     1    0     1    2  
Cofactor matrix =   -   +   -   =     -6     3     -0  
  2    3     1    3     1    2  
  2     -1     3  

  
  
  
        
     +   2    0     -   1     0     +   1     2        
  1    1     -1    1     -1    1  

  
  
  

  1     -6     2  


Adjoint matrix = Transpose of cofactor matrix =   4     3     -1  
  -3    -0     3  

  1/9     -6/9     2/9  


A-1 = Inverse of A =   4/9     3/9     -1/9  
  -3/9     0     3/9  

  1    0    0  
-1

https://www.cs.rochester.edu/~brown/Crypto/assts/projects/adj.html[2016-04-29 12:59:31 PM]


Inverse of a Square Matrix

A A =   0    1    0  
  0    0    1  

Inverse of a 2x2 matrix


The inverse of a 2x2 matrix can be written explicitly, namely

1
  a    b  
    d     -b  
 = 
  c    d       -c     a  
ad - bc
Source code


The three functions required are the determinant, cofactor, and
transpose. Examples of these are given below.
/*
Recursive definition of determinate using expansion by minors.
*/
double Determinant(double **a,int n)
{
int i,j,j1,j2;
double det = 0;
double **m = NULL;
if (n < 1) { /* Error */
} else if (n == 1) { /* Shouldn't get used */
det = a[0][0];
} else if (n == 2) {
det = a[0][0] * a[1][1] - a[1][0] * a[0][1];
} else {
det = 0;
for (j1=0;j1<n;j1++) {
m = malloc((n-1)*sizeof(double *));
for (i=0;i<n-1;i++)
m[i] = malloc((n-1)*sizeof(double));
for (i=1;i<n;i++) {
j2 = 0;
for (j=0;j<n;j++) {
if (j == j1)
continue;
m[i-1][j2] = a[i][j];
j2++;
}
}
det += pow(-1.0,j1+2.0) * a[0][j1] * Determinant(m,n-1);
for (i=0;i<n-1;i++)
free(m[i]);
free(m);
}
}
return(det);
}
/*
Find the cofactor matrix of a square matrix
*/
void CoFactor(double **a,int n,double **b)
{
int i,j,ii,jj,i1,j1;
double det;
double **c;
c = malloc((n-1)*sizeof(double *));
for (i=0;i<n-1;i++)
c[i] = malloc((n-1)*sizeof(double));
for (j=0;j<n;j++) {
for (i=0;i<n;i++) {
/* Form the adjoint a_ij */

https://www.cs.rochester.edu/~brown/Crypto/assts/projects/adj.html[2016-04-29 12:59:31 PM]


Inverse of a Square Matrix

i1 = 0;
for (ii=0;ii<n;ii++) {
if (ii == i)
continue;
j1 = 0;
for (jj=0;jj<n;jj++) {
if (jj == j)
continue;
c[i1][j1] = a[ii][jj];
j1++;
}
i1++;
}
/* Calculate the determinate */
det = Determinant(c,n-1);
/* Fill in the elements of the cofactor */
b[i][j] = pow(-1.0,i+j+2.0) * det;
}
}
for (i=0;i<n-1;i++)
free(c[i]);
free(c);
}
/*
Transpose of a square matrix, do it in place
*/
void Transpose(double **a,int n)
{
int i,j;
double tmp;
for (i=1;i<n;i++) {
for (j=0;j<i;j++) {
tmp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = tmp;
}
}
}

https://www.cs.rochester.edu/~brown/Crypto/assts/projects/adj.html[2016-04-29 12:59:31 PM]

You might also like