【发布时间】:2018-09-17 15:51:03
【问题描述】:
我想知道为什么 rank 函数上的 Matlab 将 max(size(A))*eps(norm(A)) 的值视为零是否有技术或理论原因。你能提供一些直觉吗?
谢谢!
【问题讨论】:
-
请给出
a的样本值,我对a和norm(a)持怀疑态度。
标签: matlab
我想知道为什么 rank 函数上的 Matlab 将 max(size(A))*eps(norm(A)) 的值视为零是否有技术或理论原因。你能提供一些直觉吗?
谢谢!
【问题讨论】:
a 的样本值,我对a 和norm(a) 持怀疑态度。
标签: matlab
以下答案并非基于正确的数学推理,而只是一些推测(正如您所要求的直觉):
norm(A) 是矩阵条目的数量级。
eps(norm(A)) 因此是矩阵条目的浮点表示通常具有的精度。
现在,考虑您添加理论上应该加到零的 N 数字,但它们每个都有 eps 的错误...我想我们预计会出现 sqrt(N) * eps 顺序的错误结果。
然后,假设计算秩的算法对矩阵条目执行N^2 操作(其中N 是它的大小)以产生一个与零检查的数字,那么我们预期的错误是您在问题中所说的内容。
我不知道,Matlab 使用的算法真的很复杂吗N^2?
【讨论】:
sqrt(N)*eps 而不是N^2*eps 的顺序错误?
eps,则总和的误差为 sqrt(eps^2 + eps^2) = sqrt(2) * eps。