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
#>  3.8402  6.7315 -9.2205 -21.2161
#>  0.2035  1.3422 -1.5934 -3.8556
#> -0.0105 -0.3134 -0.0132 -0.5598
#>  2.0899  0.6437  0.3838 -2.6318
#> [ CPUFloatType{4,4} ]