tensor-product
computes the product of tensors
Install
With npm do
npm install tensor-product --save
Usage
Signature is (multiplication, leftDim, rightDim, leftData, rightData)
where
- multiplication is a function that defines the scalar operator used
- leftDim and rightDim are arrays that define the tensor indices set
- leftData and rightData are arrays that define the tensor data set
It returns the tensorData array given by the product of tensors defined by leftData and rightData.
Examples
All code in the examples below is intended to be contained into a single file.
Let’s use common real multiplication.
var tensorProduct = require('tensor-product')
function multiplication (a, b) { return a * b }
var product = tensorProduct.bind(null, multiplication)
scalar x scalar
A tensor with one index that has a unique value is like a scalar. This case degenerate to scalar multiplication.
var product_1x1 = product.bind(null, [1], [1])
product_1x1([2], [3]) // [6]
scalar x vector
A tensor with one index which range is greater than one is like a vector. This case is like vector multiplication by a scalar.
var product_1x2 = product.bind(null, [1], [2])
product_1x2([-1], [1, 2]) // [-1, -2]
vector x vector
The tensor product of two vectors is a matrix.
var product_2x2 = product.bind(null, [2], [2])
product_2x2([1, 2], [3, 4]) // [3, 4,
// 6, 8]
matrix x scalar
A tensor with two indices is like a matrix. This case is like matrix multiplication by a scalar.
var product_2_2x1 = product.bind(null, [2, 2], [1])
product_2_2x1( [1, 2, // [2, 4,
3, 4], [2]) // 6, 8]
scalar x matrix
Similar to example above, but commuted.
var product_1x2_2 = product.bind(null, [1], [2, 2])
product_1x2_2([2], [1, 2, // [2, 4,
3, 4]) // 6, 8]
matrix x matrix
A product tensor of two matrices is a tensor with four indices.
var product_2_2x2_2 = product.bind(null, [2, 2], [2, 2])
product_2_2x2_2([2, 2,
2, 2], [1, 2,
3, 4]) // [2, 2,
// 2, 2, 4, 4,
// 4, 4, 6, 6,
// 6, 6, 8, 8,
// 8, 8]