tol论证在QR分解中的作用

时间:2013-04-04 00:14:52

标签: r

我是R的新用户。您能告诉我或介绍一些描述计算R中QR分解的tol参数的参考吗?

例如,这两行的区别是什么:

qr(A, tol=1e-07) #Doesn't work

qr(A, tol=1e-20) #Works

为什么我会以tol这么小的值获得我想要的resullt,但没有更大的值?

1 个答案:

答案 0 :(得分:5)

tol参数控制qr是否为列返回值,具体取决于列是否已被判断为线性相关。我认为将tol值降低到1e-16以下将会破坏该检查的目的。 (这几乎是双精度数学中零的实用定义。)

首先查看qr.default,然后找到FORTRAN代码:

http://svn.r-project.org/R/trunk/src/appl/dqrdc2.f

这是来自FORTRAN例程的注释,描述了逻辑:

c     cycle the columns from l to p left-to-right until one
c     with non-negligible norm is located.  a column is considered
c     to have become negligible if its norm has fallen below
c     tol times its original norm.  the check for l .le. k
c     avoids infinite cycling.