看板 MATLAB 關於我們 聯絡資訊
※ 引述《bob10590213 (C-AN)》之銘言: : 不好意思請問一下各位板友,我想問一個關於抓eigenvalue的問題, : 我的矩陣的eigenvalue是複數,我想要抓絕對值為1的那些,可是不 : 知道有什麼好的辦法;我本來是用eig直接硬做,然後再寫個if挑出 : 絕對值為1的那些,可是矩陣一大(10000,10000)好像就跑不動了,我 : 是用Mac Pro跑;所以我想問說,不知道有沒有其他指令可以使用或 : 者能不能用eigs來處理這個問題,謝謝。 都不行. 這個問題的關鍵點在於 memory issue. Matrix (1e^4, 1e^4), 需要 O(1e^8), 在我的 machine 大約用掉了 1 GB. SVD 會產生 U,S,V, 大致上和原來的 matrix 一樣大. 如果你只有 4GB 的 system memory, 那就暴掉了. 有兩個解決方法: 1. 找台 large memory machine 去做 但 SVD 的 time complexity 很高, 也許要很久. 2. 改用 linear equation, optimization search 簡單的解法: let x is the eigenvector, then we have A*x = x. (A-I)*x = 0 Let B = ( A- I ), we can write it as B* x = 0 Use quad-form, write a cost function f(x) = (B* x)' * (B* x ) Run the gradient search on f(x) you should be able to find x. Then, remove the corresponding vector from A, do it iteratively.. -- 趙客縵胡纓,吾鉤霜雪明。銀鞍照白馬,颯沓如流星。 十步殺一人,千里不留行。是了拂衣去,深藏身與名。 閑過信陵飲,脫劍膝前橫。將炙啖朱亥,持觴勸侯贏。 三杯吐然諾,五嶽倒為輕。眼花耳熱後,意氣素霓生。 就趙揮金錘,邯鄲先震驚。千秋二壯士,烜赫大梁城。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 76.170.77.172
bob10590213:先謝謝你這麼認真幫我,然後我想問的是,這樣不就只有 03/27 22:51
bob10590213:取到eigenvalue=1的,但是我可能需要eigenvalue絕對值 03/27 22:51
bob10590213:為1的那些耶!還是一樣可以這麼做? 03/27 22:52