Eigen使用稀疏矩陣求解線性方程

2021-08-28 02:16:26 字數 1047 閱讀 1162

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...