solves the system of linear equations opts[a].x==b and resets b to the result x, where a is the square matrix corresponding to the banded matrix aband.


  • To use TBSV, you first need to load the BLAS Package using Needs["LinearAlgebra`BLAS`"].
  • The following arguments must be given:
  • ulinput stringupper/lower triangular string
    tsinput stringtransposition string
    dginput stringdiagonal ones string
  • input expression
  • number of sub- or super-diagonals
    abandinput expression
  • banded representation of a square matrix a
  • binput/output symbolvector; the symbol value is modified in place
  • The upper/lower triangular string ul may be specified as:
  • "U"the upper triangular part of a is given in aband
    "L"the lower triangular part of a is given in aband
  • The transposition string ts describes the operator opts and may be specified as:
  • "N"no transposition
    "C"conjugate transpose
  • The diagonal ones string dg may be specified as:
  • "U"assume the main diagonal of a contains only ones
    "N"use the actual values of the main diagonal of a
  • In a banded format, the upper or lower part of the matrix a is stored in a rectangular matrix. For the upper triangular part, the main diagonal is the last row, the first super diagonal is the penultimate row with a leading zero, the second super diagonal is the antepenultimate row with two leading zeroes, and so on. For the lower triangular part, the main diagonal appears in the first row, followed by successive subdiagonals with trailing zeros.
  • The number 0k<Length[a] indicates how many of the sub- or super-diagonals are treated as significant. The others are assumed zero.
  • Dimensions of the matrix and vector arguments must be such that the dot product is well defined.


open allclose all

Basic Examples  (1)

Load the BLAS package:

Compute Inverse[a].b and save it in b where ab is the corresponding matrix in banded format:

Compare a direct computation of the inverse:

Scope  (4)

Real matrix and vectors:

Complex matrix and vectors:

Arbitrary-precision matrix and vectors:

Symbolic matrix and vectors:

Properties & Relations  (2)

TBSV["U","N","N",k,ab,b] is equivalent to b=Inverse[a].b:

If dg="U", the diagonal values of a are assumed to be ones:

The diagonal has been effectively replaced by ones:

Possible Issues  (2)

The last argument must be a symbol:

The last argument is must be initialized to a vector: