[ODE] Faster ODE

Henri Hakl henri at cs.sun.ac.za
Thu Nov 21 11:53:01 2002


hmmm... no website springs to mind, but you can probably find one.

The basic algorithm for factorizing A into LDL' runs as follows:

initialize L and D to zero matrices

for i = 1 to n do
    for j = 1 to i - 1 do Vj = LijDjj
    Dii = Aii - SUM(from j = 1 to i - 1): LijVj
    for j = i + 1 to n do Lji = (Aji - SUM(from k = 1 to i - 1)LjkVk) / Dii

This creates matrices L and D such that:

A = L D L'

holds.

ODE uses a similar approach, it still has the same big-O of n^3, but is
still faster then the vanilla version from above.

The original ODE version is in "fastldlt.c" of the ODE source; I've
maintained the algorithm but modified the code executing it in
"fastldlt_henri.c" (available at:
http://www.cs.sun.ac.za/~henri/fastldlt_henri.c) in theory the replacement
should be faster then the original. I cannot be sure until somebody verifies
that it is correct and indeed faster. In ODE the "A" matrix is infact the
Jacobian matrix that contains the current-step world constraint details.

hope this helps to start off :)
  Henri


>Hi,
>
>The mathematics behind what you're talking about
>sounds really cool but over my head.
>
>Do you know of any resource (web page or book) that
>provides a background on LDLT, Lower Diagonal Lower
>Transposed?
>
>thanks,
>
>john