Функция linalg.tensorsolve
Функция linalg.tensorsolve решает линейное тензорное уравнение
вида a x = b, где a - многомерный массив,
а b - тензор правой части. Функция возвращает тензор x,
удовлетворяющий уравнению. Первым параметром передаётся массив коэффициентов a,
вторым - массив правой части b. Третьим параметром можно указать оси
для перестановки размерностей.
Синтаксис
np.linalg.tensorsolve(a, b, axes=None)
Параметры функции:
-
a- массив коэффициентов размерности (N, N, ...), представляющий тензорную матрицу -
b- массив правой части, совместимый по размерности сa -
axes- необязательный список осей для перестановки размерностей
Функция возвращает тензор x, который является решением уравнения.
Пример ⁅n="sect"⁆
Решим простейшее тензорное уравнение для двумерного случая:
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([5, 11])
x = np.linalg.tensorsolve(a, b)
print(x)
Результат выполнения кода:
[1. 2.]
Проверим решение:
print(np.dot(a, x))
Результат выполнения кода:
[ 5. 11.]
Пример ⁅n="sect"⁆
Решим тензорное уравнение для трёхмерного случая:
import numpy as np
a = np.array([[[1, 0], [0, 0]], [[0, 0], [0, 1]]])
b = np.array([2, 3])
x = np.linalg.tensorsolve(a, b)
print(x)
Результат выполнения кода:
[2. 3.]
Пример ⁅n="sect"⁆
Используем параметр axes для перестановки осей:
import numpy as np
a = np.arange(8).reshape(2, 2, 2)
b = np.array([1, 2])
x = np.linalg.tensorsolve(a, b, axes=(0, 2, 1))
print(x)
Результат выполнения кода:
[ 0.5 0. ]