2012-06-27 108 views
2

我有一個用C語言編寫的函數來計算特徵值和特徵向量,但由於我作爲另一個算法的一部分多次調用此函數,因此需要很長的CPU時間。根據Apple的說法,Accelerate framework可用於使用BLAS和LAPACK非常快速地從矩陣中找出特徵值。如何使用Accelerate框架從矩陣中找到特徵值和特徵向量?

因爲我是加速框架的新手,所以應該使用哪些函數來查找方矩陣的特徵值和特徵向量?

回答

3

這取決於您希望分解的矩陣字符。對於對稱/ Hermitian矩陣,帶對角矩陣或一般矩陣,Lapack有不同的例程。如果你有一個通用的矩陣(沒有特別的結構),你將需要使用廣義的Schur分解例程。這些例程在單精度和雙精度之間以及真正或複雜元素的矩陣之間進行劃分 - 就像所有Lapack一樣。

一般本徵問題求解器例程被命名爲:SGEEV CGEEV DGEEV ZGEEV其中S =單精度實,C =單精度複雜,d =雙精度實,Z =雙精度複雜。

IBM有一個很好的lapack在線參考,here's描述上述例程的鏈接。

祝你好運!

Paul

+2

這是一個很好的答案。我要強調的是,Accelerate框架中的LAPACK函數需要**列主要**順序(如Fortran中的數據),而不是行主要順序(與C中的常規順序相同)。這很容易成爲新手混淆和錯誤的最大來源。 – warrenm

+0

非常好的點warrenm - 越來越混淆可能是一個頭痛。 – Paul

+0

非常感謝您的回答,我會閱讀並嘗試實施 – pradeepa

相關問題