Throws a runtime_error
if the matrix is not invertible.
Arguments
- A
(Tensor): tensor of shape
(*, n, n)
where*
is zero or more batch dimensions consisting of invertible matrices.
Details
Letting be or , for a matrix , its inverse matrix (if it exists) is defined as
where is the n
-dimensional identity matrix.
The inverse matrix exists if and only if 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_ex()
,
linalg_cholesky()
,
linalg_det()
,
linalg_eigh()
,
linalg_eigvalsh()
,
linalg_eigvals()
,
linalg_eig()
,
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_triangular()
,
linalg_solve()
,
linalg_svdvals()
,
linalg_svd()
,
linalg_tensorinv()
,
linalg_tensorsolve()
,
linalg_vector_norm()
Examples
if (torch_is_installed()) {
A <- torch_randn(4, 4)
linalg_inv(A)
}
#> torch_tensor
#> -0.2507 -0.4972 -0.1922 -0.9363
#> -0.2006 -1.1907 3.5489 0.3504
#> -1.1944 -1.1430 3.6438 -0.8388
#> -0.4556 -0.7984 0.8755 -0.3526
#> [ CPUFloatType{4,4} ]