By the way, using your notation, do we want the traditional transpose of M, or the conjugate transpose of M (i.e., -1 * M')? Wikipedia seems to suggest that matrix operations on Dual Numbers require care similar to complex matrices. I wonder if this makes the problem more clear (or not)?
On Mon, Jun 2, 2014 at 10:30 PM, Chris Foster <chris...@gmail.com> wrote: > Ah good hint. Apparently a slightly more general version is called > the *-Sylvester Equation > > http://gauss.uc3m.es/web/personal_web/fteran/papers/equation_lama_rev.pdf > > and quite some work has been done, though I haven't time to dig > through the references. The big difference in your case is that L and > M are lower triangular, and L appears in both terms multiplying the > unknown, so there's a lot more structure than usual (which leads to > the fact that forward substitution works). > > ~Chris > > On Tue, Jun 3, 2014 at 1:17 PM, Thomas Covert <thom.cov...@gmail.com> > wrote: > > Thanks for that, Chris. I also worked out a similar derivation - though > I > > wasn't able to prove to myself that the equation B = L*M' + M*L' has a > > unique solution for M. > > > > This feels similar to the Sylvester Equation, but its not quite the > same... > > > > > > On Mon, Jun 2, 2014 at 10:13 PM, Chris Foster <chris...@gmail.com> > wrote: > >> > >> On Tue, Jun 3, 2014 at 4:43 AM, Thomas Covert <thom.cov...@gmail.com> > >> wrote: > >> > I was hoping to find some neat linear algebra trick that would let me > >> > compute a DualNumber cholesky factorization without having to resort > to > >> > non-LAPACK code, but I haven't found it yet. That is, I figured that > I > >> > could compute the cholesky factorization of the real part of the > matrix > >> > and > >> > then separately compute a matrix which represented the DualNumber > part. > >> > However, I've not yet found a math text describing such a beast. > >> > >> I'm not sure exactly where you'd look this up, but here's a go at > >> setting the problem up. > >> > >> Suppose you're trying to factorise > >> > >> (A + e*B) = (L + e*M) * (L + e*M)' > >> > >> where e is the dual imaginary unit. That is, (L + e*M) is the desired > >> Cholesky > >> factor of (A + e*B). Expanding this out using e*e = 0 leads to > >> > >> A = L*L' > >> B = L*M' + M*L' > >> > >> So you can compute the real part L of the Cholesky decomposition exactly > >> as > >> usual. Given that you now have L, you want the lower triangular matrix > M. > >> Because L and M are lower triangular that's actually quite easy: matrix > >> elements of M can be computed from the top left to bottom right in a > >> process > >> that basically looks like forward substitution. > >> > >> You probably want this second step to use LAPACK though, since it's > still > >> O(N^3)... Ideally the system of equations > >> > >> B = L*M' + M*L' > >> > >> actually has a name and there's a standard way to solve it. I don't > know > >> it > >> though and a quick search failed to enlighten me. Perhaps someone else > >> can > >> give us a hint? > >> > >> ~Chris > > > > >