2010-07-21 149 views
0

我有一個平方n * n矩陣S必須被分解成兩個矩陣的乘積 - A1和A2,其中A2是矩陣轉置爲A1(A2 = A1^T),所以A1 * A2 = S.有沒有任何算法可以有效地進行這樣的操作? C#/ C++解決方案會很好。矩陣分解

+0

這可能是一個更大的算法的一部分,很少有爲了好玩做線性代數:)如果你要包括的情況下,其中S是不是對稱的,那麼你還應該添加更大的問題。 否則,請在算法開始處添加對稱檢查,這將節省大量計算。 – Andrei 2010-07-21 18:07:47

+0

我正在做一些統計研究,並在某一點找到一個協方差矩陣,我必須執行這種操作。實際上,它必須是對稱的,但目前它不是(儘管事實上所有公式都是正確的)......似乎我需要在使用矩陣進行操作之前深入研究代碼。無論如何感謝提出的方法,這可能是它。 – Singularity 2010-07-21 18:28:26

+0

據我所知,協方差矩陣*必須是對稱的,在機器精度和累積誤差的範圍內。如果你得到一個明顯不對稱的協方差矩陣,那麼你的代碼可能有些根本錯誤。 – 2010-07-21 18:44:37

回答

2

在這種情況下,你可能想http://en.wikipedia.org/wiki/Cholesky_decomposition

+0

+1:我正要爲新版本的問題添加相同的鏈接。 – 2010-07-21 17:42:05

+0

如果S不是對稱的,該怎麼辦? – Singularity 2010-07-21 17:51:22

+0

@Singularity:使用(AB)^ T = B^T.A^T並且看到如果這樣的分解是可能的,那麼S = S^T。 – 2010-07-21 17:57:00