【问题标题】:Matlab Zero Tolerance in rank function秩函数中的 Matlab 零容忍度
【发布时间】:2018-09-17 15:51:03
【问题描述】:

我想知道为什么 rank 函数上的 Matlab 将 max(size(A))*eps(norm(A)) 的值视为零是否有技术或理论原因。你能提供一些直觉吗?

谢谢!

【问题讨论】:

  • 请给出a 的样本值,我对anorm(a) 持怀疑态度。

标签: matlab


【解决方案1】:

以下答案并非基于正确的数学推理,而只是一些推测(正如您所要求的直觉):

norm(A) 是矩阵条目的数量级。

eps(norm(A)) 因此是矩阵条目的浮点表示通常具有的精度。

现在,考虑您添加理论上应该加到零的 N 数字,但它们每个都有 eps 的错误...我想我们预计会出现 sqrt(N) * eps 顺序的错误结果。

然后,假设计算秩的算法对矩阵条目执行N^2 操作(其中N 是它的大小)以产生一个与零检查的数字,那么我们预期的错误是您在问题中所说的内容。

我不知道,Matlab 使用的算法真的很复杂吗N^2

【讨论】:

  • 感谢您的回答,按照您提出的推理,为什么我们预计会出现sqrt(N)*eps 而不是N^2*eps 的顺序错误?
  • 一般来说,统计误差是二次加起来的,见here。例如,如果我们想将两个数字相加,每个数字的误差为 eps,则总和的误差为 sqrt(eps^2 + eps^2) = sqrt(2) * eps
猜你喜欢
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 2012-01-19
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
  • 2019-03-18
  • 1970-01-01
相关资源
最近更新 更多