tr {gRc} | R Documentation |
Calculate trace of various matrix products.
trA(A) trAW(A,W) trAWB(A,W,B) trAWBW(A,W,B) trAWBV(A,W,B,V)
A,B |
Square matrices represented as matrices or lists (see examples below). |
W,V |
Square matrices |
A number
Søren Højsgaard, sorenh@agrsci.dk
d <- 5 W <- matrix(rnorm(d*d),nr=d,nc=d); V <- W <- W+t(W) ## Turn list into matrix ## tomat <- function(x){ ans <- do.call("rbind", x) storage.mode(ans)<-"double" return(ans) } A1 <- tomat(list(c(1,2),c(1,3))) A2 <- tomat(list(1,3,5)) ## Just for checking the calculations ## symMat <- function(A,d){ ans <- matrix(0,nr=d,nc=d) for (i in 1:length(A)){ e <- A[[i]] if (length(e)==1){ ans[e,e] <- 1 } else { ans[e[1],e[2]] <- ans[e[2],e[1]] <- 1 } } return(ans) } trAW(A1, W) #sum(diag(symMat(A1,d=d) trAW(A2, W) #sum(diag(symMat(A2,d=d) trAWB(A1, W, A2) #sum(diag(symMat(A1,d=d) trAWBV(A1, W, A2, V) #sum(diag(symMat(A1,d=d)