void cholsol(double** a, int n, double* p, double* x, double* b)
Solves the set of n linear equations a.x = b, where a is a positive-definite symmetric matrix. a and p are input as the output of the routine choldcmp. Only the lower triangle of a is accessed. b is input as the right-hand side vector. The solution vector is returned in x[0..n-1]. a, and p are not modified and can be left in place for successive calls with different right-hand sides b. b is not modified unless you identify b as x in the calling sequence, which is allowed.
Parameters:
| a | Decompose matrix |
|---|---|
| n | Size of a. |
| p | Diagonal elements of decomposed matrix. |
| x | Solution vector. |
| b | Right hand side vector. |
Returns:
On exit, x contains the solution to the system of equations.
Usage:
double** a;
double* p;
BOOL success;
a = dmatrix(0, 3, 0, 3);
p = dvector(0, 3);
// initialize the a[i][j] elements
success = choldcmp(a, 4, p);
if(success){
double* b;
double* x;
b = dvector(0, 3);
x = dvector(0, 3);
// initialize the b[i] elements
cholsol(a, 4, p, x, b);
free_dvector(b, 0);
free_dvector(x, 0);
}
free_dmatrix(a, 0, 3, 0);
free_dvector(p, 0);
Header:
#include "linalg.h"
See Also:
choldcmp