scipy.linalg.lu_factor

scipy.linalg.lu_factor(a, overwrite_a=False, check_finite=True)[源代码]

计算矩阵的旋转LU分解。

分解如下:

A = P L U

其中P是置换矩阵,L是具有单位对角线元素的下三角形,U是上三角形。

参数
a(M,M)类数组

要分解的矩阵

overwrite_a布尔值,可选

是否覆盖A中的数据(可能会提高性能)

check_finite布尔值,可选

是否检查输入矩阵是否仅包含有限个数字。禁用可能会带来性能提升,但如果输入确实包含无穷大或NAN,则可能会导致问题(崩溃、非终止)。

退货
lu(N,N)ndarray

在其上三角形中包含U,在其下三角形中包含L的矩阵。不存储L的单位对角线元素。

piv(n,)ndarray

表示置换矩阵P的枢轴索引:矩阵的第i行与第PIV行互换 [i] 。

参见

lu_solve

利用矩阵的LU分解求解方程组

注意事项

这是对 *GETRF 来自LAPACK的例程。

示例

>>> from scipy.linalg import lu_factor
>>> A = np.array([[2, 5, 8, 7], [5, 2, 2, 8], [7, 5, 6, 6], [5, 4, 4, 8]])
>>> lu, piv = lu_factor(A)
>>> piv
array([2, 2, 3, 3], dtype=int32)

转换LAPACK piv 数组转换为NumPy索引并测试排列

>>> piv_py = [2, 0, 3, 1]
>>> L, U = np.tril(lu, k=-1) + np.eye(4), np.triu(lu)
>>> np.allclose(A[piv_py] - L @ U, np.zeros((4, 4)))
True