gpt4 book ai didi

c++ - Eigen SparseLU 分解问题

转载 作者:行者123 更新时间:2023-11-28 01:26:24 24 4
gpt4 key购买 nike

我正在使用 Eigen 库,但以下代码无法编译:

Eigen::SparseMatrix<double, Eigen::ColMajor> test(100, 100);
Eigen::SparseLU<Eigen::SparseMatrix<double, Eigen::ColMajor>, Eigen::COLAMDOrdering<Eigen::DenseIndex>> test_slv;
test_slv.analyzePattern(test);
test_slv.factorize(test);

我得到以下输出:

c:\users\user\source\repos\cartel\cartel\include\eigen\src\core\solvetriangular.h(247): 错误 C2280: 'Eigen::Block &Eigen::Block::operator =( const Eigen::Block &)':试图引用已删除的函数 和 [ 派生= Eigen::矩阵 ]c:\users\user\source\repos\cartel\cartel\include\eigen\src\core\block.h(143): 注意:编译器在这里生成了'Eigen::Block::operator =' 和 [ 派生= Eigen::矩阵 ]c:\users\user\source\repos\cartel\cartel\include\eigen\src\core\block.h(143): 注意:'Eigen::Block &Eigen::Block::operator =(const Eigen::Block &)': 函数被隐式删除,因为基类调用了一个已删除或不可访问的函数 'Eigen::BlockImpl::StorageKind> &Eigen::BlockImpl::StorageKind>::operator =(const Eigen::BlockImpl::StorageKind> &)' 和 [ 派生= Eigen::矩阵 ] 和 [ XprType= Eigen::矩阵, 派生= Eigen::矩阵 ]

最佳答案

Eigen::COLAMDOrdering需要与 SparseMatrix 具有相同的索引类型.试试 Eigen::COLAMDOrdering<int>Eigen::SparseMatrix<double, Eigen::ColMajor, Eigen::DenseIndex> .

如果你typedef编辑你的稀疏矩阵类型,你可以使用 Eigen::COLAMDOrdering<SparseType::StorageIndex> (如果 SparseType 取决于模板参数:typename SparseType::StorageIndex)。

关于c++ - Eigen SparseLU 分解问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53586196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com