I need to calculate the Inverse of A matrix.
An nxn matrix using different row operations:
Row Interchange: Row i is interchanged with Row j in matrix A. We write Ri ↔ Rj .
Row Scaling: Row i in matrix A is multiplied by a nonzero scaling factor c. We write
Ri ← cRi.
Row Addition: Row i in matrix A is replaced by the sum of Row i and a multiple m of
some row Row j. We write Ri ← Ri + mRj .
I need help setting up the algorithm..
So i make a matrix B the Identity Matrix
And i have to make A into the identity matrix using various row operations.
and whatever i do to A i have to do to B to get the inverse
So far I have :
Code:
#include<stdio.h>
void printMatrix (char name, double **matrix, int n)
{
printf("%c =\n", name);
int i,j;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
if (matrix[i][j] == -0.0)
matrix[i][j] = 0.0;
printf(" %11.4e", matrix[i][j]);
}
printf("\n");
}
return;
}
int main()
{
int dimension;
printf("Enter the dimension of square matrix: \n");
scanf("%d",&dimension);
printf("Enter the %d entries of the matrix:", dimension*dimension);
scanf("%d %d", &dimension, &dimension);
// allocate the first dimension (rows)
int **matrix = (int **)malloc(dimension*sizeof(int *));
// allocate the second dimension (columns)
int i;
for (i=0; i<dimension; i++)
{
matrix[i] = (int *)malloc(dimension*sizeof(int));
}
int k,l;
for (k=0; k<M; k++)
{
for (l=0; l<N; l++)
{
scanf("%lf",&table[k][l]);
}
}
//Set up the identity Matrix
int **matrixB = (int **)malloc(dimension*sizeof(int *));
int j;
for (j=0; j<dimension; j++)
{
matrixB[i] = (int *)malloc(dimension*sizeof(int));
}
//Make B the identity Matirix.
int m,n;
for(m=0;m<=dimension;m++)
{
for(n=0;n<=dimension;n++)
{
if(m==n)
matrixB[m][m]=1;
else
matrixB[m][n]=0;
}
}
}