作者profyang (prof)
看板C_and_CPP
標題[問題] 科學計算函式庫GSL中eigen問題請教
時間Sat Jul 22 16:35:51 2017
開發平台(Platform): (Ex: Win10, Linux, ...)
Win7
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
MinGW
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
GNU Scientific Library(GSL)
問題(Question):
主要是最近Matlab用膩了,想換換比較有深度(?)的,就回來用用C++
雖然以前C++學得很爛,但基本的迴圈之類的不太可能忘
而我主要會需要用到程式的地方其實就如標題所說:科學計算,所以也夠用了
只要有個科學計算的函式庫應該可以很快上手?
所以看到有GSL這種東西當然就很高興地想給他下載
但是看到他的Documentation就卡住了
https://www.gnu.org/software/gsl/doc/html/index.html
我有一個一定要用到的功能就是解eigen value & eigen vector
但是doc上面:
Eigensystems
Real Symmetric Matrices
Complex Hermitian Matrices
Real Nonsymmetric Matrices
Real Generalized Symmetric-Definite Eigensystems
Complex Generalized Hermitian-Definite Eigensystems
Real Generalized Nonsymmetric Eigensystems
Sorting Eigenvalues and Eigenvectors
Examples
References and Further Reading
似乎是說他提供解Eigensystems只有上面幾種特殊矩陣
但我的矩陣不會是以上幾種有這麼好性質的特殊矩陣
查了wiki似乎也是說對於任意矩陣求eigen沒有什麼好的加速演算法
等於只能硬是去解他的eigen polynomial的root (det(A-xI)=0的根)
但是我找了半天好像也沒找到GSL有可以自動幫我列出eigen polynomial的係數的...
也就是我得自己寫個程式把任意矩陣的eigen polynomial的係數算出來嗎...?
不知道有沒有大大有遇過類似情形的?還是是我哪裡搞錯了請指證!謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.178.25
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1500712557.A.EA3.html
1F:推 sunev: Real Nonsymmetric Matrices ? 07/22 16:50
2F:→ profyang: 很不幸的我的矩陣是complex... 07/22 18:05
※ 編輯: profyang (114.37.178.25), 07/22/2017 18:22:25
3F:→ freeunixer: 直接用 python 吧,計算模組就是仿 matlab 的. 07/22 18:48
是阿,我現在正在考慮python和C++混用
因為有時也需要檔案IO,這部分python應該不夠快,Matlab就更慢了,應該還是C++最快
另外我自己找到了,GSL果然沒有我要的任意complex matrix的eigen問題
http://lists.nongnu.org/archive/html/help-gsl/2014-02/msg00008.html
居然要我去用LAPACK...但LAPCK又只有線代的部分...要你何用啊!!= =
※ 編輯: profyang (114.37.178.25), 07/22/2017 19:02:03
4F:推 longlongint: 解 eigen value 當然要用 EIGEN 啊(誤 07/22 19:45
感謝這位大大 這個不錯
查了一下居然說是速度可以跟intel的Math Kernel Library(MKL)比的
雖說現在MKL開放免費下載
不過前面忘了講我是不太想用MKL就是了
一來以後用的電腦的CPU未必一定是intel
二來...恩...intel有劣跡...阿不是 據說之前MKL會對非intel核心"最劣化"
我怕我沒有他的compiler(compiler要錢...)的話它也給我搞個最劣化...
※ 編輯: profyang (114.37.178.25), 07/22/2017 22:09:26
6F:推 soheadsome: 用python吧 一堆用gpu最佳化的函式庫都有人幫你包好 07/23 08:55
7F:→ longlongint: 推個python C語言是拿來寫別的語言的編譯器用的(誤 07/23 12:45
8F:推 gozule: C++封裝blas和lpack的函式庫Armadillo也可試試,很好上手 07/26 19:12
10F:推 Neisseria: 先用 Python 或 MATLAB 試模型會比較簡單 07/26 21:51
11F:→ Neisseria: 忘記原 po 先前就是用 MATLAB,歹勢,請忽略小弟留言 07/26 21:52
12F:→ Killercat: intel那個被告翻了 現在不敢再這樣搞了 07/26 23:37
13F:→ Killercat: 而且主要影響是TBL比較多 而非MKL 07/26 23:37
14F:→ Killercat: 抱歉 是TBB XD 不是TBL 07/26 23:38