scipy - scipy.linalg.orth() 中的 "automatic cutoff"是什么?

标签 scipy orthogonal

http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.linalg.orth.html

我该如何调整它? 我得到的基础比预期的要少。 Google 在前几页上没有给我明显有用的结果。

最佳答案

orth使用 singular value decompositionorth 的定义当前位于 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/

相关文章:

python - 优化最小化与 SLSQP 不兼容的不平等约束

python - 使用输出数组在 Python 中计算数组的积分

r - 在 R 中构建正交向量的最简单方法

r - 使用 lm() 进行线性回归 - 对结果感到惊讶

javascript - 绘制圆svg正交投影

python - 生成一个向量,该向量在任何维度上都与一组其他向量正交

python - 如何将一个 float 元组写入文件空间,只用一次调用在 python 中写入?

python - Scipy 导入错误 : DLL load failed: The specified module could not be found

python - ubuntu 14.04 如何从 13.3 升级到 scipy 14.0

java - Java 是正交的吗?