Abstract

In this paper, we investigate on the number of all possible real matrices representing a quaternion number as three skew-symmetric matrices plus the identity matrix of order 4, and how to determine these matrices. We establish that there are 96 distinct real matrices having this property, and by matrix row operations, we obtain these matrices.

1. Introduction

Any quaternion number can be expressed in the form , where are real numbers, and are imaginary units which hold Hamilton’s rule:

Table 1 gives all multiplications of these imaginary units.

The quaternion multiplication is not commutative.

Quaternions have a great impact in developing mathematics [1, 2], for a review and to find out how quaternions were discovered by Sir William Rowan Hamilton, see [35] and [6] to take a general view on his life.

Quaternion numbers have representation as four-dimensional matrices over the real numbers [7], to see this, let

Multiply (2) from the right by , , and , respectively,

We can make a matrix of the coefficients using the basis as follows:

is the identity, and and have the properties:

A square matrix whose transpose equals its negative is said to be skew-symmetric (or antimetric) [8], and are skew-symmetric matrices.

From the basic properties of transposes [9], we know that if is skew-symmetric matrix, then the transpose is skew-symmetric too, so the matrix representation of a quaternion number is not unique.

The transpose matrix of gives another representation of a quaternion number :

and are skew-symmetric matrices.

The purpose of this paper is to eliminate the confusion that existing about the total number of real matrices that can represent a quaternion number.

We investigate the questions:(1)How many distinct matrices in the form of can give representation for a quaternion number?(2)How to determine these matrices?

We will consider two sets of matrices:Left matrix representation and its transposeRight matrix representation and its transpose

Farebrother et al. [10] take one of these two sets and talk about 48 distinct matrices representation for a quaternion number.

2. Discussion and Results

Let us split the matrix into four matrices; of course each matrix has an element takes a different sign from the others:where .

has forms:whereas (two elements remaining, say ) has forms:

Therefore, the total number of all possible matrices is .

To determine these matrices, we do some operations on both columns and rows of the matrix (Tables 24 and Algorithms 16). We will find

#Python code for one column (row) switching
def OneSwitching (A, n, m):
 for i in range (4):
  R = A[n][i]
  A[n][i] = A[m][i]
  A[m][i] = R
 for j in range (4):
  C = A[j][n]
  A[j][n] = A[j][m]
  A[j][m] = C
m = 1 # Replacing m by 2 and another time by 3 gives all 6 matrices
for n in range (m):
A = [[‘a0', ‘−a1', ‘−a2', ‘−a3'], [‘a1', ‘a0', ‘−a3', ‘a2'], [‘a2', ‘a3', ‘a0', ‘−a1'], [‘a3', ‘−a2', ‘a1', ‘a0']]
 print (“The Matrix = n”)
 OneSwitching (A, n, m)
 for i in range (4):
  for j in range (4):
   print (A[i][j], end = “ ”)
  print (“\n”)
#Python code for two columns (rows) switching
def TwoSwitching1 (A, n, m):
 for i in range (4):
  R1 = A[0][i]
  A[0][i] = A[2 m − n − 1][i]
  A[2 m − n − 1][i] = R1
  R2 = A[2 k + m − 1][i]
  A[2 k + m − 1][i] = A[2 k + m + n][i]
  A[2 k + m + n][i] = R2
 for j in range (4):
  C1 = A[j][0]
  A[j][0] = A[j][2 m − n − 1]
  A[j][2 m − n − 1] = C1
  C2 = A[j][2 k + m − 1]
  A[j][2 k + m − 1] = A[j][2 k + m + n]
  A[j][2 k + m + n] = C2
m = 2
k = 0 # another time put m = 1 and k = 1
for n in range (m):
A = [[‘a0', ‘−a1', ‘−a2', ‘−a3'], [‘a1', ‘a0', ‘−a3', ‘a2'], [‘a2', ‘a3', ‘a0', ‘−a1'], [‘a3', ‘−a2', ‘a1', ‘a0']]
 print (“The Matrix = n”)
 TwoSwitching1 (A, n, m)
 for i in range (4):
  for j in range (4):
   print (A[i][j], end = “ ”)
  print (“\n”)
#Python code for two columns (rows) switching
def TwoSwitching2 (A, n, m):
 for i in range (4):
  R = A[0][i]
  A[0][i] = A[2 k + 1][i]
  A[2 k + 1][i] = A[n + m − k][i]
  A[n + m − k][i] = R
 for j in range (4):
  C = A[j][0]
  A[j][0] = A[j][2 k + 1]
  A[j][2 k + 1] = A[j][n + m − k]
  A[j][n + m − k] = C
