solve {base}R Documentation

Solve a System of Equations

Description

This generic function solves the equation a %*% x = b for x, where b can be either a vector or a matrix.

Usage

solve(a, b, tol = 1e-7)

Arguments

a a numeric matrix containing the coefficients of the linear system.
b a numeric vector or matrix giving the right-hand side(s) of the linear system. If omitted, b is taken to be an identity matrix and solve will return the inverse of a.
tol the tolerance for detecting linear dependencies in the columns of a.

Details

As from R version 1.3.0, a or b can be complex, in which case LAPACK routine ZESV is used. This uses double complex arithmetic which might not beavailable on all platforms.

See Also

backsolve, qr.solve.

Examples

hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }
h8 <- hilbert(8); h8
solve(h8) # gives error: `singular'
sh8 <- solve(h8, tol = 1e-10)
round(sh8 %*% h8, 3)

A <- hilbert(4)
A[] <- as.complex(A)
## might not be supported on all platforms
try(solve(A))