numpy.linalg.tensorsolve#

linalg.tensorsolve(a, b, оси=None)[источник]#

Решить тензорное уравнение a x = b для x.

Предполагается, что все индексы x суммируются в произведении, вместе с самыми правыми индексами a, как это делается, например, в tensordot(a, x, axes=x.ndim).

Параметры:
aarray_like

Тензор коэффициентов, формы b.shape + Q. Q, кортеж, равен форме того подтензора a состоящий из соответствующего количества его крайних правых индексов, и должен быть таким, чтобы prod(Q) == prod(b.shape) (в каком смысле a называется 'квадратной').

barray_like

Правый тензор, который может быть любой формы.

осикортеж целых чисел, необязательный

Оси в a для переупорядочивания вправо перед инверсией. Если None (по умолчанию), переупорядочивание не выполняется.

Возвращает:
xndarray, форма Q
Вызывает:
LinAlgError

Если a является сингулярным или не «квадратным» (в указанном выше смысле).

Смотрите также

numpy.tensordot, tensorinv, numpy.einsum

Примеры

>>> import numpy as np
>>> a = np.eye(2*3*4).reshape((2*3, 4, 2, 3, 4))
>>> rng = np.random.default_rng()
>>> b = rng.normal(size=(2*3, 4))
>>> x = np.linalg.tensorsolve(a, b)
>>> x.shape
(2, 3, 4)
>>> np.allclose(np.tensordot(a, x, axes=3), b)
True