This forum has been archived. All content is frozen. Please use KDE Discuss instead.

rank one cholesky update/downdate?

Tags: None
(comma "," separated)
pythonian
Registered Member
Posts
3
Karma
0

rank one cholesky update/downdate?

Fri Feb 13, 2009 7:33 pm
I am new to eigen. It appears that it won't currently do a rank-1 cholesky update/downdate. Is that right? Is that feature planned for the future?
User avatar
bjacob
Registered Member
Posts
658
Karma
3
Right, this is currently an internal step not exposed in the API.

It's useful that you mention it so we know that people are potentially interested in having that in the API. Perhaps for 2.1.

pythonian wrote:I am new to eigen. It appears that it won't currently do a rank-1 cholesky update/downdate. Is that right? Is that feature planned for the future?


Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list!
pythonian
Registered Member
Posts
3
Karma
0
I'm extremely interested. I am using Eigen to do Square-root Unscented Kalman Filtering, and that requires a cholesky downdate. I'd love to see that exposed in 2.1

In the meantime, what is the name of the internal function? I need to get something working soon, and I'd rather hack around a little rather than re-write it myself. :-)

bjacob wrote:It's useful that you mention it so we know that people are potentially interested in having that in the API. Perhaps for 2.1.
User avatar
bjacob
Registered Member
Posts
658
Karma
3
I only know what's a rank 1 cholesky update, but what's a downdate?

I couldn't say where in the code that is, first because I don't know what a downdate is, second because Gael wrote the code, not me :)

If you're interested at looking at the code it's in Eigen/src/Cholesky/.

If what you're looking for isn't in our code, look at the Golub & van loan book here,
http://download.tuxfamily.org/eigen/


Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list!
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS
indeed, there is no such features yet, and I won't have to add it myself. If you want to it then have a look at the LLT class in Eigen/src/Cholesky/LLT.h. I guess you would have to add one function for each case. In case you implement them I'll be pleased to add them upstream.

bjacob wrote:I only know what's a rank 1 cholesky update, but what's a downdate?

I couldn't say where in the code that is, first because I don't know what a downdate is, second because Gael wrote the code, not me :)

If you're interested at looking at the code it's in Eigen/src/Cholesky/.

If what you're looking for isn't in our code, look at the Golub & van loan book here,
http://download.tuxfamily.org/eigen/
maximilian
Registered Member
Posts
1
Karma
0
Hi, I also would like to implement a Square root Unscented Kalman Filter using Eigen. Have you intgrated the rank one Cholesky update in Eigen yet?

@ pythonian: if you implemented the update, would you mind sharing your code with me?
User avatar
bjacob
Registered Member
Posts
658
Karma
3
In the development branch we have rankUpdate() methods in class SelfAdjointView.


Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list!
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS
hm, here we are talking about rank one *Cholesky* update, i.e., assuming you have a Cholesky factorization LL^T of A (A = LL^T), and you want to directly compute L' such that L'L'^T = A + vv^T where v is a vector.

Do do so we have to add a rankUpdate to the LLT class. AFAIR this is usually implemented using Givens rotation (methods to compute and apply Givens rotations are already in Eigen).

Again, contributions are welcome ;)
pythonian
Registered Member
Posts
3
Karma
0
I ended up writing some cholesky update and downdate code, which I have sent to ggael.

Thanks for a great library!
vernal
Registered Member
Posts
37
Karma
0
The interested reader finds additional information about how those cholesky updates (and downdates) work and how they are used in
http://speech.bme.ogi.edu/publications/ps/merwe01a.pdf
and more recently in
http://www.robots.ox.ac.uk/~gk/publications/holmes_etal_icra2008.pdf
andreposch
Registered Member
Posts
1
Karma
0
I could also need the cholesky update function in eigen for use in the SR-UKF. Has the function found it's way into the library since april 2010?
damien_d
Registered Member
Posts
15
Karma
0
I'm going to add my vote for a cholesky update - The (square-root) Unscented Kalman Filter is flavour of the month in the estimation world, especially when one does not have enough grunt on an embedded platform for a Particle Filter.

As an alternative, cholupdate() is implemented in LINPACK as DCHUD (cholesky update) [1] and dchdd (down-date) [2]. Unfortunately, to my knowledge there is no LAPACK equivalent.

Are there LINPACK bindings (I see there are BLAS and LAPACK bindings)? If so, then this might be of use in this instance.



[1] http://www.netlib.org/linpack/dchud.f
[2] http://www.netlib.org/linpack/dchdd.f
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS
Hi,

I've just implemented and committed a cholesky update. It's in the default branch:

LLT<MatType,Lower> llt(A);
X = llt.solve(B);
llt.rankUpdate(v);
X = llt.solve(B);
...
dmbates
Registered Member
Posts
24
Karma
0
OS
damien_d wrote:I'm going to add my vote for a cholesky update - The (square-root) Unscented Kalman Filter is flavour of the month in the estimation world, especially when one does not have enough grunt on an embedded platform for a Particle Filter.

As an alternative, cholupdate() is implemented in LINPACK as DCHUD (cholesky update) [1] and dchdd (down-date) [2]. Unfortunately, to my knowledge there is no LAPACK equivalent.

Are there LINPACK bindings (I see there are BLAS and LAPACK bindings)? If so, then this might be of use in this instance.



[1] http://www.netlib.org/linpack/dchud.f
[2] http://www.netlib.org/linpack/dchdd.f


I've also noticed that Lapack dropped the Cholesky update/downdate as well as the pivoted Cholesky from Linpack. Were there numerical reasons for these omissions?


Bookmarks



Who is online

Registered users: Bing [Bot], Google [Bot], q.ignora, watchstar