【问题标题】:Pseudo-inverse via signular value decomposition in numpy.linalg.lstsq通过 numpy.linalg.lstsq 中的奇异值分解进行伪逆
【发布时间】:2021-04-12 05:26:31
【问题描述】:

有使用错误 SE 的风险...

我的问题与numpy.linalg.lstsq(a, b, rcond) 中的rcond 参数有关。我知道当 numpy 计算 a 的伪逆时,它用于定义奇异值分解中小奇异值的截止值。

但是,为什么将“小”奇异值(低于截止值)设置为零而不是仅仅将它们保持为小数字是有利的?

PS:诚然,我不知道伪逆是如何计算的,以及 SVD 在其中扮演什么角色。

谢谢!

【问题讨论】:

    标签: numpy linear-algebra svd


    【解决方案1】:

    要确定系统的等级,您可能需要与零进行比较,但与浮点运算一样,我们应该与某个有限范围进行比较。在添加和减去杂乱数字时,永远不会发生精确到 0 的情况。

    (倒数)条件数允许您以与矩阵中的单位和比例无关的方式指定这样的限制。 如果您确定您的问题不会面临未确定的风险,您也可以通过指定 rcond=None 来选择 lstsq 中的此功能。

    未来的默认值听起来像是 numpy 的明智选择

    FutureWarning:rcond 参数将更改为默认的机器精度时间 max(M, N) 其中 M 和 N 是输入矩阵维度

    因为如果你达到这个限制,你只是适应浮点运算的舍入误差,而不是你希望建模的“真实”数学系统。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-14
      • 2015-12-18
      • 2013-02-02
      • 2016-01-30
      • 2023-03-22
      • 2017-03-08
      • 1970-01-01
      • 2010-10-31
      相关资源
      最近更新 更多