User:Fropuff/Drafts/Tensor product

(Redirected from User:Fropuff/Draft 8)

The tensor product, denoted by the symbol ⊗, refers to a number of closely related operations in mathematics. The unifying concept is that the tensor product represents the most general bilinear (or multilinear) product. The study of tensors, tensor spaces, and tensor products forms a branch of mathematics called multilinear algebra.

Overview

edit

The tensor product can be thought of as the “most general” bilinear product on a pair of vectors. Given vector spaces V, W, and X, a bilinear map is a function on the cartesian product V × W to X which is separately linear in each argument. That is, fixing either the first or second argument results in a linear map.

The tensor product on vectors is defined to be a bilinear map on V and W to a new vector space VW called the tensor product space:

 

The elements of VW can be thought of as formal linear combinations of symbols vw for vV and wW, subject only to the relations necessary for bilinearity. That is, one must have:

  •  
  •  
  •  

Combining the first two properties we have

  •  

Note that the symbol ⊗ is overloaded: it is used to denote the tensor product of two vectors as well as the tensor product of two vector spaces.

Given a fixed vector space V, one can take the tensor product of V with itself k times:

 

The resulting space is called the kth tensor power of V. The elements of such a space are called tensors of rank k on V. The tensor product of a rank m tensor and a rank n tensor is naturally a rank m+n tensor. By taking the direct sum of all tensor powers of V one obtains a space called the tensor algebra of V. The tensor product (of tensors) is the natural multiplication operator in this algebra.

Tensor product of vector spaces

edit

Let V and W be vector spaces over a fixed field K. The tensor product of V and W is another vector space over K together with a universal bilinear map

 

The universality of this map means the following: for any vector space X, and any bilinear map B: V×WX there exists a unique linear map L: VWX such that L(vw) = B(x, y).

The tensor product space VW is determined up to a unique isomorphism by the above universal property.

 
Universal property of the tensor product space

Given bases   and   for V and W respectively, the tensors of the form   forms a basis for  . The dimension of the tensor product therefore is the product of dimensions of the original spaces; for instance   will have dimension  .

Generalizations

edit

See tensor product of modules over a ring

Tensor product of tensors

edit

Let V be a vector space over a field K. For any nonnegative integer k, the kth tensor power of V is the tensor product of V with itself k times:

 

By convention T0V is the ground field K (as a one-dimensional vector space over itself). The elements of TkV are called tensors of rank k on V.

Associativity of the tensor product means that there is a canonical isomorphism

 

In other words, given a rank k tensor and a rank ℓ tensor their tensor product can be interpreted as a rank k + ℓ tensor.

Coordinate description

edit

Given a basis {ei} for V, a basis for TkV is given by

 

A general rank k tensor is written (using the summation convention) as:

 

In terms of these coordinates the tensor product is just given by ordinary multiplication of components. That is,

 

Tensor product of linear transformations

edit

The set of all linear transformations from one vector space to another forms a vector space itself. One can therefore take the tensor product of linear transformations. Such a tensor product can be naturally interpreted as a linear transformation on a tensor product.

Specifically, there exists is a natural linear map

 

determined by

 

This map is a linear embedding, which is to say that its kernel is zero. If all spaces in question are finite-dimensional, this map is a actually a linear isomorphism.

There are several special cases of this embedding which can be obtained by taking one or more of the spaces to be the ground field K. Specifically, one has natural embeddings

 

and

 

Kronecker product

edit

Main article: Kronecker product.

With matrices this operation is usually called the Kronecker product, a term used to make clear that the result has a particular block structure imposed upon it, in which each element of the first matrix is replaced by the second matrix, scaled by that element. For matrices   and   this is:

 

Relation with the dual space

edit

Note that the space   (the dual space of   containing all linear functionals on that space) corresponds naturally to the space of all bilinear functionals on  . In other words, every bilinear functional is a functional on the tensor product, and vice versa. There is a natural isomorphism between   and  . So, the tensors of the linear functionals are bilinear functionals. This gives us a new way to look at the space of bilinear functionals, as a tensor product itself.

Tensor product of multilinear maps

edit

Given multilinear maps   and   their tensor product is the multilinear function

 

Computer programming

edit

Tensors in computer programming are almost always represented as n-dimensional arrays of numbers, where n is the rank of the tensor. The tensor product is an operation which takes a rank-n tensor and a rank-m tensor and computes the resulting rank-(n+m) tensor.

A prototypical algorithm for doing this is given below in the C programming language. Here a is a rank-two tensor and b is a rank-one tensor, with indices i, j, and k, respectively.

  for( int i = 0; i < i_dim; i++)
     for( int j = 0; j < j_dim; j++)
        for( int k = 0; k < k_dim; k++)
           result[i][j][k] = a[i][j]*b[k];

Many array programming languages may have this pattern built in. For example, in APL the tensor product is expressed as A ∘.× B, while in J the tensor product is the expressed as a */ b. In Mathematica, the tensor product is given by

Outer[Times, a, b] 

However, these kinds of notation are not universally present in all array languages. Some languages may require explicit treatment of indices (for example, Matlab).

Another interesting example of the tensor product comes from SQL. Here the tensor product of a and b can be given by the following code:

select 
    a.i as i,
    a.j as j,
    b.k as k,
    a.value * b.value as value
  from
    a
    outer join b

See also

edit