Matrix Multiplication
Algorithm
Input two matrixes. Output Output matrix C. Complexity O(n^3) Matrix-Multiply(A, B) 1 if columns [A] ≠ rows [B] 2 then error "incompatible dimensions" 3 else 4 for i =1 to rows [A] 5 for j = 1 to columns [B] 6 C[i, j] =0 7 for k = 1 to columns [A] 8 C[i, j]=C[i, j]+A[i, k]*B[k, j] 9 return C
Algorithm Description
To multiply two matrixes sufficient and necessary condition is "number of columns in matrix A = number of rows in matrix B". Loop for each row in matrix A. Loop for each columns in matrix B and initialize output matrix C to 0. This loop will run for each rows of matrix A. Loop for each columns in matrix A. Multiply A[i,k] to B[k,j] and add this value to C[i,j] Return output matrix C.
C Code
//Multiplication of Two Matrices
//Input : Two matrices of type integer
#include< stdio.h>
#include< conio.h>
int main()
{
int a[10][10],b[10][10],c[10][10],i,j,k,r1,r2,c1,c2;
printf("Enter rows n columns of matrix A ");
scanf("%d %d",&r1,&c1);
printf("Enter rows n columns of matrix B ");
scanf("%d %d",&r2,&c2);
if(c1!=r2)
{
printf("Multiplication not possible");
exit(0);
}
printf("Enter elements for matrix A\n");
for(i=0;i< r1;i++)
{
for(j=0;j< c1;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("Enter elements for matrix B\n");
for(i=0;i< r2;i++)
{
for(j=0;j< c2;j++)
{
scanf("%d",&b[i][j]);
}
}
printf("Matrix multiplication is :\n");
for(i=0;i< r1;i++)
{
for(j=0;j< c2;j++)
{
c[i][j]=0;
for(k=0;k< c1;k++)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
for(i=0;i< r1;i++)
{
for(j=0;j< c2;j++)
{
printf("%d ",c[i][j]);
}
printf("\n");
}
}