http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.linalg.orth.html
我该如何调整它? 我得到的基础比预期的要少。 Google 在前几页上没有给我明显有用的结果。
最佳答案
orth
使用 singular value decomposition 。 orth
的定义当前位于 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
是相对容差:它设置为 max(M, N)*eps
乘以 A< 的最大奇异值
,其中 eps
是浮点机 epsilon。
orth
没有提供任何参数来控制 tol
的计算方式,但正如您所看到的,该函数只有几行。如果您想使用不同的方法来决定忽略哪些奇异值,您可以使用orth
作为编写自己的函数的起点。
关于scipy - scipy.linalg.orth() 中的 "automatic cutoff"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37762781/