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.2071 -0.1495  0.6854  0.3957
#>  0.3289  0.0964 -0.0162  0.7963
#> -2.9904 -1.0591  0.3784 -0.0998
#> -1.1318 -0.8289 -0.1371  0.2642
#> [ CPUFloatType{4,4} ]