I should mention that $K$ is a positive definite symmetric matrix, and usually dense.

This is not an answer that directly addresses your question, but if you could use eigendecomposition instead of Cholesky decomposition, so that $K=QDQ^\ast$ (where $Q$ is unitary and $D$ is a nonnegative diagonal matrix), then \begin \int_0^\infty f(z) (z K \sigma^2 I)^ u dz &= \int_0^\infty f(z) Q (z D \sigma^2 I)^ Q^\ast u dz.

In general, there is no shortcut other than completely re-factoring the matrix.

For my particular case, I rephrased the problem in scicomp.stackexchange.com/q/10638/733 which I would appreciate you have a look at.

In linear algebra, the Cholesky decomposition or Cholesky factorization is a decomposition of a Hermitian, positive-definite matrix into the product of a lower triangular matrix and its conjugate transpose, which is useful e.g.

Could anyone point me to a library/code allowing me to perform low-rank updates on a Cholesky decomposition in python (numpy)?

Matlab offers this functionality as a function called 'cholupdate'.

A closely related variant of the classical Cholesky decomposition is the LDL decomposition, Some indefinite matrices for which no Cholesky decomposition exists have an LDL decomposition with negative entries in D.

For these reasons, the LDL decomposition may be preferred.

The problem that I have is for each increment of $z$ I have to keep recalculating the Cholesky of $z K \sigma^2I$.

If the Cholesky of $K$ is known is there a method of not continuously doing this for each new value of $z$?

You've said that the matrices are related; are you given a whole mess of matrices  right at the start of the program, or do you update them sequentially?

If it's the former, you may be able to use MPI to get several processors working on the matrices in parallel. I will probably accept it because my question was too general also.

(Ported from MATLAB cholupdate at the Wikipedia page: def cholupdate(R,x,sign): import numpy as np p = np.size(x) x = x.

Tags: , ,