flopscope.numpy.linalg.tensorsolve
fnp.linalg.tensorsolve(a, b, axes=None)[flopscope source][numpy source]
Solve the tensor equation ``a x = b`` for x.
Adapted from NumPy docs np.linalg.tensorsolve
Tensor solve. Cost: $n^3$ after reshape (delegates to solve).
Solve the tensor equation a x = b for x.
It is assumed that all indices of x are summed over in the product,
together with the rightmost indices of a, as is done in, for example,
tensordot(a, x, axes=x.ndim).
Parameters
- a:array_like
Coefficient tensor, of shape
b.shape + Q.Q, a tuple, equals the shape of that sub-tensor ofaconsisting of the appropriate number of its rightmost indices, and must be such thatprod(Q) == prod(b.shape)(in which senseais said to be 'square').- b:array_like
Right-hand tensor, which can be of any shape.
- axes:tuple of ints, optional
Axes in
ato reorder to the right, before inversion. If None (default), no reordering is done.
Returns
- x:ndarray, shape Q
Raises
- :LinAlgError
If
ais singular or not 'square' (in the above sense).
See also
Examples
>>> import flopscope.numpy as fnp
>>> a = flops.eye(2*3*4)
>>> a.shape = (2*3, 4, 2, 3, 4)
>>> rng = flops.random.default_rng()
>>> b = rng.normal(size=(2*3, 4))
>>> x = flops.linalg.tensorsolve(a, b)
>>> x.shape
(2, 3, 4)
>>> flops.allclose(flops.tensordot(a, x, axes=3), b)
True