Eigen庫求取最大特徵值和特徵向量

2021-07-30 12:13:42 字數 730 閱讀 6901

eigen庫中有求取矩陣特徵值和特徵向量的函式eigensolver,用起來很方便。

但是官網說明文件裡,求取特徵向量後僅僅是輸出來表示,如何使用求得的這些引數,我花了一點時間琢磨出來。

舉例如下:

matrixk= matrixxd::random(4,4);

eigensolverdouble, 4, 4>> es(k);

matrixxcd evecs = es.eigenvectors();//獲取矩陣特徵向量4*4,這裡定義的matrixxcd必須有c,表示獲得的是complex複數矩陣

matrixxcd evals = es.eigenvalues();//獲取矩陣特徵值 4*1

matrixxd evalsreal;//注意這裡定義的matrixxd裡沒有c

evalsreal=evals.real();//獲取特徵值實數部分

matrixxf::index evalsmax;

evalsreal.rowwise().sum().maxcoeff(&evalsmax);//得到最大特徵值的位置

vector4d q;

q << evecs.real()(0, evalsmax), evecs.real()(1, evalsmax), evecs.real()(2, evalsmax), evecs.real()(3, evalsmax);//得到對應特徵向量

eigen求特徵值和特徵向量

eigen matrix2d matrix 22 matrix 22 2,3,2,1 cout matrix n matrix 22 eigen eigensolvereigen solver matrix 22 cout matrix values n eigen solver.eigenvalu...

特徵值 特徵值 特徵子空間和秩

矩陣的秩和它的特徵值有什麼關係呢?假設我得到了乙個矩陣的特徵值,如何根據特徵值推斷它的秩呢?我們知道,矩陣的秩代表維數,矩陣的特徵值有幾何重數和代數重數之分,其中幾何重數代表著該特徵值對應的特徵向量構成的空間 即特徵子空間 的維數,也就是在這個空間裡的所有向量經過矩陣變換 a 都不改變方向,只改變大...

特徵值和特徵向量

在剛開始學的特徵值和特徵向量的時候只是知道了定義和式子,並沒有理解其內在的含義和應用,這段時間整理了相關的內容,跟大家分享一下 首先我們先把特徵值和特徵向量的定義複習一下 定義 設a是n階矩陣,如果數 和n維非零向量x使關係式 成立,那麼,這樣的數 稱為矩陣a的特徵值,非零向量x稱為a的對應於特徵值...