求解线性方程组 Ax=b,常用的方法包括 直接解法(一般是对 A 进行矩阵分解)
和 迭代法。常用的数值计算平台,如 Matlab,Octave,numpy 中都支持对线
性方程组的求解,以 Matlab 的性能最优,支持的方法也最多,直接求解时用 x=b\
A 会根据 A 的性质(如对称、稀疏)选择最优的算法,在用迭代求解时还可以
先进行不完全分解来加速收敛速度。
下面总结一下我所知道的开源的求解线性方程组的相关的数值计算库,一般都是
Fortran 或 C/C++开发。
� BLAS(Basic Linear Algebra Subprograms)
blas 是许多数值计算软件库的核心, 一般是用 Fortran77 实现, 支持矩阵、
向量基本操作。也有 C/C++的封装。
据说性能最优的 BLAS 实现是 gotoBLAS。
� Sparse BLAS
BLAS 的 Sparse matrix 版本。见到的都是 NIST 版本,C++的,netlib
上的 是一个 Fortran 版本。
� LAPACK(Linear Algebra PACKage)
专用于线性运算的,如求解 AX=b, 矩阵分解、求逆,求矩阵特征值、奇
异值等,在 www.netlib.org/lapack/ 是 Fortran 版本的,应用很广,但还
未见到针对 Sparse matrix 的版本。
� ScaLapck
可以在分布内存的计算机上并行求解线性问题,即并行版的 LAPACK。
� SuiteSparse
SuiteSparse 是 Prof. Tim Davis 的 Sparse matrix solver 的程序包,
涉及希疏矩阵分解,大多用 C 开发,提供 Matlab 接口。Matlab 中的很
多数希疏矩阵函数的原型都可以在其中找到。性能非常出色。
� TNT(Template Numerical Toolkit)
C++的数值计算库,目标很大,据说还要集成 LAPACK++,Sparselib++,IM
L++,MV++。但目前还很薄弱,也就是定义了一些数据结构,求解线性方
程组的能力基本没有,Sparse matrix 的操作功能也没有。
评论0
最新资源