Given a
A tensor B = |a11B a12B| |a21B a22B| = |a11b11 a11b12 a12b11 a12b12| |a11b21 a11b22 a12b21 a12b22| |a11b31 a11b32 a12b31 a12b32| |a21b11 a21b12 a22b11 a22b12| |a21b21 a21b22 a22b21 a22b22| |a21b31 a21b32 a22b31 a22b32|
Examples:
1. The matrix direct(kronecker) product of the 2×2 matrix A and the 2×2 matrix B is given by the 4×4 matrix : Input : A = 1 2 B = 0 5 3 4 6 7 Output : C = 0 5 0 10 6 7 12 14 0 15 0 20 18 21 24 28 2. The matrix direct(kronecker) product of the 2×3 matrix A and the 3×2 matrix B is given by the 6×6 matrix : Input : A = 1 2 B = 0 5 2 3 4 6 7 3 1 0 Output : C = 0 5 2 0 10 4 6 7 3 12 14 6 0 15 6 0 20 8 18 21 9 24 28 12 0 5 2 0 0 0 6 7 3 0 0 0
Below is the code to find the Kronecker Product of two matrices and stores it as matrix C :
Python3
# Python3 code to find the Kronecker Product of two # matrices and stores it as matrix C # rowa and cola are no of rows and columns # of matrix A # rowb and colb are no of rows and columns # of matrix B cola = 2
rowa = 3
colb = 3
rowb = 2
# Function to computes the Kronecker Product # of two matrices def Kroneckerproduct( A , B ):
C = [[ 0 for j in range (cola * colb)] for i in range (rowa * rowb)]
# i loops till rowa
for i in range ( 0 , rowa):
# k loops till rowb
for k in range ( 0 , rowb):
# j loops till cola
for j in range ( 0 , cola):
# l loops till colb
for l in range ( 0 , colb):
# Each element of matrix A is
# multiplied by whole Matrix B
# resp and stored as Matrix C
C[i + l + 1 ][j + k + 1 ] = A[i][j] * B[k][l]
print (C[i + l + 1 ][j + k + 1 ],end = ' ' )
print ("
") # Driver code. A = [[ 0 for j in range ( 2 )] for i in range ( 3 )]
B = [[ 0 for j in range ( 3 )] for i in range ( 2 )]
A[ 0 ][ 0 ] = 1
A[ 0 ][ 1 ] = 2
A[ 1 ][ 0 ] = 3
A[ 1 ][ 1 ] = 4
A[ 2 ][ 0 ] = 1
A[ 2 ][ 1 ] = 0
B[ 0 ][ 0 ] = 0
B[ 0 ][ 1 ] = 5
B[ 0 ][ 2 ] = 2
B[ 1 ][ 0 ] = 6
B[ 1 ][ 1 ] = 7
B[ 1 ][ 2 ] = 3
Kroneckerproduct( A , B ) # This code is contributed by Saloni. |
Output :
0 5 2 0 10 4 6 7 3 12 14 6 0 15 6 0 20 8 18 21 9 24 28 12 0 5 2 0 0 0 6 7 3 0 0 0
Time Complexity: O(rowa*rowb*cola*colb), as we are using nested loops.
Auxiliary Space: O((rowa + colb) * (rowb + cola)), as we are not using any extra space.
Please refer complete article on Kronecker Product of two matrices for more details!
Recommended Articles