Matrix multiplication

From Free net encyclopedia

This article gives an overview of the various ways to multiply matrices.

Contents

Ordinary matrix product

By far the most important way to multiply matrices is the usual matrix multiplication. It is defined between two matrices only if the number of columns of the first matrix is the same as the number of rows of the second matrix. If A is an m-by-n matrix and B is an n-by-p matrix, then their product is an m-by-p matrix denoted by AB (or sometimes A · B). The product is given by

<math> (AB)_{ij} = \sum_{r=1}^n a_{ir}b_{rj} = a_{i1}b_{1j} + a_{i2}b_{2j} + \cdots + a_{in}b_{nj}. </math>

for each pair i and j with 1 ≤ im and 1 ≤ jp. The algebraic system of "matrix units" summarises the abstract properties of this kind of multiplication.

Calculating directly from the definition

Image:Matrix multiplication diagram.PNG

The picture to the left shows how to calculate the (1,2) element and the (3,3) element of AB if A is a 4×2 matrix, and B is a 2×3 matrix. Elements from each matrix are paired off in the direction of the arrows; each pair is multiplied and the products are added. The location of the resulting number in AB corresponds to the row and column that were considered.

<math>(AB)_{1,2} = \sum_{r=1}^2 a_{1,r}b_{r,2} = a_{1,1}b_{1,2}+a_{1,2}b_{2,2}

</math>

<math>(AB)_{3,3} = \sum_{r=1}^2 a_{3,r}b_{r,3} = a_{3,1}b_{1,3}+a_{3,2}b_{2,3}

</math>

The coefficients-vectors method

This matrix multiplication can also be considered from a slightly different viewpoint: it adds vectors together after being multiplied by different coefficients. If A and B are matricies given by:

<math> \mathbf{A} =

\begin{bmatrix}

  a_{1,1} & a_{1,2} & \dots \\
  a_{2,1} & a_{2,2} & \dots \\
  \vdots & \vdots & \ddots

\end{bmatrix}

</math> and <math> \mathbf{B} =

\begin{bmatrix}

  b_{1,1} & b_{1,2} & \dots \\
  b_{2,1} & b_{2,2} & \dots \\
  \vdots & \vdots & \ddots

\end{bmatrix}

</math>

then

<math>

\mathbf{AB} = \begin{bmatrix}

  a_{1,1} \begin{bmatrix} b_{1,1} & b_{1,2} & \dots \end{bmatrix} + a_{1,2} \begin{bmatrix} b_{2,1} & b_{2,2} & \dots \end{bmatrix} + \cdots \\\\
  a_{2,1} \begin{bmatrix} b_{1,1} & b_{1,2} & \dots \end{bmatrix} + a_{2,2} \begin{bmatrix} b_{2,1} & b_{2,2} & \dots \end{bmatrix} + \cdots \\
  \vdots

\end{bmatrix}

</math>

For example:

<math>
 \begin{bmatrix}
    1 & 0 & 2 \\ 
    -1 & 3 & 1
 \end{bmatrix}

\cdot

 \begin{bmatrix} 
   3 & 1 \\ 
   2 & 1 \\ 
   1 & 0
 \end{bmatrix}

= \begin{bmatrix}

  1 \begin{bmatrix} 3 & 1 \end{bmatrix} + 0 \begin{bmatrix} 2 & 1 \end{bmatrix} + 2 \begin{bmatrix} 1 & 0 \end{bmatrix} \\
  -1 \begin{bmatrix} 3 & 1 \end{bmatrix} + 3 \begin{bmatrix} 2 & 1 \end{bmatrix} + 1 \begin{bmatrix} 1 & 0 \end{bmatrix}

\end{bmatrix} = \begin{bmatrix}

  \begin{bmatrix} 3 & 1 \end{bmatrix} +   \begin{bmatrix} 0 & 0 \end{bmatrix} +   \begin{bmatrix} 2 & 0 \end{bmatrix} \\
  \begin{bmatrix} -3 & -1 \end{bmatrix} + \begin{bmatrix} 6 & 3 \end{bmatrix} +   \begin{bmatrix} 1 & 0 \end{bmatrix}

\end{bmatrix}

</math>

<math>

= \begin{bmatrix}

   5 & 1 \\
   4 & 2

\end{bmatrix}

</math>

The rows in the matrix on the left is the list of coefficients. The matrix on the right is the list of vectors. In the example, the first row is [1 0 2], and thus we take 1 times the first vector, 0 times the second vector, and 2 times the third vector.

