bnaul / choldate

Somewhat fast updating and downdating of Cholesky factors in Python

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

choldate

Somewhat fast updating and downdating of Cholesky factors in Python

##installation

1. Download or clone the github repository, e.g.
    >git clone git://github.com/jcrudy/choldate.git
    
2. Run setup.py install
    >cd choldate
    >python setup.py install
    
3. I am new to packaging Python modules.  If it doesn't work on your system, get in touch and I'll try to help you.

##usage

from choldate import cholupdate, choldowndate
import numpy

#Create a random positive definite matrix, V
numpy.random.seed(1)
X = numpy.random.normal(size=(100,10))
V = numpy.dot(X.transpose(),X)

#Calculate the upper Cholesky factor, R
R = numpy.linalg.cholesky(V).transpose()

#Create a random update vector, u
u = numpy.random.normal(size=R.shape[0])

#Calculate the updated positive definite matrix, V1, and its Cholesky factor, R1
V1 = V + numpy.outer(u,u)
R1 = numpy.linalg.cholesky(V1).transpose()

#The following is equivalent to the above
R1_ = R.copy()
cholupdate(R1_,u.copy())
assert(numpy.all((R1 - R1_)**2 < 1e-16))

#And downdating is the inverse of updating
R_ = R1.copy()
choldowndate(R_,u.copy())
assert(numpy.all((R - R_)**2 < 1e-16))  

About

Somewhat fast updating and downdating of Cholesky factors in Python

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Python 100.0%