Crate modcholesky[][src]

Modified Cholesky decompositions

Given a symmetric matrix A which is potentially not positive definite, a modified Cholesky algorithm obtains the Cholesky decomposition LL^T of the positive definite matrix P(A + E)P^T where E is symmetric and >= 0, P is a permutation matrix and L is lower triangular. If A is already positive definite, then E = 0. The perturbation E should be as small as possible for A + E to be “sufficiently positive definite”. This is used in optimization methods where indefinite Hessians can be problematic.

This crate implements the algorithms by Gill, Murray and Wright (GMW81) and Schnabel and Eskow (SE90 and SE99). All algorithms are currently based on ndarray but will also be implemented for nalgebra in the future.

Example

use modcholesky::ModCholeskySE99;

let a = ndarray::arr2(&[[1.0, 1.0, 2.0],
                        [1.0, 1.0, 3.0],
                        [2.0, 3.0, 1.0]]);

// Perform modified Cholesky decomposition
// The `Decomposition` struct holds L, E and P
let decomp = a.mod_cholesky_se99();

println!("L:\n{:?}", decomp.l);
println!("E:\n{:?}", decomp.e);
println!("P:\n{:?}", decomp.p);

TODOs

References

Modules

utils

Utility functions

Structs

Decomposition

Traits

GershgorinCircles

Gershgorin circles

ModCholeskyGMW81

Gill, Murray and Wright (1981)

ModCholeskySE90

Schnabel & Eskow algorithm (1990)

ModCholeskySE99

Schnabel & Eskow algorithm (1999)