Skip to contents

Throws a runtime_error if the matrix is not invertible.

Usage

linalg_inv(A)

Arguments

A

(Tensor): tensor of shape (*, n, n) where * is zero or more batch dimensions consisting of invertible matrices.

Details

Letting K be R or C, for a matrix A K^n n, its inverse matrix A^-1 K^n n (if it exists) is defined as

A1A=AA1=In A^{-1}A = AA^{-1} = \mathrm{I}_n where I_n is the n-dimensional identity matrix.

The inverse matrix exists if and only if A is invertible. In this case, the inverse is unique. Supports input of float, double, cfloat and cdouble dtypes. Also supports batches of matrices, and if A is a batch of matrices then the output has the same batch dimensions.

Consider using linalg_solve() if possible for multiplying a matrix on the left by the inverse, as linalg_solve(A, B) == A$inv() %*% B It is always prefered to use linalg_solve() when possible, as it is faster and more numerically stable than computing the inverse explicitly.

Examples

if (torch_is_installed()) {
A <- torch_randn(4, 4)
linalg_inv(A)
}
#> torch_tensor
#> -0.2312 -0.7295 -0.1168 -0.8399
#> -0.3578  0.2195  0.5738  0.0203
#>  0.6391  0.8412  0.2621 -0.7401
#> -0.1649  0.0259 -0.4296 -0.0122
#> [ CPUFloatType{4,4} ]