Function adas.xxtrisol
def xxtrisol(a, b, c, rhs)-
Solves the tridiagonal systems of linear equations.
Parameters
a:float- vector of sub-diagonal elements.
b:float- vector of diagonal elements.
c:float- vector of super-diagonal elements.
rhs:float- vector of right hand side elements.
Returns
result:float- solution vector.
Notes
The specification of the input is based on the Numerical Recipes (tridag) and IDL (trisol) way of specifying the tri-diagonal matrix.
[b0 c0 0 ... ] [u0] [r0] [a0 b1 c1 0 ... ] [ :] [ :] [ 0 a1 b2 c2 0 ... ] [ ] = [ ] [ ] [ ] [ ] [ ... 0 an-1 bn-1 cn-1] [ :] [ :] [ ... 0 an-1 bn ] [un] [rn]Pure python code.
References
Coding hints from:
http://jean-pierre.moreau.pagesperso-orange.fr/Fortran/tridiag_f90.txt http://userpages.irap.omp.eu/~bdintrans/docs/tridag.py
Version History
- Martin O'Mullane, 29-03-2019
- First version
Example
For the tridiagonal matrix system of equations,
[-4.0 1.0 0.0 0.0] [u0] [ 6.0] [ 2.0 -4.0 1.0 0.0] [u1] = [-8.0] [ 0.0 2.0 -4.0 1.0] [u2] [-5.0] [ 0.0 0.0 2.0 -4.0] [u3] [ 8.0]the exact solution is u = [-1.0, 2.0, 2.0, -1.0]
>>> import adas as adas >>> a=[0.0, 2.0, 2.0, 2.0] >>> b=[-4.0, -4.0, -4.0, -4.0] >>> c=[1.0, 1.0, 1.0, 0.0] >>> rhs=[6.0, -8.0, -5.0, 8.0] >>> adas.xxtrisol(a, b, c, rhs) array([-1., 2., 2., -1.])