One can also use "crossprod" AND use "solve" to actually "solve" the system of linear equations rather than just get the inverse, which is later multiplied by t(BA)%*%D. However, the difference seems very small:

> set.seed(1)
> n <- 500
> A <- array(rnorm(n^2), dim=c(n,n))
> B <- array(rnorm(n^2), dim=c(n,n))
> C. <- array(rnorm(n^2), dim=c(n,n))
> D <- array(rnorm(n^2), dim=c(n,n))
>
> BA <- B%*%A
>
> start.time <- proc.time()
> A1 <- A%*%solve(t(BA)%*%BA+C.)%*%BA%*%D
> proc.time()-start.time
[1] 4.75 0.03 5.13   NA   NA
>
> start.time <- proc.time()
> A2 <- A%*%solve(crossprod(BA)+C., crossprod(t(BA), D))
> proc.time()-start.time
[1] 4.19 0.01 4.49   NA   NA
> all.equal(A1, A2)
[1] TRUE

This was in R 1.8.1 under Windows 2000 on an IBM Thinkpad T30 with a Mobile Intel Pentium 4-M, 1.8Ghz, 1Gbyte RAM. The same script under S-Plus 6.2 produced the following elapsed times:

[1] 3.325 0.121 3.815 0.000 0.000

[1] 2.934 0.070 3.355 0.000 0.000

Thus, roughly, using "crossprod" plus "solving with solve" gave a 10% speed improvement and S-Plus 6.2 gave a 25% speed improvement in this one small benchmark. Using smaller matrices did not show as big a difference just because the time was too short to measure accurately, I think.

Enough trivia for now. Best Wishes,
spencer graves


(Ted Harding) wrote:

On 16-Feb-04 Peter Dalgaard wrote:


(Ted Harding) <[EMAIL PROTECTED]> writes:



Sorry! Missed a trick here:

   At <- t(A)
   Bt <- t(B)
   E  <- B%*%A
   Et <- t(E)
   A%*%solve(Et%*%E + C)%*%Et%*%D

(saves 2 multiplications at the relatively cheap cost of 1 transpose)


Well, you might consider getting rid of the first two transposes since
you're not actually using them for anything....



Touch� ... ! Ted.


-------------------------------------------------------------------- E-Mail: (Ted Harding) <[EMAIL PROTECTED]> Fax-to-email: +44 (0)870 167 1972 Date: 16-Feb-04 Time: 23:41:57 ------------------------------ XFMail ------------------------------

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html



______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to