# Tensor times vector calculation

### Description

Functionality adapted from the MATLAB tensor toolbox (http://www.sandia.gov/~tgkolda/TensorToolbox/index-2.6.html).

### Usage

1 |

### Arguments

`A` |
An array. |

`v` |
A list of the same length as |

`dim` |
A vector specifying the dimensions for the multiplication. |

### Details

Let `A`

be a tensor with dimensions *d_1 x d_2 x … x d_p* and let `v`

be a vector of length
*d_i*. Then the tensor-vector-product along the *i*-th dimension is
defined as

* B[j_1, …
,j_{i-1},j_{i+1},…,j_d] = ∑ A[j_1, …, j_{i-1}, i, j_{i+1},
…, j_d] v[i].*

It can hence be seen as a generalization of the matrix-vector product.

The tensor-vector-product along several dimensions between a tensor `A`

and multiple vectors `v_1,...,v_k`

(*k ≤ p*) is defined as a
series of consecutive tensor-vector-product along the different dimensions.
For consistency, the multiplications are calculated from the dimension of the
highest order to the lowest.

### Value

An array, the result of the multiplication.

### References

B. W. Bader and T. G. Kolda. Algorithm 862: MATLAB tensor classes for fast algorithm prototyping, ACM Transactions on Mathematical Software 32(4):635-653, December 2006.

### See Also

`UMPCA`

### Examples

1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ```
# create a three-mode tensor
a1 <- seq(0,1, length.out = 10)
a2 <- seq(-1,1, length.out = 20)
a3 <- seq(-pi, pi, length.out = 15)
A <-a1 %o% a2 %o% a3
dim(A)
# multiply along different dimensions
dim(ttv(A = A, v = list(rnorm(10)), dim = 1))
dim(ttv(A = A, v = list(rnorm(20)), dim = 2))
dim(ttv(A = A, v = list(rnorm(15)), dim = 3))
# multiply along more than one dimension
length(ttv(A = A, v = list(rnorm(10), rnorm(15)), dim = c(1,3)))
``` |