tridiag.h File Reference


Detailed Description

File for solving tridiagonal systems.

Definition in file tridiag.h.

#include <cmath>
#include <cstdlib>
#include <iostream>
#include <o2scl/misc.h>
#include <o2scl/err_hnd.h>

Go to the source code of this file.

Functions

template<class vec_t, class vec2_t>
int solve_tridiag_sym (const vec_t &diag, const vec2_t &offdiag, const vec_t &b, vec_t &x, size_t N)
 Solve a symmetric tridiagonal linear system.
template<class vec_t, class vec2_t>
int solve_tridiag_nonsym (const vec_t &diag, const vec2_t &abovediag, const vec2_t &belowdiag, const vec_t &rhs, vec_t &x, size_t N)
 Solve an asymmetric tridiagonal linear system.
template<class vec_t>
int solve_cyc_tridiag_sym (const vec_t &diag, const vec_t &offdiag, const vec_t &b, vec_t &x, size_t N)
 Solve a symmetric cyclic tridiagonal linear system.
template<class vec_t>
int solve_cyc_tridiag_nonsym (const vec_t &diag, const vec_t &abovediag, const vec_t &belowdiag, const vec_t &rhs, vec_t &x, size_t N)
 Solve an asymmetric cyclic tridiagonal linear system.


Function Documentation

int solve_cyc_tridiag_nonsym ( const vec_t &  diag,
const vec_t &  abovediag,
const vec_t &  belowdiag,
const vec_t &  rhs,
vec_t &  x,
size_t  N 
) [inline]

Solve an asymmetric cyclic tridiagonal linear system.

solve following system w/o the corner elements and then use Sherman-Morrison formula to compensate for them

diag[0] abovediag[0] 0 ..... belowdiag[N-1] belowdiag[0] diag[1] abovediag[1] ..... 0 belowdiag[1] diag[2] 0 0 belowdiag[2] ..... ... ... abovediag[N-1] ...

Definition at line 321 of file tridiag.h.

int solve_cyc_tridiag_sym ( const vec_t &  diag,
const vec_t &  offdiag,
const vec_t &  b,
vec_t &  x,
size_t  N 
) [inline]

Solve a symmetric cyclic tridiagonal linear system.

for description of method see [Engeln-Mullges + Uhlig, p. 96]

diag[0] offdiag[0] 0 ..... offdiag[N-1] offdiag[0] diag[1] offdiag[1] ..... 0 offdiag[1] diag[2] 0 0 offdiag[2] ..... ... ... offdiag[N-1] ...

Definition at line 210 of file tridiag.h.

int solve_tridiag_nonsym ( const vec_t &  diag,
const vec2_t &  abovediag,
const vec2_t &  belowdiag,
const vec_t &  rhs,
vec_t &  x,
size_t  N 
) [inline]

Solve an asymmetric tridiagonal linear system.

plain gauss elimination, only not bothering with the zeroes

diag[0] abovediag[0] 0 ..... belowdiag[0] diag[1] abovediag[1] ..... 0 belowdiag[1] diag[2] 0 0 belowdiag[2] .....

Definition at line 138 of file tridiag.h.

int solve_tridiag_sym ( const vec_t &  diag,
const vec2_t &  offdiag,
const vec_t &  b,
vec_t &  x,
size_t  N 
) [inline]

Solve a symmetric tridiagonal linear system.

For description of method see [Engeln-Mullges + Uhlig, p. 92]

diag[0] offdiag[0] 0 ..... offdiag[0] diag[1] offdiag[1] ..... 0 offdiag[1] diag[2] 0 0 offdiag[2] .....

Definition at line 55 of file tridiag.h.


Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.

Project hosting provided by SourceForge.net Logo, O2scl Sourceforge Project Page