Search This Blog

Translate

c matrix multiplication



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:




 





C Program example List

Google+ Badge