Next: Triangular Systems, Previous: Householder solver for linear systems, Up: Linear Algebra [Index]

The functions described in this section efficiently solve symmetric,
non-symmetric and cyclic tridiagonal systems with minimal storage.
Note that the current implementations of these functions use a variant
of Cholesky decomposition, so the tridiagonal matrix must be positive
definite. For non-positive definite matrices, the functions return
the error code `GSL_ESING`

.

- Function:
*int***gsl_linalg_solve_tridiag***(const gsl_vector **`diag`, const gsl_vector *`e`, const gsl_vector *`f`, const gsl_vector *`b`, gsl_vector *`x`) This function solves the general

*N*-by-*N*system*A x = b*where`A`is tridiagonal (*N >= 2*). The super-diagonal and sub-diagonal vectors`e`and`f`must be one element shorter than the diagonal vector`diag`. The form of`A`for the 4-by-4 case is shown below,A = ( d_0 e_0 0 0 ) ( f_0 d_1 e_1 0 ) ( 0 f_1 d_2 e_2 ) ( 0 0 f_2 d_3 )

- Function:
*int***gsl_linalg_solve_symm_tridiag***(const gsl_vector **`diag`, const gsl_vector *`e`, const gsl_vector *`b`, gsl_vector *`x`) This function solves the general

*N*-by-*N*system*A x = b*where`A`is symmetric tridiagonal (*N >= 2*). The off-diagonal vector`e`must be one element shorter than the diagonal vector`diag`. The form of`A`for the 4-by-4 case is shown below,A = ( d_0 e_0 0 0 ) ( e_0 d_1 e_1 0 ) ( 0 e_1 d_2 e_2 ) ( 0 0 e_2 d_3 )

- Function:
*int***gsl_linalg_solve_cyc_tridiag***(const gsl_vector **`diag`, const gsl_vector *`e`, const gsl_vector *`f`, const gsl_vector *`b`, gsl_vector *`x`) This function solves the general

*N*-by-*N*system*A x = b*where`A`is cyclic tridiagonal (*N >= 3*). The cyclic super-diagonal and sub-diagonal vectors`e`and`f`must have the same number of elements as the diagonal vector`diag`. The form of`A`for the 4-by-4 case is shown below,A = ( d_0 e_0 0 f_3 ) ( f_0 d_1 e_1 0 ) ( 0 f_1 d_2 e_2 ) ( e_3 0 f_2 d_3 )

- Function:
*int***gsl_linalg_solve_symm_cyc_tridiag***(const gsl_vector **`diag`, const gsl_vector *`e`, const gsl_vector *`b`, gsl_vector *`x`) This function solves the general

*N*-by-*N*system*A x = b*where`A`is symmetric cyclic tridiagonal (*N >= 3*). The cyclic off-diagonal vector`e`must have the same number of elements as the diagonal vector`diag`. The form of`A`for the 4-by-4 case is shown below,A = ( d_0 e_0 0 e_3 ) ( e_0 d_1 e_1 0 ) ( 0 e_1 d_2 e_2 ) ( e_3 0 e_2 d_3 )