SCM

SCM Repository

[matrix] View of /pkg/tests/dpoMatrix.Rout.save
ViewVC logotype

View of /pkg/tests/dpoMatrix.Rout.save

Parent Directory Parent Directory | Revision Log Revision Log


Revision 954 - (download) (annotate)
Wed Sep 28 19:34:31 2005 UTC (13 years, 10 months ago) by maechler
File size: 5435 byte(s)
more "Compare" and some "!" methods; expm() for sparse; updated tests
R : Copyright 2005, The R Foundation for Statistical Computing
Version 2.2.0 beta (2005-09-27 r35689)
ISBN 3-900051-07-0

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for a HTML browser interface to help.
Type 'q()' to quit R.

> ### Testing positive definite matrices
> 
> library(Matrix)
> 
> 
> h9 <- Hilbert(9)
> stopifnot(c(0,0) == dim(Hilbert(0)),
+           c(9,9) == dim(h9))
> str(h9)
Formal class 'dpoMatrix' [package "Matrix"] with 6 slots
  ..@ rcond   : num(0) 
  ..@ x       : num [1:81] 1.000 0.500 0.333 0.250 0.200 ...
  ..@ Dim     : int [1:2] 9 9
  ..@ Dimnames:List of 2
  .. ..$ : NULL
  .. ..$ : NULL
  ..@ factors : list()
  ..@ uplo    : chr "U"
> all.equal(determinant(h9)$modulus, -96.7369456, tol= 2e-8)
[1] TRUE
> stopifnot(0 == length(h9@factors))# nothing yet
> round(ch9 <- chol(h9), 3) ## round() preserves 'triangular' !
9 x 9 Matrix of class "Cholesky"
      [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] 
 [1,] 1.000 0.500 0.333 0.250 0.200 0.167 0.143 0.125 0.111
 [2,]     . 0.289 0.289 0.260 0.231 0.206 0.186 0.168 0.154
 [3,]     .     . 0.075 0.112 0.128 0.133 0.133 0.130 0.126
 [4,]     .     .     . 0.019 0.038 0.052 0.063 0.070 0.075
 [5,]     .     .     .     . 0.005 0.012 0.019 0.027 0.033
 [6,]     .     .     .     .     . 0.001 0.004 0.007 0.010
 [7,]     .     .     .     .     .     . 0.000 0.001 0.002
 [8,]     .     .     .     .     .     .     . 0.000 0.000
 [9,]     .     .     .     .     .     .     .     . 0.000
> str(f9 <- as(chol(h9), "dtrMatrix"))
Formal class 'dtrMatrix' [package "Matrix"] with 7 slots
  ..@ rcond   : num(0) 
  ..@ x       : num [1:81] 1 0 0 0 0 0 0 0 0 0.5 ...
  ..@ Dim     : int [1:2] 9 9
  ..@ Dimnames:List of 2
  .. ..$ : NULL
  .. ..$ : NULL
  ..@ factors : list()
  ..@ uplo    : chr "U"
  ..@ diag    : chr "N"
> ## h9 now has factorization
> stopifnot(names(h9@factors) == "Cholesky",
+           all.equal(rcond(h9), 9.0938e-13),
+           all.equal(rcond(f9), 9.1272e-7, tol = 1e-6))# more precision fails
> str(h9)# has 'rcond' and 'factors'
Formal class 'dpoMatrix' [package "Matrix"] with 6 slots
  ..@ rcond   : Named num 9.1e-13
  .. ..- attr(*, "names")= chr "O"
  ..@ x       : num [1:81] 1.000 0.500 0.333 0.250 0.200 ...
  ..@ Dim     : int [1:2] 9 9
  ..@ Dimnames:List of 2
  .. ..$ : NULL
  .. ..$ : NULL
  ..@ factors :List of 1
  .. ..$ Cholesky:Formal class 'Cholesky' [package "Matrix"] with 7 slots
  .. .. .. ..@ rcond   : num(0) 
  .. .. .. ..@ x       : num [1:81] 1 0 0 0 0 0 0 0 0 0.5 ...
  .. .. .. ..@ Dim     : int [1:2] 9 9
  .. .. .. ..@ Dimnames:List of 2
  .. .. .. .. ..$ : NULL
  .. .. .. .. ..$ : NULL
  .. .. .. ..@ factors : list()
  .. .. .. ..@ uplo    : chr "U"
  .. .. .. ..@ diag    : chr "N"
  ..@ uplo    : chr "U"
