R: Solve a System of Equations

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`.
`...` | further arguments passed to or from other methods

### 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))

[Package Contents]