| GNU Scientific Library Reference Manual - Third Edition (v1.12) by M. Galassi, J. Davies, J. Theiler, B. Gough, G. Jungman, P. Alken, M. Booth, F. Rossi Paperback (6"x9"), 592 pages, 60 figures ISBN 0954612078 RRP £24.95 ($39.95) |
13.13 Tridiagonal Systems
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 )
| ISBN 0954612078 | GNU Scientific Library Reference Manual - Third Edition (v1.12) | See the print edition |