mindspore.scipy.linalg.lu_factor
- mindspore.scipy.linalg.lu_factor(a, overwrite_a=False, check_finite=True)[source]
Compute pivoted LU decomposition of a square matrix, and its outputs can be directly used as the inputs of lu_solve. The decomposition is:
\[a = p l u\]where \(p\) is a permutation matrix, \(l\) lower triangular with unit diagonal elements, and \(u\) upper triangular.
Note
lu_factor is not supported on Windows platform yet.
Only float32, float64, int32, int64 are supported Tensor dtypes. If Tensor with dtype int32 or int64 is passed, it will be cast to
mstype.float64
.
- Parameters
a (Tensor) – square matrix of \((M, M)\) to decompose. Note that if the input tensor is not a float, then it will be cast to :class:’mstype.float32’.
overwrite_a (bool, optional) – Whether to overwrite data in \(a\) (may increase performance). Default:
False
.check_finite (bool, optional) – Whether to check that the input matrix contains only finite numbers. Disabling may give a performance gain, but may result in problems (crashes, non-termination) if the inputs do contain infinities or NaNs. Default:
True
.
- Returns
Tensor, a square matrix of \((N, N)\) containing U in its upper triangle, and L in its lower triangle. The unit diagonal elements of L are not stored.
Tensor, \((N,)\) pivot indices representing the permutation matrix P: the i-th element value j in the indices indicates that row i of matrix was interchanged with row j.
- Raises
ValueError – If \(a\) is not square.
- Supported Platforms:
GPU
CPU
Examples
>>> import numpy as onp >>> from mindspore import Tensor >>> from mindspore.scipy.linalg import lu_factor >>> a = Tensor(onp.array([[2, 5, 8, 7], [5, 2, 2, 8], [7, 5, 6, 6], [5, 4, 4, 8]]).astype(onp.float64)) >>> lu, piv = lu_factor(a) >>> print(lu) [[ 7. 5. 6. 6. ] [ 0.28571429 3.57142857 6.28571429 5.28571429] [ 0.71428571 0.12 -1.04 3.08 ] [ 0.71428571 -0.44 -0.46153846 7.46153846]] >>> print(piv) [2 2 3 3]