作者yoco315 (眠月)
看板C_and_CPP
標題Re: [問題] Eigen與matlab算出來的eigenvector不同
時間Thu Jan 3 22:27:12 2013
※ 引述《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
推 VictorTom:yoco大真強者....:) (直接印出來不是更好XD) 01/04 00:04
→ yoco315:因為教授要求要有計算過程 T__________T 01/04 00:05
→ yoco315:而且作業是要手寫的,嗚嗚 01/04 00:06
→ VictorTom:(拍拍) 直接手寫source code給他叫他自己去run...XD 01/04 00:07
→ lin780222:謝謝你用心的解說^^ 01/05 11:12
→ yoco315:後來有沒有成功阿?我很好奇 XD 01/06 13:01
推 lin780222:因為我後來試了複數矩陣(也就是每個元素虛部都不等於0, 01/06 23:14
→ lin780222:也有這個問題,所以推測可能跟精準度沒有直接的關係,所 01/06 23:15
推 lin780222:幸最終求得的係數並無受到影響,會導致eigenvector不一 01/06 23:20
推 lin780222:致,(透過請教Grad-ProbAsk)的版友,是說因為除了一維基 01/06 23:23
→ lin780222:底必會保有比例關係,其他維度之基底會有生成關係 01/06 23:25
→ yoco315:了解了解 01/07 16:28