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