m = 2
k = 0 # another time put k = 1
for n in range (m):
A = [[‘a0', ‘−a1', ‘−a2', ‘−a3'], [‘a1', ‘a0', ‘−a3', ‘a2'], [‘a2', ‘a3', ‘a0', ‘−a1'], [‘a3', ‘−a2', ‘a1', ‘a0']]
 print (“The Matrix = n”)
 TwoSwitching2 (A, n, m)
 for i in range (4):
  for j in range (4):
   print (A[i][j], end = “ ”)
  print (“\n”)
#Python code for two columns (rows) switching
def TwoSwitching3 (A, n, m):
 for i in range (4):
  R = A[n][i]
  A[n][i] = A[kn + m][i]
  A[kn + m][i] = A[k (n − 2) + m + 1][i]
  A[k (n − 2) + m + 1][i] = R
 for j in range (4):
  C = A[j][n]
  A[j][n] = A[j][kn + m]
  A[j][kn + m] = A[j][k (n − 2) + m + 1]
  A[j][k (n − 2) + m + 1] = C
m = 2
k = 0 # another time put k = 1
for n in range (m):
A = [[‘a0', ‘−a1', ‘−a2', ‘−a3'], [‘a1', ‘a0', ‘−a3', ‘a2'], [‘a2', ‘a3', ‘a0', ‘−a1'], [‘a3', ‘−a2', ‘a1', ‘a0']]
 print (“The Matrix =n”)
 TwoSwitching3 (A, n, m)
 for i in range (4):
  for j in range (4):
   print (A[i][j], end = “ ”)
  print (“\n”)
 #Python code for three columns (rows) switching
 def ThreeSwitching1 (A, n, m):
  for i in range (4):
   R = A[0][i]
   A[0][i] = A[2 k + 1][i]
   A[2 k + 1][i] = A[n + m − k][i]
   A[n + m − k][i] = A[2 m − n − k − 1][i]
   A[2 m − n − k − 1][i] = R
  for j in range (4):
   C = A[j][0]
   A[j][0] = A[j][2 k + 1]
   A[j][2 k + 1] = A[j][n + m − k]
   A[j][n + m − k] = A[j][2 m − n − k − 1]
   A[j][2 m − n − k − 1] = C
m = 2
k = 0 # another time k = 1
 for n in range (m):
  A = [[‘a0', ‘−a1', ‘−a2', ‘−a3'], [‘a1', ‘a0', ‘−a3', ‘a2'], [‘a2', ‘a3', ‘a0', ‘−a1'], [‘a3', ‘−a2‘, ‘a1‘, ‘a0']]
  print (“The Matrix =n”)
  ThreeSwitching1 (A, n, m)
  for i in range (4):
   for j in range(4):
    print (A[i][j], end = “ ”)
   print (“\n”)
 #Python code for three columns (rows) switching
 def ThreeSwitching2 (A, n, m):
  for i in range (4):
   R = A[n][i]
   A[n][i] = A[m − 2 n][i]
   A[m − 2 n][i] = A[n + m − 1][i]
   A[n + m − 1][i] = A[m + 1][i]
   A[m + 1][i] = R
  for j in range (4):
   C = A[j][n]
   A[j][n] = A[j][m − 2 n]
   A[j][m − 2 n] = A[j][n + m − 1]
   A[j][n + m − 1] = A[j][m + 1]
   A[j][m + 1] = C
m = 2
 for n in range (m):
  A = [[‘a0', ‘−a1', ‘−a2', ‘−a3'], [‘a1', ‘a0', ‘−a3', ‘a2'], [‘a2', ‘a3', ‘a0', ‘−a1'], [‘a3', ‘−a2', ‘a1', ‘a0']]
  print (“The Matrix =n”)
  ThreeSwitching2 (A, n, m)
  for i in range (4):
   for j in range  (4):
    print (A[i][j], end = “ ”)
   print (“\n”)

We obtained 23 distinct matrices from the matrix , and by similar way, we can obtain another 23 matrices from the matrix .

Also, we can get another 46 matrices from and .

We stablish by multiplying (2) from the left by , , and , respectively,

So,

and are skew-symmetric matrices, whereas is the transpose of :

and are skew-symmetric matrices.

We put these 96 matrices into two sets:Left matrices representation set which consists of and Right matrices representation set which consists of and where

In solving quaternions problems, we have to pay attention to the difference between the two sets, for example, if we want to find the product , where and .(1)By using left matrices representation:If we take (for example),Thus,If we take ,Thus,(2)By using right matrices representation:

If we take ,

Thus,

If we take ,

Thus,

Is there any advantage in choosing specific matrix representation of a quaternion number in solving a problem? This is the third question, and it will be left for future work.

3. Conclusion

Each one of the four real matrices, (left matrix representation), (transpose matrix of ), (right matrix representation), and (transpose matrix of ), gives 23 distinct matrices, so precisely, there are 96 real matrices that represent a quaternion number where each one of them consists of three skew-symmetric matrices plus the identity matrix.

Data Availability

No data were used to support the findings of the study.

Conflicts of Interest

The author declares no conflicts of interest.