backsolve                package:base                R Documentation

Solve an Upper or Lower Triangular System

Description:

     Solves a system of linear equations where the coefficient matrix
     is upper or lower triangular.

Usage:

        backsolve(r, x, k= ncol(r), upper.tri = TRUE, transpose = FALSE)
     forwardsolve(l, x, k= ncol(l), upper.tri = FALSE, transpose = FALSE)

Arguments:

     r,l: an upper (or lower) triangular matrix giving the coefficients
          for the system to be solved.  Values below (above) the
          diagonal are ignored.

       x: a matrix whose columns give ``right-hand sides'' for the
          equations.

       k: The number of columns of `r' and rows of `x' to use.

upper.tri: logical; if `TRUE' (default), the upper triangular part of
          `r' is used.  Otherwise, the lower one.

transpose: logical; if `TRUE', solve r' * y = x for y, i.e., `t(r) %*%
          y == x'.

Value:

     The solution of the triangular system.  The result will be a
     vector if `x' is a vector and a matrix if `x' is a matrix.

References:

     Dongarra, J. J., Bunch,J. R.,  Moler, C. B. and  Stewart, G. W.
     (1978) LINPACK Users Guide.  Philadelphia: SIAM Publications.

See Also:

     `chol', `qr', `solve'.

Examples:

     ## upper triangular matrix `r':
     r <- rbind(c(1,2,3),
                c(0,1,1),
                c(0,0,2))
     ( y <- backsolve(r, x <- c(8,4,2)) ) # -1 3 1
     r %*% y # == x = (8,4,2)
     ( y2 <- backsolve(r, x, transpose = TRUE)) # 8 -12 -5
     all(t(r) %*% y2 == x)# exactly on Linux (Pentium)
     all(y  == backsolve(t(r), x, upper = FALSE, transpose = TRUE))
     all(y2 == backsolve(t(r), x, upper = FALSE, transpose = FALSE))

