inv#
- scipy.linalg.inv(a, overwrite_a=False, check_finite=True, assume_a=None, lower=False)[source]#
Compute the inverse of a matrix.
If the data matrix is known to be a particular type then supplying the corresponding string to
assume_akey chooses the dedicated solver. The available options aregeneral
‘general’ (or ‘gen’)
upper triangular
‘upper triangular’
lower triangular
‘lower triangular’
symmetric positive definite
‘pos’
For the ‘pos’ option, only the triangle of the input matrix specified in the lower argument is used, and the other triangle is not referenced.
Array argument(s) of this function may have additional “batch” dimensions prepended to the core shape. In this case, the array is treated as a batch of lower-dimensional slices; see Batched Linear Operations for details.
- Parameters:
- aarray_like, shape (…, M, M)
Square matrix (or a batch of matrices) to be inverted.
- overwrite_abool, optional
Discard data in a (may improve performance). Default is False.
- check_finitebool, 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.
- assume_astr, optional
Valid entries are described above. If omitted or
None, checks are performed to identify structure so the appropriate solver can be called.- lowerbool, optional
Ignored unless assume_a is one of ‘sym’, ‘her’, or ‘pos’. If True, the calculation uses only the data in the lower triangle of a; entries above the diagonal are ignored. If False (default), the calculation uses only the data in the upper triangle of a; entries below the diagonal are ignored.
- Returns:
- ainvndarray
Inverse of the matrix a.
- Raises:
- LinAlgError
If a is singular.
- ValueError
If a is not square, or not 2D.
Notes
The input array
amay represent a single matrix or a collection (a.k.a. a “batch”) of square matrices. For example, ifa.shape == (4, 3, 2, 2), it is interpreted as a(4, 3)-shaped batch of \(2\times 2\) matrices.This routine checks the condition number of the a matrix and emits a
LinAlgWarningfor ill-conditioned inputs.Examples
>>> import numpy as np >>> from scipy import linalg >>> a = np.array([[1., 2.], [3., 4.]]) >>> linalg.inv(a) array([[-2. , 1. ], [ 1.5, -0.5]]) >>> np.dot(a, linalg.inv(a)) array([[ 1., 0.], [ 0., 1.]])