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) - 上面公式的列向量 b 。 b 的shape为 \((*, m, k)\),其中 \(*\) 是batch的维度, 数据类型是float32、float16。
LU_data (Tensor) - LU分解的结果,上面公式中的 A。shape为 \((*, m, m)\) ,其中 \(*\) 是batch的维度。 LU分解的结果可以被分成上三角矩阵 U 和下三角矩阵 L , 数据类型为 float32、float16。
LU_pivots (Tensor) - LU分解的主元。shape为 \((*, m)\) ,其中 \(*\) 是batch的维度。主元可以被转为变换矩阵P, 数据类型为int32。
- 返回:
Tensor,与 b 和 LU_data 的数据类型相同。
- 异常:
TypeError - b 或 LU_data 的 dtype 不属于以下类型: mstype.float16、mstype.float32。
TypeError - LU_pivots 的 dtype 不属于以下类型: mstype.int32。
TypeError - b , LU_data 或 LU_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 ]]