Rev 3387 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
### Testing positive definite matriceslibrary(Matrix)h9 <- Hilbert(9)stopifnot(c(0,0) == dim(Hilbert(0)),c(9,9) == dim(h9))str(h9)all.equal(c(determinant(h9)$modulus), -96.7369456, tol= 2e-8)stopifnot(0 == length(h9@factors))# nothing yetround(ch9 <- chol(h9), 3) ## round() preserves 'triangular' !str(f9 <- as(chol(h9), "dtrMatrix"))## h9 now has factorizationstopifnot(names(h9@factors) == "Cholesky",all.equal(rcond(h9), 9.0938e-13),all.equal(rcond(f9), 9.1272e-7, tol = 1e-6))# more precision failsstr(h9)# has 'factors'options(digits=4)(cf9 <- crossprod(f9))# looks the same as h9 :stopifnot(all.equal(as.matrix(h9),as.matrix(cf9), tol= 1e-15))h9. <- round(h9, 2)h9.p <- as(h9., "dppMatrix")h4 <- h9.[1:4, 1:4] # this and the nexth9.[1,1] <- 10 # had failed in 0.995-14if(FALSE) # FIXME: Error in insertMethod(methods, sig, args, def, TRUE) :...h9.p. <- as(h9., "dppMatrix")h9.p[1,1] <- 10 # failed in 0.995-14stopifnot(is(h9., "symmetricMatrix"),is(h9.p, "symmetricMatrix"),is(h4, "symmetricMatrix"))h9.p[1,2] <- 99 #-> becomes "dgeMatrix"str(hp9 <- as(h9, "dppMatrix"))# packedstopifnot(is(thp9 <- t(hp9), "dppMatrix"))hs <- as(hp9, "dspMatrix")hs@x <- 1/hp9@x # is not pos.def. anymorevalidObject(hs)stopifnot(diag(hs) == seq(1, by = 2, length = 9))s9 <- solve(hp9, seq(nrow(hp9)))signif(t(s9)/10000, 4)# only rounded numbers are platform-independent(I9 <- hp9 %*% s9)m9 <- matrix(1:9, dimnames = list(NULL,NULL))stopifnot(all.equal(m9, as.matrix(I9), tol = 2e-9))cat('Time elapsed: ', proc.time(),'\n') # for ``statistical reasons''