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.4063  0.0714 -0.2712 -0.5860
#> -0.3132 -0.3444 -0.2430  1.0076
#> -0.1883 -0.3037  0.2002  1.1562
#> -0.3757  0.3373  0.1055  0.9658
#> [ CPUFloatType{4,4} ]