re [R] matrix^(-1/2) re the discussion in November on this thread. I don't know about expm but the problem must be equivalent to solve(B^(1/2)) and a solution will exist iff B is invertible and has a square root A with A%*%A = B. For 2x2 matrices necessary and sufficient conditions for B to have a square root are that either B = diag(0,2) or B%*%B != diag(0,2). This follows from the fact that B%*%B - t(B)*B + det(B) = 0 and A%*%A - t(A)*A + det(A) = 0. Many non-symmetric B satisfy B%*%B != diag(0,2) and many of them are invertible. e.g. all the rotations.
If expm has a function, perhaps Exp, which exponentiates matrices using matrix multiplication, then if B = Exp(C), B^(-1/2) = Exp(-C/2) would be a solution. There is an open neighbourhood of the identity matrix in which B = Exp(C) must hold. Since t(B) = Exp(t(C)), such B will not in general be symmetric. If N satisfies N%*%N=0, then B = I+N where I is the identity matrix will have B^(-1/2) = 1-N/2. Such B are not symmetric as N cannot be symmetric (for non-zero N). So, for B^(-1/2) to exist, B must be invertible but need not be symmetric. hope that helps Greg ______________________________________________ R-help@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.