> options(digits=4)
> (cf9 <- crossprod(f9))# looks the same as  h9 :
9 x 9 Matrix of class "dpoMatrix"
        [,1]   [,2]    [,3]    [,4]    [,5]    [,6]    [,7]    [,8]    [,9]
 [1,] 1.0000 0.5000 0.33333 0.25000 0.20000 0.16667 0.14286 0.12500 0.11111
 [2,] 0.5000 0.3333 0.25000 0.20000 0.16667 0.14286 0.12500 0.11111 0.10000
 [3,] 0.3333 0.2500 0.20000 0.16667 0.14286 0.12500 0.11111 0.10000 0.09091
 [4,] 0.2500 0.2000 0.16667 0.14286 0.12500 0.11111 0.10000 0.09091 0.08333
 [5,] 0.2000 0.1667 0.14286 0.12500 0.11111 0.10000 0.09091 0.08333 0.07692
 [6,] 0.1667 0.1429 0.12500 0.11111 0.10000 0.09091 0.08333 0.07692 0.07143
 [7,] 0.1429 0.1250 0.11111 0.10000 0.09091 0.08333 0.07692 0.07143 0.06667
 [8,] 0.1250 0.1111 0.10000 0.09091 0.08333 0.07692 0.07143 0.06667 0.06250
 [9,] 0.1111 0.1000 0.09091 0.08333 0.07692 0.07143 0.06667 0.06250 0.05882
> stopifnot(all.equal(as.matrix(h9),
+                     as.matrix(cf9), tol= 1e-15))
> 
> str(hp9 <- as(h9, "dppMatrix"))
Formal class 'dppMatrix' [package "Matrix"] with 6 slots
  ..@ rcond   : Named num 9.1e-13
  .. ..- attr(*, "names")= chr "O"
  ..@ x       : num [1:45] 1.000 0.500 0.333 0.333 0.250 ...
  ..@ Dim     : int [1:2] 9 9
  ..@ Dimnames:List of 2
  .. ..$ : NULL
  .. ..$ : NULL
  ..@ factors :List of 1
  .. ..$ pCholesky:Formal class 'pCholesky' [package "Matrix"] with 7 slots
  .. .. .. ..@ rcond   : num(0) 
  .. .. .. ..@ x       : num [1:45] 1.000 0.500 0.289 0.333 0.289 ...
  .. .. .. ..@ Dim     : int [1:2] 9 9
  .. .. .. ..@ Dimnames:List of 2
  .. .. .. .. ..$ : NULL
  .. .. .. .. ..$ : NULL
  .. .. .. ..@ factors : list()
  .. .. .. ..@ uplo    : chr "U"
  .. .. .. ..@ diag    : chr "N"
  ..@ uplo    : chr "U"
> 
> s9 <- solve(hp9, seq(nrow(hp9)))
> signif(t(s9)/10000, 4)# only rounded numbers are platform-independent
1 x 9 Matrix of class "dgeMatrix"
       [,1]  [,2]  [,3]   [,4] [,5]  [,6] [,7]  [,8] [,9]
[1,] 0.0729 -5.76 109.5 -864.9 3468 -7668 9459 -6095 1597
> (I9 <- hp9 %*% s9)
9 x 1 Matrix of class "dgeMatrix"
      [,1]
 [1,]    1
 [2,]    2
 [3,]    3
 [4,]    4
 [5,]    5
 [6,]    6
 [7,]    7
 [8,]    8
 [9,]    9
> stopifnot(all.equal(cbind(1:9), as.matrix(I9), tol = 2e-9))
> 
> cat('Time elapsed: ', proc.time(),'\n') # "stats"
Time elapsed:  5.82 0.09 6.57 0 0 
> 
> 

root@r-forge.r-project.org
ViewVC Help
Powered by ViewVC 1.0.0  
Thanks to:
Vienna University of Economics and Business Powered By FusionForge