我想找到一些矩阵来测试我的代码,例如 GMRES 、 MINRES 等。但是我找不到一些测试矩阵和相应的预处理器来验证我的程序。
我知道一些像MatrixMarket这样的网站(见这个问题),但我找不到矩阵的相应预处理器。谁能帮我?
我想找到一些矩阵来测试我的代码,例如 GMRES 、 MINRES 等。但是我找不到一些测试矩阵和相应的预处理器来验证我的程序。
我知道一些像MatrixMarket这样的网站(见这个问题),但我找不到矩阵的相应预处理器。谁能帮我?
通常,预处理器被认为是求解器的一部分,因此它们不包含在测试矩阵集合中。事实上,预条件子很少被构造为显式矩阵,因此很难以与编程语言无关的方式包含它们。
如果您使用现有的稀疏线性代数框架或 MATLAB 或 Julia 等语言,则应该已经实现了大量的预条件器。否则,有一些很容易实现的数字。
作为最后的附注,我认为SuiteSparse 集合包含来自 MatrixMarket 的所有矩阵以及更多矩阵。
我认为这里有些混乱。没有矩阵和相应的预处理器。后者通常是随着迭代方案的发展而动态地衍生出来的,除非您已经拥有矩阵逆矩阵,这将是完美的预处理器,因为您只需应用逆矩阵,并且迭代方法将在其第一步收敛。矩阵也可以从一个时间步到另一个时间步创建,并随着代码的发展而变化。因此,它也可能永远不会以完整的形式存储,只是根据需要进行计算。
在许多方法中,我们有一个步骤表明我们需要将矩阵的逆矩阵应用于对象,我们通常没有完全形成矩阵,因此永远不会完全形成它,也不会完全形成它的逆矩阵。我们只需要对任意向量执行它们的操作。结果,在大多数生产程序中,预处理器可能永远不会完全构建,因为对于大问题,矩阵的各个部分分散在大型并行计算机的内存中。
但是不要绝望,正如其他答案和评论中提到的那样,有一些库可以处理这些问题,因此您“只需”使您的代码适应它们表示矩阵和向量的方式。