# MATRIX MULTIPLICATION PROGRAM

In this “MATRIX MULTIPLICATION PROGRAM” article, You can learn about matrix multiplication programs, matrix multiplication basics, dimensions, types of matrices, scalar multiplication, dot product, rule of multiplying matrices, algorithm, c and python program, and matrix multiplication program using python numpy.

## MATRIX MULTIPLICATION BASICS

A matrix is a rectangular arrangement of numbers into rows and columns. it is also known as a 2-D array. Each cell contains a number and each number in a matrix is referred to as a **matrix element **or **entry.**

The **dimensions** of the matrix tell its size: the number of rows and columns of the matrix, in that order. For example,

Since Matrix A has one row and three columns, so it’s dimension is 1 × 3, pronounced as “1 by 3”. Similarly, Matrix B has three rows and two columns, so its dimensions are 3 × 2.

No of rows comes first then no of columns. (Dimension)

Row is treated as row i and column is treated as column j of Matrix A is denoted as Ai,j.

There are different types of matrices,

**Square Matrix**.**Symmetric Matrix**.- Triangular Matrix.
**Diagonal Matrix**.- Identity Matrix.
- Orthogonal Matrix.

### SCALAR MULTIPLICATION

The term “SCALAR” means (of a quantity) having only magnitude, not direction. Like, 2, 1, 10 etc real numbers.

The term **scalar multiplication** refers to the product of a real number and a matrix. In scalar multiplication, each entry in the matrix is multiplied by the given scalar. For example,

Since, A is multiplied with a real number i.e. 3 thus each entry in the matrix is multiplied by 3.

In many cases, the repeated addition of a matrix is done as A+ A+ A = 3 ( A ).

### DOT PRODUCT

We are familiar with ordered pairs, for example (2,5), and perhaps even ordered triples, for example (3,1,8).

We can find the **dot product** of two n-tuples of equal length by summing the products of corresponding entries.

For example, to find the dot product of two ordered pairs, we multiply the first coordinates and the second coordinates and add the results.

Ordered n-tuples are often indicated by a variable with an arrow on top. For example, we can let a⃗=(3,1,8) and b⃗=(4,2,3). The expression a⃗⋅b⃗ indicates the dot product of these two ordered triples and can be found as follows:

a⃗⋅b⃗=(3,1,8)⋅(4,2,3)

=3⋅4+1⋅2+8⋅3

=12+2+24

=38

Notice that the dot product of two n-tuples of equal length is always a single real number.

To perform **matrix multiplication**, at least 2 matrices are required. Thus there are different types of matrices, there are some rules given below, which are used to perform matrix multiplication.

### RULE OF MULTIPLYING MATRICES

For **matrix multiplication**, the** number of columns** in the first **matrix** must be equal to the **number of rows** in the second **matrix**. The result **matrix** has the number of rows of the first and the number of columns of the second **matrix**.

We can add, subtract, multiply, and divide 2 matrices. To do so, we are taking input from the user for row number, column number, first matrix elements, and second matrix elements. Then we are performing multiplication on the matrices entered by the user.

In **matrix multiplication**, the first matrix one-row element is multiplied by the second matrix all column elements.

The **resulting matrix dimension** is First matrix row size and second matrix column size.

### ALGORITHM:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Step 1: Start the program Step 2: Initialize matrices A and B Step 3: Initialize row and column using initMatrix function Step 4: If c1!=r2 then exit because rule violate Step 5: Input matrices A and B values using valueMatrix function Step 6: Print A and B matrix values using printMatrix function Step 7: Using MATRIXmutli calculate multiplication value Let C be a new matrix of the appropriate size For i from 1 to r1: For j from 1 to c2: Cij = 0 For k from 1 to c1: Set Cij ← Cij + Aik × Bkj Print C matrix values as result Step 8: Stop the program |

