| 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
## Default S3 method:
solve(a, b, tol = 1e-7, LINPACK = FALSE, ...)
Arguments
a |
a square numeric or complex matrix containing the coefficients of the linear system. |
b |
a numeric or complex vector or matrix giving the right-hand
side(s) of the linear system. If missing, |
tol |
the tolerance for detecting linear dependencies in the
columns of |
LINPACK |
logical. Should LINPACK be used (for compatibility with R < 1.7.0)? |
... |
further arguments passed to or from other methods |
Details
As from R 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 be available on all
platforms.
The row and column names of the result are taken from the column
names of a and of b respectively. As from R 1.7.0
if b is missing the column names of the result are the row
names of a. No check is made that the column names of a
and the row names of b are equal.
For back-compatibility a can be a (real) QR decomposition,
although qr.solve should be called in that case.
qr.solve can handle non-square systems.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth \& Brooks/Cole.
See Also
solve.qr for the qr method,
backsolve, qr.solve.
Examples
hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }
h8 <- hilbert(8); h8
sh8 <- solve(h8)
round(sh8 %*% h8, 3)
A <- hilbert(4)
A[] <- as.complex(A)
## might not be supported on all platforms
try(solve(A))