Eigen 稀疏矩陣LU分解解方程組
阿新 • • 發佈:2019-01-04
下載Eigen、配置目錄
這裡用LU分解舉例
#include <Eigen/Dense>
#include <Eigen/Sparse>
#include <Eigen/SparseLU>
using namespace Eigen;
//處理矩陣部分
vector<Triplet<float>> triple;//用三元組賦值
triple.push_back(Triplet<float>(i, j,A[i][j]));//ij處的值是A[i][j]
SparseMatrix<float > A(n, n);//定義n*n的係數矩陣
A.setFromTriplets(triple.begin(), triple.end());//三元數給矩陣賦值
SparseLU<SparseMatrix<float>> solver
solver.compute(A);//對A進行預分解
if (solver.info()!=Success)
{
cout << "Compute Matrix is error" << endl;
return;
}
//右端項
VectorXf b(n);//n行的方程組
//求解
x = solver.solve(b);