Vector-lists method

The ordinary matrix product can be thought of as a dot product of a column-list of vectors and a row-list of vectors. If A and B are matricies given by:

<math> \mathbf{A} =

\begin{bmatrix}

  a_{1,1} & a_{1,2} & a_{1,3} & \dots \\
  a_{2,1} & a_{2,2} & a_{2,3} & \dots \\
  a_{3,1} & a_{3,2} & a_{3,3} & \dots \\
  \vdots & \vdots & \vdots & \ddots

\end{bmatrix} = \begin{bmatrix}

  A_1 \\
  A_2 \\
  A_3 \\
  \vdots

\end{bmatrix}

</math> and <math> \mathbf{B} =

\begin{bmatrix}

  b_{1,1} & b_{1,2} & b_{1,3} & \dots \\
  b_{2,1} & b_{2,2} & b_{2,3} & \dots \\
  b_{3,1} & b_{3,2} & b_{3,3} & \dots \\
  \vdots & \vdots & \vdots & \ddots

\end{bmatrix} = \begin{bmatrix} B_1 & B_2 & B_3 & \dots \end{bmatrix}

</math>

where

A1 is the vector of all elements of the form a1,x      A2 is the vector of all elements of the form a2,x     etc,
and B1 is the vector of all elements of the form bx,1      B2 is the vector of all elements of the form bx,2     etc,

then

<math>

\mathbf{AB} =

\begin{bmatrix}

  A_1 \\
  A_2 \\
  A_3 \\
  \vdots

\end{bmatrix}

\begin{bmatrix} B_1 & B_2 & B_3 & \dots \end{bmatrix} = \begin{bmatrix} (A_1 \cdot B_1) & (A_1 \cdot B_2) & (A_1 \cdot B_3) & \dots \\ (A_2 \cdot B_1) & (A_2 \cdot B_2) & (A_2 \cdot B_3) & \dots \\ (A_3 \cdot B_1) & (A_3 \cdot B_2) & (A_3 \cdot B_3) & \dots \\ \vdots & \vdots & \vdots & \ddots

\end{bmatrix} </math>

Properties

Matrix multiplication is not commutative (that is, ABBA), except in special cases. It's easy to see why: you can't expect to switch the proportions with the vectors and get the same result. It's also easy to see why the number of columns in the proportions matrix has to be the same as the number of rows in the vectors matrix: they have to represent the same number of vectors.

This notion of multiplication is important because if A and B are interpreted as linear transformations (which is almost universally done), then the matrix product AB corresponds to the composition of the two linear transformations, with B being applied first.

Algorithms

The complexity of matrix multiplication, if carried out naively, is O(n³), but more efficient algorithms do exist. Strassen's algorithm, devised by Volker Strassen in 1969 and often referred to as "fast matrix multiplication", is based on a clever way of multiplying two 2 × 2 matrices which requires only 7 multiplications (instead of the usual 8). Applying this trick recursively gives an algorithm with a cost of O(nlog2(7)) = O(n2.807...). In practice, though, it is rarely used since it is awkward to implement, lacking numerical stability. The constant factor involved is about 4.695 asymptotically; Winograd's method improves on this slightly by reducing it to an asymptotic 4.537.

The best algorithm currently known, which was presented by Don Coppersmith and S. Winograd in 1990, has an asymptotic complexity of O(n2.376). It is based on a similar trick as Strassen's algorithm: a clever way is devised for multiplying two k × k matrices with less than k3 multiplications, and this technique is applied recursively.

Since any algorithm for multiplying two n × n matrices has to process all n2 entries, it cannot run faster than O(n2). Most researchers believe that an optimal algorithm will run in essentially O(n2) time (Robinson, 2005).

Scalar multiplication

The scalar multiplication of a matrix A = (aij) and a scalar r gives a product rA of the same size as A. The entries of rA are given by

<math> (rA)_{ij} = r \cdot a_{ij}. \, </math>

If we are concerned with matrices over a ring, then the above multiplication is sometimes called the left multiplication while the right multiplication is defined to be

<math> (Ar)_{ij} = a_{ij} \cdot r. \, </math>

When the underlying ring is commutative, for example, the real or complex number field, the two multiplications are the same. However, if the ring is not commutative, such as the quaternions, they may be different. For example

<math>
 i\begin{bmatrix} 
   i & 0 \\ 
   0 & j \\ 
 \end{bmatrix}

