numlinalg
index
/Users/oyvindry/Documents/workspace/numlinalg/code/numlinalg.py

 
Functions
       
L1U(A, d)
Compute the L1U-factorization of the d-banded matrix A.
Returns a lower triangular matrix L with with ones on the diagonal, and an upper triangular matrix U. 
Note that, for d=1, the algorithm is equivalent to trisolve.
 
A: A matrix
d: The band-width
L1Uv2(A, d)
Compute the L1U-factorization of the d-banded matrix A.
This is more advanced than L1U in the sense that it avoids allocation of new arrays: The result is stored directly in A (i.e. in-place), i.e.
overwriting the previous A. The entries in A and U are at the same places in A, and the diagonal with ones in L is not stored in A.
In order to achieve this, we can't use the function rforwardsolve, as L1U uses it (due to the special form with ones on the diagonal).
 
A: A matrix
d: The band-width
LDL(A, d)
Find the LDL factorization of the hermitian matrix A, using algorithm 3.4
 
A: A hermitian matrix
d: The band-width
bandcholesky(A, d)
Find the Cholesky factorization of the positive definite matrix A, using algorithm 3.13
 
A: A positive definite matrix
d: The band-width
bandsemicholeskyL(A, d)
Find the Cholesky factorization of the positive semidefinite matrix A, using algorithm 3.24 
The input matrix A will be changed by this method
 
A: A positive semidefinite matrix
d: The band-width
cbacksolve(A, b, d)
Solve the system A*x = b for a upper triangular d-banded matrix A, using algorithm 2.10 (column-oriented backward substitution)
The input vector b will be updated with the solution x (i.e. in-place).
 
A: An upper triangular matrix
b: The right hand side
d: The band-width
cforwardsolve(A, b, d)
Solve the system A*x = b for a lower triangular d-banded matrix A, using algorithm 2.9 (column-oriented forward substitution)
The input vector b will be updated with the solution x (i.e. in-place).
 
A: A lower triangular matrix
b: The right hand side
d: The band-width
findsubintervals(t, x)
Use algorithm 1.21 to return an index set for the points in x, saying which intervals they belong to.
 
t: the start points of the intervals
x: The points to find the interval indices for.
housegen(x)
Return u and a in Theorem 4.16, using algorithm 4.17
 
x: The vector to reflect on ae_1
housetriang(A, B)
Return R, C so that R is upper trapezoidal and resulting from a series of Householder transformations to A, and C so that it results from applying the same series of Householder transformations to B.
This is algorithm 4.21
 
A: The matrix to apply Householder transformations to, in order to transform it to upper trapezoidal form.
B: The matrix to apply the same Householder transformations to.
rbacksolve(A, b, d)
Solve the system A*x = b for an upper triangular d-banded matrix A, using algorithm 2.7 (row-oriented backward substitution)
The input vector b will be updated with the solution x (i.e. in-place).
 
A: An upper triangular matrix
b: The right hand side
d: The band-width
rforwardsolve(A, b, d)
Solve the system A*x = b for a lower triangular d-banded matrix A, using algorithm 2.6 (row-oriented forward substitution)
The input vector b will be updated with the solution x (i.e. in-place).
 
A: A lower triangular matrix
b: The right hand side
d: The band-width
rothesstri(A, b)
Solve the system Ax=b where A is in upper Hessenberg form using Givens rotations, using algorithm 4.36
 
A: A matrix in upper Hessenberg form.
b: The right hand side.
splineint(a, b, y, mu1, munp1)
Use algorithm 1.19 to solve the D_2 spline problem.
Returns the left end points of all sub-inetrvals, and a matrix holding all coefficients in all the piecewise cubic polynomials 
(one row for each piecewise polynomial)
 
a: The left end point of the interval
b: The rigth end point of the interval
y: The values at the interpolation points
mu1 and munp1: Initial conditions/moments.
splineval(x, C, X)
Use algorithm 1.22 to compute and return the values of a cubic spline (x, C) at points X. (x, C) can be obtained with the function splineint. 
 
x: The start points of the intervals.
C: A matrix holding all coefficients in all the piecewise cubic polynomials (one row for each piecewise polynomial)
X: The points we want to evaluate for the spline
trifactor(a, d, c)
Compute the entries in the LU-factorization of a tridiagonal matrix A using algorithm 1.8. 
Returns the sequence l on the sub-diagonal of L, and the sequence u on the diagonal of U. 
 
a: The n-1 entries on the sub-diagonal of A
d: The n entries on the diagonal of A
c: The n-1 entries on the super-diagonal of A
trisolve(l, u, c, b)
Compute the solution to a system on the form A*x=b with A a tridiagonal matrix, based on the LU-factorization of A 
as given by the function trifactor (using algorithm 1.9). 
The input vector b will be updated with the solution x (i.e. in-place).
 
l: The entries on the sub-diagonal of L in the LU-factorization of A
u: The entries on the diagonal of U in the LU-factorization of A
c: The entries on the super-diagonal of U in the LU-factorization of A (this equals the entries on the super-diagonal of A)
b: The right hand side