mindspore.ops.lu_solve

mindspore.ops.lu_solve(b, LU_data, LU_pivots)[源代码]

给定LU分解结果 \(A\) 和列向量 \(b\),求解线性方程组的解y \(Ay = b\)

一个矩阵的LU分解可以由 mindspore.scipy.linalg.lu_factor() 得到。

警告

这是一个实验性API,后续可能修改或删除。

参数:
  • b (Tensor) - 上面公式的列向量 bb 的shape为 \((*, m, k)\),其中 \(*\) 是batch的维度, 数据类型是float32、float16。

  • LU_data (Tensor) - LU分解的结果。shape为 \((*, m, m)\) ,其中 \(*\) 是batch的维度。 LU分解的结果可以被分成上三角矩阵 U 和下三角矩阵 L , 数据类型为 float32、float16。

  • LU_pivots (Tensor) - LU分解的主元。shape为 \((*, m)\) ,其中 \(*\) 是batch的维度。主元可以被转为变换矩阵P, 数据类型为int32。

返回:

Tensor,与 bLU_data 的数据类型相同。

异常:
  • TypeError - bLU_data 的 dtype 不属于以下类型: mstype.float16、mstype.float32。

  • TypeError - LU_pivots 的 dtype 不属于以下类型: mstype.int32。

  • TypeError - bLU_dataLU_pivots 不为Tensor。

  • TypeError - b 的 dtype 与 LU_data 的 dtype 不相同。

  • ValueError - LU_pivots 的 batch 维度与 LU_data 的 batch 维度不相等。

  • ValueError - b 的维度小于2,LU_data 的维度小于2,或 LU_pivots 的维度小于1.

支持平台:

Ascend GPU CPU

样例:

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> b = Tensor(np.array([[1], [3], [3]]), mindspore.float32)
>>> LU_data = Tensor(np.array([[2, 1, 1], [0.5, 1, 1.5], [0.5, 0, 2.5]]), mindspore.float32)
>>> LU_pivots = Tensor(np.array([2, 2, 3]), mindspore.int32)
>>> y = ops.lu_solve(b, LU_data, LU_pivots)
>>> print(y)
[[ 1.9000002]
 [-1.4000001]
 [ 0.6      ]]