当元素接近零时比较向量

时间:2018-07-09 07:15:37

标签: r comparison

我想比较两个向量之间的元素明智,但是当分量接近零时得到与我期望的不同。

这是代码:

m <- rbind(c(-2.138697227039309,2.02792645210313,-0.0446693398025567)
            ,c(-1.963333204136506,2.50000000000000,-0.5366667958634941)
            ,c(-2.292730243327192,2.50000000000000,-0.2072697566728089)
            ,c(-2.525115170624692,2.43589709931669,0.0892180713080040)
            ,c(-0.736143506893788,2.50000000000000,-1.7638564931062122)
            ,c(-2.299960100106132,2.50000000000000,-0.2000398998938679)
            )
s <- matrix(c(0,5),nrow = 2)
A <- matrix(c(1,1,1,-1,1,-1),nrow = 2,byrow = TRUE)

for(i in 1:nrow(m)){
  cat("\niter #:",i,"\n")
  a <- A%*%m[i,]
  print(a)
  print(a <= s)
}

我得到以下输出:

iter #: 1 
           [,1]
[1,] -0.1554401
[2,]  4.2112930
     [,1]
[1,] TRUE
[2,] TRUE

iter #: 2 
     [,1]
[1,]    0
[2,]    5
     [,1]
[1,] TRUE
[2,] TRUE

iter #: 3 
              [,1]
[1,] -7.771561e-16
[2,]  5.000000e+00
      [,1]
[1,]  TRUE
[2,] FALSE

iter #: 4 
             [,1]
[1,] 2.026157e-15
[2,] 4.871794e+00
      [,1]
[1,] FALSE
[2,]  TRUE

iter #: 5 
              [,1]
[1,] -2.220446e-16
[2,]  5.000000e+00
     [,1]
[1,] TRUE
[2,] TRUE

iter #: 6 
             [,1]
[1,] 2.775558e-16
[2,] 5.000000e+00
      [,1]
[1,] FALSE
[2,]  TRUE

我期望在迭代3,4和6中会有不同的结果。有没有更好的方法来比较这些向量。

这就是我想要的TRUE而不是FALSE

iter #: 3 
              [,1]
[1,] -7.771561e-16
[2,]  5.000000e+00
      [,1]
[1,]  TRUE
[2,]  TRUE

iter #: 4 
             [,1]
[1,] 2.026157e-15
[2,] 4.871794e+00
      [,1]
[1,]  TRUE
[2,]  TRUE

iter #: 6 
             [,1]
[1,] 2.775558e-16
[2,] 5.000000e+00
      [,1]
[1,]  TRUE
[2,]  TRUE

谢谢

1 个答案:

答案 0 :(得分:0)

我们可以检查'a'和's'之间的差是否小于或等于for(i in seq_len(nrow(m))){ cat("\niter #:",i,"\n") a <- A%*%m[i,] print(a) print( (a -s) <= (10 *.Machine$double.eps)) } 的乘数

<item name="android:alertDialogTheme">@style/AlertDialogStyle</item>