Throws a runtime_error
if the matrix is not invertible.
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
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.
See also
linalg_pinv()
computes the pseudoinverse (Moore-Penrose inverse) of matrices
of any shape.
linalg_solve()
computes A$inv() %*% B
with a
numerically stable algorithm.
Other linalg:
linalg_cholesky()
,
linalg_cholesky_ex()
,
linalg_det()
,
linalg_eig()
,
linalg_eigh()
,
linalg_eigvals()
,
linalg_eigvalsh()
,
linalg_householder_product()
,
linalg_inv_ex()
,
linalg_lstsq()
,
linalg_matrix_norm()
,
linalg_matrix_power()
,
linalg_matrix_rank()
,
linalg_multi_dot()
,
linalg_norm()
,
linalg_pinv()
,
linalg_qr()
,
linalg_slogdet()
,
linalg_solve()
,
linalg_solve_triangular()
,
linalg_svd()
,
linalg_svdvals()
,
linalg_tensorinv()
,
linalg_tensorsolve()
,
linalg_vector_norm()
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} ]