[R] Trace of product of matrices

Martin Maechler maechler at stat.math.ethz.ch
Tue Oct 28 16:18:29 CET 2014


>>>>> Berend Hasselman <bhh at xs4all.nl>
>>>>>     on Tue, 28 Oct 2014 11:38:29 +0100 writes:

    > On 28-10-2014, at 11:05, Martin Maechler <maechler at stat.math.ethz.ch> wrote:

    >> …...
    >> Thank you, Peter, and Spencer.
    >> 
    >> For a few years now, I have had in my TODO file for the Matrix
    >> package:
    >> 
    >> ** TODO tr(A %*% B) {and even  tr(A %*% B %*% C) ...} are also needed
    >> frequently in some computations {conditional normal distr. ...}.
    >> Since this can be done faster than by
    >> sum(diag(A %*% B))  even for traditional matrices, e.g.
    >> sum(A * t(B)) or {even faster for "full" mat}
    >> crossprod(as.vector(A), as.vector(B))


    > Shouldn’t that be  crossprod(as.vector(t(A)),as.vector(B)) or crossprod(as.vector(A),as.vector(t(B))) ?

    > Berend

yes, of course;  thanks for catching that!

Martin


    >> and even more so for, e.g.  <sparse> %*% <dense>
    >> {used in Soeren's 'gR' computations},
    >> we should also provide a generic and methods.
    >> 
    >> ** TODO diag(A %*% B) might look like a "generalization" of tr(A %*% B),
    >> but as the above tricks show, is not really.
    >> Still, it's well worth to provide  diag.prod(A, B):
    >> 
    >> Well, if A %*% B is square,   diag(A %*% B)  ===  colSums(t(A) * B)
    >> and we should probably teach people about that !
    >> 
    >> -----------
    >> 
    >> Are there good suggestions for a sensible function name for
    >> these potential matrix utility function?
    >> 
    >> trprod()
    >> traceprod()
    >> 
    >> diagprod()
    >> ?
    >> 
    >> --
    >> Martin <Maechler at stat.math.ethz.ch>  http://stat.ethz.ch/people/maechler
    >> Seminar für Statistik, ETH Zürich  HG G 16      Rämistrasse 101
    >> CH-8092 Zurich, SWITZERLAND
    >> phone: +41-44-632-3408       fax: ...-1228      <><
    >> 
    >> ______________________________________________
    >> R-help at r-project.org mailing list
    >> https://stat.ethz.ch/mailman/listinfo/r-help
    >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
    >> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list