scipy.linalg.orth() 中的 "automatic cutoff" 是什么?
What is the "automatic cutoff" in scipy.linalg.orth()?
http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.linalg.orth.html
我该如何调整它?
我得到的基础比预期的要少。
Google 在前几页没有给我明显有用的结果。
orth
uses the singular value decomposition. The definition of orth
currently lives in https://github.com/scipy/scipy/blob/master/scipy/linalg/decomp_svd.py,在我写这篇文章时,orth
(删除文档字符串)的完整代码是:
def orth(A):
u, s, vh = svd(A, full_matrices=False)
M, N = A.shape
eps = numpy.finfo(float).eps
tol = max(M, N) * numpy.amax(s) * eps
num = numpy.sum(s > tol, dtype=int)
Q = u[:, :num]
return Q
结果是小于tol
的奇异值被认为是0,那些方向不被认为是A
范围的一部分。 tol
是一个 relative 公差:它被设置为 max(M, N)*eps
乘以 A
的最大奇异值,其中 eps
是浮动点机epsilon.
orth
没有提供参数来控制 tol
的计算方式,但正如您所见,该函数只有几行。如果您想使用不同的方法来决定忽略哪些奇异值,您可以使用 orth
作为编写您自己的函数的起点。
http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.linalg.orth.html
我该如何调整它? 我得到的基础比预期的要少。 Google 在前几页没有给我明显有用的结果。
orth
uses the singular value decomposition. The definition of orth
currently lives in https://github.com/scipy/scipy/blob/master/scipy/linalg/decomp_svd.py,在我写这篇文章时,orth
(删除文档字符串)的完整代码是:
def orth(A):
u, s, vh = svd(A, full_matrices=False)
M, N = A.shape
eps = numpy.finfo(float).eps
tol = max(M, N) * numpy.amax(s) * eps
num = numpy.sum(s > tol, dtype=int)
Q = u[:, :num]
return Q
结果是小于tol
的奇异值被认为是0,那些方向不被认为是A
范围的一部分。 tol
是一个 relative 公差:它被设置为 max(M, N)*eps
乘以 A
的最大奇异值,其中 eps
是浮动点机epsilon.
orth
没有提供参数来控制 tol
的计算方式,但正如您所见,该函数只有几行。如果您想使用不同的方法来决定忽略哪些奇异值,您可以使用 orth
作为编写您自己的函数的起点。