首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特征稀疏解对同一线性系统给出了截然不同的解。

特征稀疏解对同一线性系统给出了截然不同的解。
EN

Stack Overflow用户
提问于 2021-11-10 02:15:04
回答 1查看 191关注 0票数 0

我试图尽快地用特征求解稀疏线性系统。

这些文档给您提供了4个稀疏的求解器,它们都来自于(但实际上更像这三个):

代码语言:javascript
复制
SimplicialLLT
#include<Eigen/SparseCholesky>  Direct LLt factorization    SPD Fill-in reducing    LGPL    

SimplicialLDLT is often preferable

SimplicialLDLT
#include<Eigen/SparseCholesky>  Direct LDLt factorization   SPD Fill-in reducing    LGPL    

Recommended for very sparse and not too large problems (e.g., 2D Poisson eq.)

SparseLU
#include<Eigen/SparseLU>    LU factorization    Square  Fill-in reducing, Leverage fast dense algebra   MPL2    

optimized for small and large problems with irregular patterns 

当我使用最后一个解算器时,即我使用:

代码语言:javascript
复制
Eigen::SparseLU<Eigen::SparseMatrix<Scalar>> solver(bijection);
Assert(solver.info() == Eigen::Success, "Matrix is degenerate.");
solver.compute(bijection);
Assert(solver.info() == Eigen::Success, "Matrix is degenerate.");

Eigen::VectorXf vertices_u = solver.solve(u);
Assert(solver.info() == Eigen::Success, "Matrix is degenerate.");
Eigen::VectorXf vertices_v = solver.solve(v);
Assert(solver.info() == Eigen::Success, "Matrix is degenerate.");

我得到了正确的结果,在图形上如下所示:

如果我使用simplicialLDLT,即如果我将求解程序行更改为:

代码语言:javascript
复制
Eigen::SimplicialLDLT<Eigen::SparseMatrix<Scalar>> solver(bijection);

我知道这个堕落的怪物:

基本上,对于完全相同的稀疏系统,两个求解者返回的结果是不同的。这怎麽可能?

所有的错误检查都不会返回false,因此在这两个版本中,矩阵都被认为是正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-22 13:03:49

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69907247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档