在很多大规模科学或工程计算中,包括从计算电路频率响应到建筑的地震响应,再到分子的能级,都需要求解矩阵的特征值和特征向量。特征值问题有多种数学表述方式,且有非常多的数值求解方法。本书旨在指导读者为特征值问题找到最合适的数值方法。
目前,针对许多特征值问题,尤其是中小规模稠密矩阵,已存在优秀的方法。这些算法已在MATLAB[319] 1、LAPACK[12]等编程环境和库以及其他商业和公共软件包中得到应用。然而,对于超大规模特别是稀疏矩阵的特征值问题,目前并没有单一的最佳方法。众多方法及其对矩阵数学特性的复杂依赖,还有在效率和精度间的权衡,使得专家乃至普通用户都难以找到最适合特定问题的方法。虽然GAMS(可用数学软件指南)2 和NETLIB 3 等优秀在线搜索设施和软件库存在,允许基于库名、子程序名、关键词及数值计算主题分类进行搜索,但它们无法针对特定问题给出最佳方法的建议。因此,本书作者和其他专家常被咨询如何选择算法。这一现状促使我们将知识提炼成书,尽可能广泛传播。
本书结构如下:首先,我们构建了一个决策树,能够引导用户找到最佳方法。树的每个节点针对问题的数学结构、待计算量及矩阵运算成本提出问题。其次,在决策树的叶节点,我们展示了推荐的算法模板,并提供相关软件指引。模板是对算法的高层次描述,便于理解其工作原理、用户可调整的参数以控制效率和精度,以及如何解读输出。我们将在下文详细讨论这一结构。
本书源于《线性系统求解模板:迭代方法构建模块》(
本书涵盖的特征值问题种类繁多。一些算法广为人知且经过充分研究,而其他领域仍处于加强研究中。这使得对于不同的问题,我们的叙述风格有所不同。对于有良好“黑盒”解决方案的已知领域,我们会保持简洁,主要面向非专家读者;而另一边,我们会综述一些当前的研究成果。
在大多数章节中,我们明确列出了贡献作者。这不仅是为了表彰,也体现了对文本的个人责任。所有章节都提供了足够的参考资料,作为通往特征值问题更丰富细节和专业知识的窗口。