【摘要】:混合精度的迭代算法的主要思路是在迭代初期采用较低的计算精度,当迭代到某个点后再采用高精度表示继续在原来计算的结果上进行精化,能够达到与一直采用高精度一样的计算效果。如果后续采用高精度进行迭代精化的占比比较小,就能够极大地提高计算效率。具体的算法如算法91所示。同样,在GMRES中,也可以使用较低精度的LU分解,在迭代阶段再使用高精度逐步精化,以获得更高精度的解。
混合精度的迭代算法的主要思路是在迭代初期采用较低的计算精度,当迭代到某个点后再采用高精度表示继续在原来计算的结果上进行精化,能够达到与一直采用高精度一样的计算效果。如果后续采用高精度进行迭代精化的占比比较小,就能够极大地提高计算效率。
线性系统求解一个常用的方法是用高斯消元法对系数矩阵进行LU分解。首先,系数矩阵被分解为一个下三角矩阵L和一个上三角矩阵U的乘积,为了保证数值计算稳定性,通常会引入一个置换矩阵P,使得PA = LU。在此情况下,首先对Ly = Pb(前向替换)进行求解,然后再对Ux = y(后向替换)进行求解来完成的。由于舍入误差,计算出的解x携带一个数值误差,该误差被系数矩阵A的条件数放大。
迭代精化算法的基本思想是通过不断求解修订方程从而改进当前的解,该算法包括了分解、残差计算和修正求解三个步骤,而这个过程是可以使用不同精度分别进行计算的,例如PA = LU分解、Ly = P的求解,Ux = y的求解可以使用单精度计算,而残差的计算和解的更新则使用双精度计算。具体的算法如算法9−1所示。(www.xing528.com)
使用该算法进行计算时,复杂度最高为O(n3),而这部分是使用单精度完成的,首先需要将双精度矩阵A转为单精度矩阵,然后再进行LU分解,并得到单精度的计算结果。
同样,在GMRES(广义极小残差法)中,也可以使用较低精度的LU分解,在迭代阶段再使用高精度逐步精化,以获得更高精度的解。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。