IM_LU_DECOMP

Section: C Library Functions (3)
Updated: 18 September 2006
Index Return to Main Contents
 

NAME


 im_lu_decomp, im_lu_solve - Solve SLEs by LU decomposition  

SYNOPSIS

#include <vips/vips.h>

DOUBLEMASK *im_lu_decomp( const DOUBLEMASK *mat, const char *name );

int im_lu_solve( const DOUBLEMASK *lu, double *vec );
 

DESCRIPTION

im_lu_decomp(3) allocates a DOUBLEMASK representing the LU decomposition of the matrix in DOUBLEMASK *mat, and gives it the filename member name.

im_lu_solve(3) solves the system of linear equations (SLE) Ax=b, where matrix A has already been decomposed into LU form in DOUBLEMASK *lu. Input vector b is in *vec and is overwritten with output vector x.

DOUBLEMASK *lu is unaltered by im_matinv(3), and can be used again to solve a different SLE containing matrix A.  

NOTES

The scale and offset members of *mat are ignored. If they are not set to 1.0 and zero respectively, you must first call im_norm_dmask(3).

To understand the decomposition A=LU, see Press et al. (1992). For the exact format used to represent the matrices L and U in *lu, see the acompanying source code.  

ERRORS

If matrix *mat is singular (non-invertible), or close to singular then im_lu_decomp(3) will fail, calling im_error(3).  

RETURN VALUE

im_lu_decomp(3) returns a pointer to the new DOUBLEMASK, or NULL on error.

im_lu_solve(3) always returns zero, unless lu was not returned by im_lu_decomp(3), when it returns -1.  

SEE ALSO

im_create_dmask(3), im_free_dmask(3), im_norm_dmask(3), im_matinv(3)  

REFERENCES

PRESS, W. et al, 1992. Numerical Recipies in C; The Art of Scientific Computing, 2nd ed. Cambridge: Cambridge University Press, pp. 43-50.

[Available online: http://www.library.cornell.edu/nr/bookcpdf.html accessed 2006-09-19]  

COPYRIGHT


Copyright 2006, Tom Vajzovic.  

AUTHOR

Tom Vajzovic