(translator=roro, ChineseSource=roro-20020630-8\cholupdate.html, EnglishSource=c:\matlabr12\help\techdoc\ref\cholupdate.html)
MATLAB Function Reference    
cholupdate

行列 1 更新至 Cholesky 分解法

Syntax

Description

R1 = cholupdate(R,x) R = chol(A) 為原本對 A 的 Cholesky 分解法,回傳一 A + x*x' 的上三角 Cholesky 因子,x 為適當長度的行向量。cholupdate 僅使用 R 的對角線及上三角部份,下三角部份將被忽略。

R1 = cholupdate(R,x,'+') 等同於 R1 = cholupdate(R,x)。

R1 = cholupdate(R,x,'-') 回傳 A - x*x' 的 Cholesky 因子。當 R 不是一合理的 Cholesky 因子或當 downdated 矩陣不是正向定義且沒有經 Cholesky factorization,則會印出錯誤訊息。

[R1,p] = cholupdate(R,x,'-') 不會回傳錯誤訊息。若 p 為 0,R1 為 A - x*x' 的 Cholesky 因子。若 p 大於 0,R1 為原本 A 的 Cholesky 因子。若 p 為 1,cholupdate 會因為 downdated 矩陣不為正向定義而無法運作。若 p 為 2,cholupdate 會因為 R 的上三角部份不為合理的 Cholesky 因子而無法運作。

Remarks

cholupdate 僅對全矩陣(full matrices)作用。

Example

此稱為行列一更新成 A 既然 rank(x*x') 為 1:

使用 cholupdate 取代運用 R1 = chol(A + x*x') 計算 Cholesky 因子:

而後藉由對 A 中最後一個元素減去 1 來使其沒有正向定義(positive definiteness)。該 downdated 矩陣為:

比較 chol 及 cholupdate:

然而,從 A 的最後一個元素減去 0.5 產生一正向定義矩陣,我們可使用 cholupdate 計算其 Cholesky 因子:

Algorithm

cholupdate 的演算法為使用 LINPACK 子程序 ZCHUD 及 ZCHDD。cholupdate 用於計算新的 Cholesky 因子,為一種 的演算法,並用此方法簡易地更新已存在的因子為一種 的演算法。

References

Dongarra, J.J., J.R. Bunch, C.B. Moler, and G.W. Stewart, LINPACK Users' Guide, SIAM, Philadelphia, 1979.

See Also

chol, qrupdate


 cholinc cla