Ad

Friday, June 29, 2007

Algebra of Matrices (2D Arrays) Part II

As you know from the previous article, matrices are 2D arrays. In the previous article, we saw how two matrices are added and subtracted. In this article, we will continue our discussion on algebra of two matrices by discussing how two matrices are multiplied.

Multiplication of two Matrices

Multiplication of two matrices mat1[a x b] and mat2[p x q] is only valid if b=p. While there are many algorithms by which two matrices can be multiplied, here I’ll give you the most simple algorithm. Others are used when efficiency matters.

Algorithm for Multiplication of two Matrices

Suppose,

  • Two 2D arrays to be mat1 [p][p] and mat2 [p][p] having same number of rows and columns.

  • A third 2D array, mul [p][p] to store the result.

Here is the algorithm:

  1. FOR I = 0 TO (p-1)
  2. FOR J = 0 TO (p-1)
         mul [I][J] = 0
         FOR K = 0 TO (p-1)
         mul [I][J] += (mat1 [I][K] * mat2 [K][J])
  3. END OF INNER LOOP
  4. END OF OUTER LOOP

Below is a example program which illustrates the multiplication of two matrices by this algorithm:

  // Example program in C++
  // It shows you how to
  // multiply two matrices
  #include<iostream.h>

  void main(void)
  {
   int i,j,k;
   // this constant determines
   // the number of rows and columns
   const int max=3;

   int mat1[max][max];
   int mat2[max][max];
   int mul[max][max];

   cout<<"enter elements for mat1:";
   for(i=0;i<=(max-1);i++)
     for(j=0;j<=(max-1);j++)
       cin>>mat1[i][j];

   cout<<"enter elements for mat2:";
   for(i=0;i<=(max-1);i++)
     for(j=0;j<=(max-1);j++)
       cin>>mat2[i][j];

   // multiplication of two matrices
   // is done here
   for(i=0;i<=(max-1);i++)
     for(j=0;j<=(max-1);j++)
      {
       mul[i][j]=0;
       for(k=0;k<=(max-1);k++)
       mul[i][j]+=mat1[i][k]*mat2[k][j];
      }
   // till here

   // show the contents of the array
   // after formatting
   for(i=0;i<=(max-1);i++)
    {
     for(j=0;j<=(max-1);j++)
       cout<<mul[i][j]<<" ";
     cout<<endl;
    }
  }

Good-Bye!

Related Articles:

2 comments:

  1. Anonymous5:13 AM

    Thanks! It helped a lot to me!

    ReplyDelete

You are free to comment anything, although you can comment as 'Anonymous' it is strongly recommended that you supply your name. Thank You.

Please don't use abusive language.