代碼如下:
SparseMatrix < double > A ( 4 , 4 ) ;
std :: vector < Triplet < double > > triplets ;
typedef Eigen::Triplet<double> T; //三元組(行,列,值)
// 初始化非零元素
int r [ 3 ] = { 0 , 1 , 2 } ;
int c [ 3 ] = { 1 , 2 , 2 } ;
double val [ 3 ] = { 6.1 , 7.2 , 8.3 } ;
for ( int i = 0 ; i < 3 ; i++ )
triplets.emplace_back(T(r[i],c[i],val[i])) ;
// 初始化稀疏矩陣
A . setFromTriplets ( triplets . begin ( ) , triplets . end ( ) ) ;
std :: cout << "A = \n" << A << std :: endl ;
// 一個QR分解的實體
SparseQR < SparseMatrix < double > , AMDOrdering < int > > qr ;
// 計算分解
qr . compute ( A ) ;
// 求一個A x = b
Vector4d b ( 1 , 2 , 3 , 4 ) ;
Vector4d x = qr . solve ( b ) ;
std :: cout << "x = \n" << x ;
std :: cout << "A x = \n" << A * x ;
return ;
產生錯誤:
YOU_CALLED_A_DYNAMIC_SIZE_METHOD_ON_A_FIXED_SIZE_MATRIX_OR_VECTOR
麻煩問下具體哪行代碼錯了。
uj5u.com熱心網友回復:
Vector4d x = qr . solve ( b ) ; 這條陳述句報錯,將Vector4d改為VertorXd即可轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/237357.html
標籤:C++ 語言
上一篇:在編譯器中運行的結果是對的,但在noi里顯示超時,怎么回事?怎么解決?
下一篇:在視窗運行不顯示!!
