【发布时间】:2012-12-15 09:58:28
【问题描述】:
首先,我使用numpy.linalg.eigvalsh 找到 (4000x4000) 矩阵的特征值。然后,我改变了边界条件,期望特征值只有微小的变化。
减去特征值容易受到浮点错误的影响,因此我使用了一些相对容差。
现在假设我有一个特征值 A = 1.0001e-10 和另一个 B = 1.0050e-10。根据我对浮点运算的浅薄知识,A - B != 0。问题是,这些数字来自涉及多个数量级的线性代数计算。例如,其他特征值可能是1。
问题是,使用numpy.linalg.eigvalsh 计算的特征值的精度是多少?这个精度是相对于值 (A * eps),还是相对于最大特征值?还是相对于原始矩阵的元素?
例如这个矩阵:
1 1e-20
1e-20 3
给出与此相同的特征值:
1 1e-5
1e-5 3
【问题讨论】:
标签: python numpy floating-point linear-algebra