### C PROGRAM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
#include<stdio.h> #include<stdlib.h> void initMatrix( int *r, int *c) { printf("\nNumber of rows: "); scanf("%d",r); printf("\nNumber of columns: "); scanf("%d",c); } void valueMatrix(int a[50][50],int r,int c) { for(int i=0; i<r; i++) { for(int j=0; j<c; j++) { printf("Array[%d][%d]: ",i+1,j+1); scanf("%d",&a[i][j]); } } } void printMartix(int a[50][50], int r, int c) { for(int i=0; i<r; i++) { for(int j=0; j<c; j++) { printf(" %d ",a[i][j]); } printf("\n"); } } void MATRIXmutli(int a[50][50], int b[50][50], int r1,int r2, int c1, int c2) { int res[50][50]; for(int i=0; i<r1; i++) { for(int j=0; j<c2; j++) { res[i][j]=0; for(int k=0; k<c1; k++) { res[i][j]+=a[i][k]*b[k][j]; } } } printMartix(res,r1,c2); } int main() { int a[50][50],b[50][50], mul[50][50],r1,r2,c1,c2; r1=c1=r2=c2=0; system("clear"); // used in linux based terminal // clrscr(); used in windows based terminal printf("\n\tFirst Matrix"); initMatrix(&r1,&c1); printf("\n\tSecond Matrix"); initMatrix(&r2,&c2); // matrix multiplication rule if(c1!=r2) exit(1); printf("\n\tFirst Matrix\n"); valueMatrix(a,r1,c1); printf("\n\tSecond Matrix\n"); valueMatrix(b,r2,c2); printf("\n\tFirst Matrix\n"); printMartix(a,r1,c1); printf("\n\tSecond Matrix\n"); printMartix(b,r2,c2); printf("\n\tResult\n"); MATRIXmutli(a,b,r1,r2,c1,c2); return 0; } // [ is denoted as left bracket // < is less than and so on. |

### PYTHON PROGRAM:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
a=[] b=[] l=[] print("\t First Matrix") r1=int(input("Number of rows: ")) c1=int(input("Number of columns: ")) print("\t Second Matrix") r2=int(input("Number of rows: ")) c2=int(input("Number of columns: ")) if(c1!=r2): exit(1) #result matrix r=[[0 for i in range(c2)] for i in range(r1)] print("\tFirst Matrix") for i in range(r1): for j in range(c1): print("Array[",(i+1),"][",(j+1),"]: ",end="") v=int(input()) l.append(v) a.append(l) l=[] print("\tSecond Matrix") l=[] for i in range(r2): for j in range(c2): print("Array[",(i+1),"][",(j+1),"]: ",end="") v=int(input()) l.append(v) b.append(l) l=[] print("\tFirst Matrix") for i in range(len(a)): for j in range(len(a[0])): print(a[i][j]," ",end=" ") print() print("\tSecond Matrix") for i in range(len(b)): for j in range(len(b[0])): print(b[i][j]," ",end=" ") print() for i in range(len(a)): # no of rows in first matrix # iterating by coloum by B # no of col in 2nd matrix for j in range(len(b[0])): # iterating by rows of B for k in range(len(b)): r[i][j] += a[i][k] * b[k][j] print("\tResult") for i in range(len(a)): for j in range(len(a[0])): print(r[i][j]," ",end=" ") print() |

### INPUT OUTPUT:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
First Matrix Number of rows: 2 Number of columns: 2 Second Matrix Number of rows: 2 Number of columns: 2 First Matrix Array[1][1]: 2 Array[1][2]: 3 Array[2][1]: 3 Array[2][2]: 4 Second Matrix Array[1][1]: 1 Array[1][2]: 2 Array[2][1]: 1 Array[2][2]: 2 First Matrix 2 3 3 4 Second Matrix 1 2 1 2 Result 5 10 7 14 |

## NUMPY IN PYTHON

A Very simple program using numpy in python.

1 2 3 4 5 6 7 8 9 10 |
import numpy as np a=[[2,3],[3,4]] b=[[1,2],[1,2]] r=np.dot(a,b) for r1 in r: print(r1) #OUTPUT 5 10 7 14 |

This program is common in many examinations. Do practice with these programs.

Matrix multiplication program has a simple trick to remember the code, read it as,

1 2 3 4 5 6 |
for i=0 to Matrix_A_row for j=0 to Matrix_B_col res=0 for k=0 to Matrix_A_col res of i,j + = a of i,k * b of k,j print(res,Matrix_A_row, Matrix_B_column) |

The given above short note is helpful to you.

YOU MIGHT LIKE:

https://www.shoutcoders.com/divide-and-conquer-quick-sort/

https://www.shoutcoders.com/activity-selection-problem/

https://www.shoutcoders.com/fifo-page-replacement-algorithm/

https://www.shoutcoders.com/memory-management-note/

If you feel any question regarding this, feel free to comment below, and Hope that you can learn something new today. 🙂