Re: [問題] Eigen與matlab算出來的eigenvector不同

看板C_and_CPP (C/C++)作者 (眠月)時間13年前 (2013/01/03 22:27), 編輯推噓4(408)
留言12則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《lin780222 (饅頭)》之銘言: : 複數3X3矩陣求eigenvalue及eigenvector,Eigen求出的3個eigenvalue與matlab一致, : 但當求出的eigenvalue虛部不為0的時候,Eigen與matlab所求出的eigenvector不同。 : 餵入的資料(Input): : 3x3矩陣A : row1:11 -12 13 : row2:-4 -5 6 : row3:-2 -3 -4 : 拜託各位了,實在不清楚哪裡出問題,試了好久QQ 因為一般求 eigen value 的演算法是近似的解析解 實作細節不同,本來就會有不同的誤差,這很正常 想要代數解的話,就要避開浮點數運算誤差,用有理數去算 eigen 是 template library 可以試試看套用 boost::rational typedef Matrix<boost::rational<int>, 3, 3> Matrix3r; Matrix3r m; m << 11, -12, 13, -4, -5, 6, -2, -3, -4; 不過我不確定 boost::rational 跟 eigen 相處好不好。 你可能要自己試試看會不會動。 以前我線性代數作業都是寫程式用電腦算 一步一步列出運算順序,我再抄到紙上 -_-|| -- To iterate is human, to recurse, divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.43.156.82

01/04 00:04, , 1F
yoco大真強者....:) (直接印出來不是更好XD)
01/04 00:04, 1F

01/04 00:05, , 2F
因為教授要求要有計算過程 T__________T
01/04 00:05, 2F

01/04 00:06, , 3F
而且作業是要手寫的,嗚嗚
01/04 00:06, 3F

01/04 00:07, , 4F
(拍拍) 直接手寫source code給他叫他自己去run...XD
01/04 00:07, 4F

01/05 11:12, , 5F
謝謝你用心的解說^^
01/05 11:12, 5F

01/06 13:01, , 6F
後來有沒有成功阿?我很好奇 XD
01/06 13:01, 6F

01/06 23:14, , 7F
因為我後來試了複數矩陣(也就是每個元素虛部都不等於0,
01/06 23:14, 7F

01/06 23:15, , 8F
也有這個問題,所以推測可能跟精準度沒有直接的關係,所
01/06 23:15, 8F

01/06 23:20, , 9F
幸最終求得的係數並無受到影響,會導致eigenvector不一
01/06 23:20, 9F

01/06 23:23, , 10F
致,(透過請教Grad-ProbAsk)的版友,是說因為除了一維基
01/06 23:23, 10F

01/06 23:25, , 11F
底必會保有比例關係,其他維度之基底會有生成關係
01/06 23:25, 11F

01/07 16:28, , 12F
了解了解
01/07 16:28, 12F
文章代碼(AID): #1GvPL3_L (C_and_CPP)
文章代碼(AID): #1GvPL3_L (C_and_CPP)