下一节:直接方法 上一级:平衡矩阵 上一节:Krylov平衡算法

平衡后计算特征值的精度

我们通过几个例子来展示密集和稀疏特征求解器在有无平衡情况下计算特征值的精度。这是“底线”,展示了平衡对整体特征值计算过程的帮助程度。

为了研究计算特征值的精度,我们需要知道真实的特征值。在这些实验中,我们首先使用SPBALANCE定位并平衡矩阵的各个对角块,然后使用密集特征求解器分别找到每个对角块的特征值,以双精度计算“真实”特征值。接着,我们将单精度计算的特征值与这些“真实”特征值进行比较。

7.17.2绘制了通过平衡计算的特征值的相对误差与未平衡计算的特征值的误差对比。位于虚线对角线下方的十字表示通过平衡计算的特征值更准确;十字离虚线越远,平衡与未平衡之间的特征值精度差异越大。

图7.1:QH768和TOLOSA矩阵在直接平衡和未平衡情况下计算特征值的相对精度。

图7.1:QH768和TOLOSA矩阵在直接平衡和未平衡情况下计算特征值的相对精度。

7.1清楚地显示,SPBALANCE有效地提高了QH768和TOLOSA矩阵大多数特征值的计算精度,通常提高了很多个数量级,如[28]所述。

图7.2:QH768和TOLOSA矩阵在Krylov平衡和未平衡情况下计算特征值的相对精度。

图7.2:QH768和TOLOSA矩阵在Krylov平衡和未平衡情况下计算特征值的相对精度。

7.2显示,KRYLOVCUTOFF也提高了QH768和TOLOSA矩阵大多数特征值的计算精度,但改进程度不如直接算法SPBALANCE。

在图7.2中,经过基于Krylov的平衡后,特征值使用密集特征求解器而不是稀疏求解器计算;这是为了隔离平衡的效果。实际上,如果明确给出一个稀疏矩阵并愿意运行O(n^3)密集特征求解器,人们会使用SPBALANCE而不是基于Krylov的方法预处理矩阵。在更实际的情况下,人们会使用KRYLOVCUTOFF来平衡那些仅使用矩阵-向量乘法的算法计算特征值的矩阵。

7.37.4展示了这种更实际的情况。它们显示了在未平衡、使用SPBALANCE、使用KRYLOVCUTOFF以及[82]中描述的另外两种Krylov平衡算法(KRYLOVAZ仅使用Az,KRYLOVATZ使用AzA^Tz但没有截断)计算时,最大和最小(按模)特征值的相对精度。特征值在MATLAB中使用eigs函数计算,该函数使用第7.6节中的IRAM。

图7.3:使用不同Krylov平衡算法(默认设置为五次迭代和10^{-8}的截断值)对QH768矩阵最大和最小(按模)特征值相对精度的比较。

图7.3:使用不同Krylov平衡算法(默认设置为五次迭代和10^{-8}的截断值)对QH768矩阵最大和最小(按模)特征值相对精度的比较。

图7.4:使用不同Krylov平衡算法(默认设置为五次迭代和10^{-8}的截断值)对TOLOSA矩阵最大和最小(按模)特征值相对精度的比较。

图7.4:使用不同Krylov平衡算法(默认设置为五次迭代和10^{-8}的截断值)对TOLOSA矩阵最大和最小(按模)特征值相对精度的比较。

7.3显示,QH768矩阵最小特征值的相对误差变化不大。然而,对于最大特征值,KRYLOVCUTOFF几乎与SPBALANCE一样好,并且明显优于未平衡的结果。在TOLOSA矩阵上,最小特征值在经过KRYLOVCUTOFF平衡后计算得最准确,甚至优于直接平衡。对于最大特征值,SPBALANCE最为有效,尽管所有三种Krylov平衡算法都明显优于不进行平衡。



下一节:直接方法 上一级:平衡矩阵 上一节:Krylov平衡算法
Susan Blackford 2000-11-20