= \begin{bmatrix}

   -1 & 0 \\
    0 & k \\
 \end{bmatrix}

\ne \begin{bmatrix}

   -1 & 0 \\
   0 & -k \\
 \end{bmatrix}

= \begin{bmatrix}

   i & 0 \\
   0 & j \\
 \end{bmatrix}i

</math>

Hadamard product

For two matrices of the same dimensions, we have the Hadamard product or entrywise product. The Hadamard product of two m-by-n matrices A and B, denoted by AB, is an m-by-n matrix given by (AB)ij = aijbij. For instance

<math>
 \begin{bmatrix}
   1 & 3 & 2 \\ 
   1 & 0 & 0 \\ 
   1 & 2 & 2
 \end{bmatrix}

\bullet

 \begin{bmatrix} 
   0 & 0 & 2 \\ 
   7 & 5 & 0 \\ 
   2 & 1 & 1
 \end{bmatrix}

=

 \begin{bmatrix} 
   1 \cdot 0 & 3 \cdot 0 & 2 \cdot 2 \\ 
   1 \cdot 7 & 0 \cdot 5 & 0 \cdot 0 \\ 
   1 \cdot 2 & 2 \cdot 1 & 2 \cdot 1
 \end{bmatrix}

=

 \begin{bmatrix} 
   0 & 0 & 4 \\ 
   7 & 0 & 0 \\ 
   2 & 2 & 2
 \end{bmatrix}

</math>

Note that the Hadamard product is a submatrix of the Kronecker product (see below). The Hadamard product is studied by matrix theorists, but it is virtually untouched by linear algebraists. It is discussed in (Horn & Johnson, 1994, Ch. 5).

Kronecker product

Main article: Kronecker product.

For any two arbitrary matrices A and B, we have the direct product or Kronecker product A Template:Dirprod B defined as

<math>
 \begin{bmatrix} 
   a_{11}B & a_{12}B & \cdots & a_{1n}B \\ 
   \vdots & \vdots & \ddots & \vdots \\ 
   a_{m1}B & a_{m2}B & \cdots & a_{mn}B
 \end{bmatrix}.

</math>

Note that if A is m-by-n and B is p-by-r then A Template:Dirprod B is an mp-by-nr matrix. Again this multiplication is not commutative.

For example

<math>
 \begin{bmatrix} 
   1 & 2 \\ 
   3 & 1 \\ 
 \end{bmatrix}

\otimes

 \begin{bmatrix} 
   0 & 3 \\ 
   2 & 1 \\ 
 \end{bmatrix}

=

 \begin{bmatrix} 
   1\cdot 0 & 1\cdot 3 & 2\cdot 0 & 2\cdot 3 \\ 
   1\cdot 2 & 1\cdot 1 & 2\cdot 2 & 2\cdot 1 \\ 
   3\cdot 0 & 3\cdot 3 & 1\cdot 0 & 1\cdot 3 \\ 
   3\cdot 2 & 3\cdot 1 & 1\cdot 2 & 1\cdot 1 \\ 
 \end{bmatrix}

=

 \begin{bmatrix} 
   0 & 3 & 0 & 6 \\ 
   2 & 1 & 4 & 2 \\
   0 & 9 & 0 & 3 \\
   6 & 3 & 2 & 1
 \end{bmatrix}

</math>.

If A and B represent linear transformations V1W1 and V2W2, respectively, then A Template:Dirprod B represents the tensor product of the two maps, V1 Template:Dirprod V2W1 Template:Dirprod W2.

Common properties

All three notions of matrix multiplication are associative:

A(BC) = (AB)C

and distributive:

A(B + C) = AB + AC

and

(A + B)C = AC + BC

and compatible with scalar multiplication:

c(AB) = (cA)B = A(cB)

See also

External links

References

  • Strassen, Volker, Gaussian Elimination is not Optimal, Numer. Math. 13, p. 354-356, 1969.
  • Coppersmith, D., Winograd S., Matrix multiplication via arithmetic progressions, J. Symbolic Comput. 9, p. 251-280, 1990.
  • Horn, Roger; Johnson, Charles: "Topics in Matrix Analysis", Cambridge, 1994.
  • Robinson, Sarah, Toward an Optimal Algorithm for Matrix Multiplication, SIAM News 38(9), November 2005.cs:Násobení matic

fr:Produit matriciel it:Moltiplicazione di matrici he:כפל מטריצות nl:Matrixvermenigvuldiging pl:Mnożenie macierzy