2012-02-20 66 views

回答

5
import Numeric.LinearAlgebra  

orth :: Field a => Matrix a -> [Vector a] 
orth m = toColumns $ fst $ qr m 

或點免費

orth = toColumns . fst . qr 

Wikipedia有一個解釋。

1

也許這就是你需要:

orth m = toColumns u 
     where (u,_,_) = compactSVD m 

https://github.com/AlbertoRuiz/hmatrix/issues/10#issuecomment-4077403

+0

來自qr分解的旋轉q的列跨越整個空間。如果你想要輸入矩陣m的距離空間的正交基,那麼你必須只從q中選擇「rank m」列(使用SVD對矩陣秩進行數值估計)。或者,您可以像上面那樣使用compatSVD,但基礎矢量將會不同。 – 2012-02-22 08:40:25