R: Solution of a tridiagonal system of linear equations

Solve.tridiag {limSolve} | R Documentation

## Solution of a tridiagonal system of linear equations

### Description

Solves the linear system of equations

Ax=B

where A has to be square and tridiagonal, i.e with nonzero elements only on, one band above, and one band below the diagonal.

### Usage

    Solve.tridiag ( diam1, dia, diap1, B=rep(0,times=length(dia)))

### Arguments

`diam1` | a vector with (nonzero) elements below the diagonal.
`dia` | a vector with (nonzero) elements on the diagonal.
`diap1` | a vector with (nonzero) elements above the diagonal.
`B` | Right-hand side of the equations, a vector with length = number of rows of A, or a matrix with number of rows = number of rows of A.

### Details

If the length of the vector `dia` is equal to N, then the lengths of `diam1` and `diap1` should be equal to N-1

### Value

matrix with the solution, `X`, of the tridiagonal system of equations Ax=B. The number of columns of this matrix equals the number of columns of B.

### Author(s)

Karline Soetaert <karline.soetaert@nioz.nl>

### See Also

`Solve.banded`, the function to solve a banded system of linear equations.

`Solve.block`, the function to solve a block diagonal system of linear equations.

`Solve` the generalised inverse solution,

`solve` the R default

### Examples

    # create tridagonal system: bands on diagonal, above and below
    nn   <- 20                          # nr rows and columns of A
    aa   <- runif(nn)
    bb   <- runif(nn)
    cc   <- runif(nn)

    # full matrix
    A                        <- matrix(nrow = nn, ncol = nn, data = 0)
    diag(A)                  <- bb
    A[cbind(1:(nn-1), 2:nn)] <- cc[-nn]
    A[cbind(2:nn, 1:(nn-1))] <- aa[-1]
    B <- runif(nn)

    # solve as full matrix
    solve(A, B)

    # same,  now using tridiagonal algorithm
    as.vector(Solve.tridiag(aa[-1], bb, cc[-nn], B))

    # same, now with 3 different right hand sides
    B3 <- cbind(B, B*2, B*3)
    Solve.tridiag(aa[-1], bb, cc[-nn], B3)

[Package limSolve version 1.5.6 Index]