Eigen SparseLU 分解问题
Eigen SparseLU factorize issue
我正在使用 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 &)': 试图引用已删除的函数
和
[
派生=本征::矩阵
]
c:\users\user\source\repos\cartel\cartel\include\eigen\src\core\block.h(143): 注意:编译器在这里生成了 'Eigen::Block::operator ='
和
[
派生=本征::矩阵
]
c:\users\user\source\repos\cartel\cartel\include\eigen\src\core\block.h(143): 注意:'Eigen::Block &Eigen::Block::operator =(const Eigen::Block &)':函数被隐式删除,因为基数 class 调用已删除或不可访问的函数 'Eigen::BlockImpl::StorageKind> &Eigen::BlockImpl::StorageKind>::operator =(const Eigen::BlockImpl::StorageKind> &)'
和
[
派生=本征::矩阵
]
和
[
XprType=本征::矩阵,
派生=本征::矩阵
]
Eigen::COLAMDOrdering
需要与 SparseMatrix
具有相同的索引类型。尝试 Eigen::COLAMDOrdering<int>
或 Eigen::SparseMatrix<double, Eigen::ColMajor, Eigen::DenseIndex>
.
如果您 typedef
编辑了稀疏矩阵类型,则可以使用 Eigen::COLAMDOrdering<SparseType::StorageIndex>
(如果 SparseType
取决于模板参数:typename SparseType::StorageIndex
)。
我正在使用 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 &)': 试图引用已删除的函数 和 [ 派生=本征::矩阵 ] c:\users\user\source\repos\cartel\cartel\include\eigen\src\core\block.h(143): 注意:编译器在这里生成了 'Eigen::Block::operator =' 和 [ 派生=本征::矩阵 ] c:\users\user\source\repos\cartel\cartel\include\eigen\src\core\block.h(143): 注意:'Eigen::Block &Eigen::Block::operator =(const Eigen::Block &)':函数被隐式删除,因为基数 class 调用已删除或不可访问的函数 'Eigen::BlockImpl::StorageKind> &Eigen::BlockImpl::StorageKind>::operator =(const Eigen::BlockImpl::StorageKind> &)' 和 [ 派生=本征::矩阵 ] 和 [ XprType=本征::矩阵, 派生=本征::矩阵 ]
Eigen::COLAMDOrdering
需要与 SparseMatrix
具有相同的索引类型。尝试 Eigen::COLAMDOrdering<int>
或 Eigen::SparseMatrix<double, Eigen::ColMajor, Eigen::DenseIndex>
.
如果您 typedef
编辑了稀疏矩阵类型,则可以使用 Eigen::COLAMDOrdering<SparseType::StorageIndex>
(如果 SparseType
取决于模板参数:typename SparseType::StorageIndex
)。