我认为在线性代数社区中答案可能是否定的,但我会在上面说任何话而且你开始失去太多的精确度,使情况变得有问题。在他们使用 OLS 的一些统计设置中,我看到它表明即使值超过是有问题的,但这似乎很极端。你们如何评估条件编号是否“有问题”?
是否存在一个大的条件数变得“有问题”的一般阈值?
这个答案是我一起编译和编辑的评论。我为重复道歉。
我会考虑以上任何事情有问题,因此它取决于浮点系统。但这也取决于线性系统的大小。您可以创建条件数为 O(1000) 的小型线性系统 (3x3),并且计算机找到的解决方案可能超出可接受的容差。一般来说,我告诉我的学生,如果他们使用双精度,危险区域从 1000 开始,如果超过,他们需要特别小心.
我想指出,条件数与您使用的方法的稳定性没有太大关系。即使它是连接的,例如,如果您使用共轭梯度法,来自矩阵的误差也在 mat-vec 步骤。所以问题可能是由 mat-vec 操作的条件数而不是矩阵的条件数引起的。
正如 Federico Poloni 在评论中指出的那样,矩阵向量乘法问题的条件数从上面受矩阵的条件数限制,例如. 但是,我认为我们应该考虑更一般的 mat-vec条件数的界限:. 虽然我们可以立即将问题的条件数等于矩阵的条件数,但我通常看到它写为与。我相信这个想法是 mat-vec 和 msolve 是彼此的逆,如果其中一个是良条件的,另一个将是病态的,类似于乘法和除法(一些例外情况适用:和都是条件良好的)。因此,对于具有高条件数 msolves 的矩阵,仍然可能是这样的情况. 因此,mat-vec 操作的条件数可能远低于矩阵的条件数。作为一个极端的例子,如果是奇异仍然有意义并且可能是良条件的,但是和是一个不适定问题。
因此,如果算法的基本步骤存在与输入错误相关的问题,直接方法和 CG 都会遇到类似的问题。但这与传统观点不同,即病态问题很难独立于您使用的算法的稳定性来解决。
请注意,我对的任意选择对我来说基本上是一种启发式方法,根据我的经验,这正是事情开始破裂的地方。例如,相对幅度对矩阵(或右侧向量)的小扰动可能会导致高达,即使您假设您有一个完美的算法,它不会引入和传播错误并且不受浮点运算的影响。而且我的误差容限通常在级别,在双精度下接近 :)