Multiplication of Matrices
Consider two matrices A and B with the following
characteristics: the number of columns in A equals the number of rows in
B. These are conformable with respect to one another, and they
can be multiplied together to form a new matrix Z.
The expression
zij = ai1* b1j + ai2*
b2j + ai3* b3j + ... aim* bnj
means "add the products obtained by multiplying elements in
each i row of matrix A by elements in each j column of matrix B".
Figure 4 illustrates what we mean by this statement.
Matrix multiplication has a catch as we mentioned before. The
order in which we multiply terms does matter. The reason for this is that we
need to multiply row elements by column elements and one by one.
Therefore A*B
and B*A can produce different results. We say "can produce"
because there exist special cases in which the operation is commutative (order
does not matter). An example of this is when we deal with diagonal matrices.
Diagonal matrices were described below.
matrix multiplication program example with source code
#include
#include
void main()
{
int
m, n, p, q, c, d, k, sum = 0;
int
first[10][10], second[10][10], mul[10][10];
printf("Enter
the number of rows and columns of first matrix\n");
scanf("%d%d",&m,&n);
printf("Enter
the elements of first matrix\n");
for (
c = 0 ; c < m ; c++ )
for ( d = 0 ; d < n ; d++ )
scanf("%d",&first[c][d]);
printf("Enter
the number of rows and columns of second matrix\n");
scanf("%d%d",&p,&q);
if ( n != p )
printf("Matrices
with entered orders can't be multiplied with each other.\n");
else
{
printf("Enter
the elements of second matrix\n");
for ( c = 0 ; c < p ; c++ )
for ( d = 0 ; d < q ; d++ )
scanf("%d",&second[c][d]);
for ( c = 0 ; c < m ; c++ )
{
for ( d = 0 ; d < n ; d++ )
{
for ( k = 0 ; k < p ; k++ )
{
sum = sum + first[c][k]*second[k][d];
}
mul[c][d]
= sum;
sum = 0;
}
}
printf("Product
of entered matrices:-\n");
for ( c = 0 ; c < m ; c++ )
{
for ( d = 0 ; d < q ; d++ )
printf("%d\t",mul[c][d]);
printf("\n");
}
}
getch();
}
Out put of program: