eigen稀疏矩陣求解線性方程,內建的有直接求解器,迭代求解器和第三方求解器。見文件
圖二見鏈結
這裡是使用eigen裡的迭代求解器,因為矩陣非方陣,也不是對稱的,選擇leastsquaresconjugategradient。
1、包含標頭檔案#include "eigen/sparse"
#include "eigen/iterativelinearsolvers"
2、稀疏矩陣填充,把非零元素填入即可,有直接插入法和triplet方式插入法。triplet方式速度快。
// 預設是按列優先
eigen::sparsematrixa1_sparse(a_rows, a_cols);
eigen::vectorxf b1_sparse(b_rows, b_cols);
eigen::vectorxf x1_sparse;
std::vector> tripletlist;
for (int i = 0; i < a_rows; i++)
}} a1_sparse.setfromtriplets(tripletlist.begin(), tripletlist.end());
// 壓縮優化矩陣
a1_sparse.makecompressed();
eigen::leastsquaresconjugategradient> solver_sparse;
// 設定迭代精度
solver_sparse.settolerance(0.001);
solver_sparse.compute(a1_sparse);
//x1_sparse 即為解
x1_sparse = solver_sparse.solve(b1_sparse);
使用MKL Eigen求解稀疏矩陣方程組
問題 求解ax b的解,其中,a為大型稀疏矩陣,長和寬分別為1500 2。一般思路 1 a為對稱正定矩陣,對a使用cholesky分解。2 a為對稱不定矩陣,使用ldl 分解,即 pap ldl 其中,l為單位下三角矩陣,d由階數為1或者2的對角塊構成,p是置換矩陣。3 不對稱矩陣 lu分解。4 長...
Eigen 稀疏矩陣LU分解解方程組
這裡用lu分解舉例 include include include using namespace eigen 處理矩陣部分 vector float triple 用三元組賦值 triple.push back triplet i,j,a i j ij處的值是a i j sparsematrix ...
Qt使用Eigen矩陣庫
eigen官網 解壓後放在任意資料夾內,然後在qt專案中的pro檔案中加上eigen的目錄 如果沒有載入成功,重新構築即可 includepath d eigen3新增標頭檔案 include定義向量 字尾是變數型別,例如float矩陣是matrix2f vector2d a 5.0,6.0 cou...