Rev 26795 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{solve}\title{Solve a System of Equations}\usage{solve(a, b, \dots)\method{solve}{default}(a, b, tol, LINPACK = FALSE, \dots)}\alias{solve}\alias{solve.default}\arguments{\item{a}{a square numeric or complex matrix containing the coefficients ofthe linear system.}\item{b}{a numeric or complex vector or matrix giving the right-handside(s) of the linear system. If missing, \code{b} is taken to bean identity matrix and \code{solve} will return the inverse of \code{a}.}\item{tol}{the tolerance for detecting linear dependencies in thecolumns of \code{a}. If \code{LINPACK} is \code{TRUE} the defaultis \code{1e-7}, otherwise it is \code{.Machine$double.eps}. Futureversions of R may use a tighter tolerance. Not presently used withcomplex matrices \code{a}.}\item{LINPACK}{logical. Should LINPACK be used (for compatibility with\R < 1.7.0)?}\item{\dots}{further arguments passed to or from other methods}}\description{This generic function solves the equation \code{a \%*\% x = b} for \code{x},where \code{b} can be either a vector or a matrix.}\details{As from \R 1.3.0, \code{a} or \code{b} can be complex, inwhich case LAPACK routine \code{ZESV} is used.This uses double complex arithmetic which might not be available on allplatforms.The row and column names of the result are taken from the columnnames of \code{a} and of \code{b} respectively. As from \R 1.7.0if \code{b} is missing the column names of the result are the rownames of \code{a}. No check is made that the column names of \code{a}and the row names of \code{b} are equal.For back-compatibility \code{a} can be a (real) QR decomposition,although \code{\link{qr.solve}} should be called in that case.\code{\link{qr.solve}} can handle non-square systems.}\references{Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)\emph{The New S Language}.Wadsworth \& Brooks/Cole.}\seealso{\code{\link{solve.qr}} for the \code{qr} method,\code{\link{backsolve}}, \code{\link{qr.solve}}.}\examples{hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }h8 <- hilbert(8); h8sh8 <- solve(h8)round(sh8 \%*\% h8, 3)A <- hilbert(4)A[] <- as.complex(A)## might not be supported on all platformstry(solve(A))}\keyword{algebra}