首先,我通过使用找到 (4000x4000) 矩阵的特征值numpy.linalg.eigvalsh
。然后,我改变了边界条件,期望特征值只有微小的变化。
减去特征值容易受到浮点错误的影响,所以我使用了一些相对容差。
现在说我有一个 eigenvalueA = 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