The conj in DualNumbers is a noop to avoid the problem with ctranspose.
2014-06-03 10:07 GMT+02:00 Chris Foster <[email protected]>: > I was imagining that ' is the traditional transpose, and I think > that's the right thing - I'm thinking of a dual number as a real > number plus a *real* infinitesimal. Which Wikipedia page are you > reading which makes you worried? I think the stuff we're doing here > is unrelated to the 2x2 matrix representation of dual numbers, which I > suspect isn't used in actual numerical work. > > On Tue, Jun 3, 2014 at 1:36 PM, Thomas Covert <[email protected]> > wrote: > > 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 <[email protected]> > 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 <[email protected]> > >> 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 <[email protected]> > >> > wrote: > >> >> > >> >> On Tue, Jun 3, 2014 at 4:43 AM, Thomas Covert <[email protected] > > > >> >> 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 > >> > > >> > > > > > > -- Med venlig hilsen Andreas Noack Jensen
