论文部分内容阅读
以求解线性方程组为代表的数值计算在现代科学研究和工程技术中得到广泛应用,数值分析问题的求解方法、数值计算的算法以及数值计算的计算机软件长期以来一直是人们的重要研究课题。线性方程组的求解计算最终归结为系数矩阵的三角分解,包括一般稠密型线性方程组的LU分解和对称正定型线性方程组的Cholesky分解。对于大型线性方程组,由于数据量很大,若按标准的LU分解或Cholesky分解公式直接计算,不能很好地利用当今高性能计算机的多级存储结构(即高缓cashe),计算时调用的是level-1和level-2BLAS,运算效率不高。为此,需要采用分块算法,通过将矩阵分块,使运算在小的分块子矩阵间进行,从而能较好地利用高缓,同时调用level-3BLAS,提高运算效率。递归能自动地产生矩阵分块,分块子矩阵的阶数逐级减小并趋于方阵,具有良好的数据局部性(locality),计算中也能更多地调用level-3BLAS,适合于当今分层多级存储的计算机结构。
本文对包括LU分解和Cholesky分解在内的矩阵三角分解的递归算法进行了研究,给出了LU分解和Cholesky分解递归算法的详细推导过程,用支持递归过程的FORTRAN90语言对得到的递归算法进行了实现,将产生的算法和程序在计算机上运行和测试,并与现行的LAPACK标准算法和程序进行了比较。研究和测试结果表明,递归算法在大矩阵情况下,优于LAPACK中的分块算法,运算速度提高10~20%。本文的研究对于数值计算算法的发展具有一定理论意义,得到的算法和程序也具有实用价值,可用于解决大型科学和工程计算问题,提高计算机的运算速度和效率。