fbpx
维基百科

科列斯基分解

線性代數中,科列斯基分解(英語:Cholesky decompositionCholesky factorization)是指將一個正定埃爾米特矩陣分解成一個下三角矩陣與其共軛轉置乘積。這種分解方式在提高代數運算效率、蒙特卡羅方法等場合中十分有用。實數矩陣的科列斯基分解由安德烈-路易·科列斯基最先發明。實際應用中,科列斯基分解在求解線性方程組中的效率約兩倍於LU分解[1]

描述

對正定埃爾米特矩陣 進行科列斯基分解,即求矩陣 使下式成立

 

其中, 是一個下三角矩陣且所有對角元素均為正實數 表示 的共軛轉置。每一個正定埃爾米特矩陣都有一個唯一的科列斯基分解。[2]

當矩陣 是一個半正定的埃爾米特矩陣,若允許 的對角線元素為零,則 也存在上述形式的分解。[3]

 為實數矩陣,則 也為實數矩陣且科列斯基分解可改寫成 [4]

 正定矩陣時,科列斯基分解是唯一的,即只存在一個對角元素均嚴格大於零的下三角矩陣,使 成立。然而,當 是半正定時,分解則不一定是唯一的。

定理的逆命題自然成立:對於某些可逆矩陣 (下三角矩陣或其他矩陣),如果 可被寫成 ,則 是一個正定的埃爾米特矩陣。

LDL分解

經典科列斯基分解的一個變形是LDL分解,即

 

其中, 是一个單位下三角矩陣 是一個對角矩陣

該分解與經典科列斯基分解猶有關聯,如下:

 

或者,由於 的對角元素必須為 ,且  都是下三角矩陣,故如果已知經典科列斯基分解 ,則 形式可依下式求出,設S是包含 的對角元素的對角矩陣,

 
 

LDL變形如果得以有效執行,構造及使用時所需求的空間及計算的複雜性與經典科列斯基分解是相同的,但是可避免提取平方根[5]某些不存在科列斯基分解的不定矩陣,也可以執行LDL分解,此時矩陣 中會出現負數元素。因此人們更傾向於使用LDL分解。對於實數矩陣,該種分解的形式可被改寫成

 

此形式通常稱為LDLT分解(或LDLT分解)。它與實對稱矩陣的特徵分解密切相關,因為對於實對稱矩陣,存在特徵分解 

實例

以下乃一個實對稱矩陣的科列斯基分解︰

 

以下乃其LDLT分解︰

 

應用

科列斯基分解主要被用於線性方程組 的求解。如果A對稱正定的,我們可以先求出 ,隨後借向後替換法y求解 ,再以向前替換法x求解 即得最終解。

另一種可避免在計算 時需要解平方根的方法就是計算 ,然後對y求解 ,最後求解 

對於可以被改寫成對稱矩陣的線性方程組,科列斯基分解及其LDL變形是一個較高效率及較高數值穩定性的求解方法。相比之下,其效率幾近為LU分解的兩倍。[來源請求]

矩陣求逆

若欲對埃爾米特矩陣直接求逆,可以通過科列斯基分解,類似求解線性方程組一般求出逆矩陣,這需要 次運算( 次乘法運算)。 該方法即便要求逐步計算也非常有效率。

非埃爾米特矩陣 也可以通過下例性質求逆,因為其中 總是埃爾米特矩陣︰

 

計算

有各種各樣的方法用於計算科列斯基分解。 常用的演算法的計算複雜度在一般情況下為 [來源請求]

下面的算法何者較快取決於執行時的具體條件。總體而言,第一個算法會稍慢,因為其以一種不太尋常的方式讀取數據。

科列斯基算法

用於計算矩陣 科列斯基算法,是以高斯消元法為基礎而調整得來的。

遞歸算法由 開始,令

 

在步骤 ,矩陣 的形式如下:

 

其中, 代表 維的單位矩陣

此時定義矩陣 

 

隨即 可以被改寫成

 

其中

 

注意︰在此 是一個外積

重複此步驟直到    步之後,我們得到 。因此,所求的下三角矩陣 

 

科列斯基-巴那齊耶維茨及科列斯基-克勞特演算法

 
科列斯基-巴那齊耶維茨演算法以一個 5×5 矩陣執行的讀取順序(白色)及寫入順序(黄色)

寫出等式 

 

則得到矩陣 的元素的計算公式如下︰

 
 

只要 是實數正定矩陣,則平方根下的表達式恆為正。

對於複埃爾米特矩陣,則適用如下公式:

 
 

因此,要計算 只需利用其的左、上方元素的值。計算通常是以以下其中一種順序進行的。

  • 科列斯基-巴那齊耶維茨演算法從矩陣L的左上角開始,依行進行計算。
  • 科列斯基-克勞特演算法從矩陣L的左上角開始,依列進行計算。

若有需要,整個矩陣可以逐個元素計算得出,無論使用何種順序讀取。

計算的穩定性

假設我們要求解一個良置的線性方程組。採用了LU分解的算法,除非進行某種繞軸旋轉,否則是不穩定的;如果算法進行了繞軸旋轉,則其誤差取決於矩陣的增長因子,這個數通常(但非總是)很小。

現在,假設算法適用科列斯基分解。如上所述,算法的效率將會是原來的兩倍。此外,無必要進行繞軸旋轉且誤差總是很小。具體而言,若要求解  表示已計算出的解,然後能解出干擾方程組 ,其中

 

在這裡, 是指矩陣2-範數,而 是一個取決於 的小常數, 表示單位捨入英语Unit round-off

值得一提的是,科列斯基分解與平方根的使用有關。如果被分解的矩陣是正定的,那麽只要運算精確,矩陣中帶有平方根的元素的平方根下的數字永遠是正數。不幸的是,由於存在捨入誤差,這些數字可能為負數,並使算法擱淺。然而,此種情況僅當矩陣為病態時才會出現。一種可解決此問題的方法,是增添一個對角修正矩陣至待分解矩陣,以增加矩陣的正定性。[6] 此法雖或將減少分解的準確性,但有在某些情況卻頗有作為;譬如,執行應用於最優化的牛頓法時,若初期值距最優值較遠,則此時引入對角矩陣可以提高演算法的穩定性。

LDL分解

科列斯基分解的另一種形式——LDL分解的計算方式如下所示,

 

如果   是實數矩陣,下述之遞歸計算式適用於矩陣   及   中的所有元素︰

 
 

如果  複埃爾米特矩陣,則矩陣    的計算適用以下公式:

 
 

同樣地,若有需求,該讀取順序可以逐一計算矩陣中的每一個元素。

分塊矩陣變形

 是一個不定矩陣時,LDL分解在未經過謹慎的繞軸旋轉的情況下是不穩定的;[7] 特別是,分解出的矩陣的元素可能是任意的。一个可取的改進手段是執行矩陣分塊後再執行分解,通常將原矩陣分為包含 的小矩陣的分塊矩陣:[8]

 

在此,矩陣中每一個元素都是一個子矩陣。故此,可依照上述遞歸公式類比計算:

 
 

上述計算涉及矩陣相乘同精確的求逆,故而實踐中不能使用過大的分塊矩陣。

修正分解

在實踐中經常有修正科列斯基分解的需求。即,經已計算一些矩陣 的科列斯基分解 ,然後在 上稍作修改而產生的矩陣 ,欲對其進行一個修正的科列斯基分解 。問題是,能否用已知的 的分解去修正 的分解。

秩為1的修正(相加)

如果修正矩陣 ,則其修正的分解被稱為秩為1的修正(相加)。。

以下是一個 MATLAB 語言寫的實現秩為1的修正的小程式:

function [L] = cholupdate(L,x)  n = length(x);  for k=1:n  r = sqrt(L(k,k)^2 + x(k)^2);  c = r / L(k, k);  s = x(k) / L(k, k);  L(k, k) = r;  L(k+1:n,k) = (L(k+1:n,k) + s*x(k+1:n)) / c;  x(k+1:n) = c*x(k+1:n) - s*L(k+1:n,k);  end end 

秩為1的修正(相減)

如果 ,那麽只有當 仍然是正定的時候該方法才適用。 此條件下,上面的代碼也可用於相減的情況,只需要將rL(k+1:n,k)的賦值式的加號替換成减號。

證明半正定矩陣的科列斯基分解唯一

上面的演算法表明,每一個正定矩陣 都有一個科列斯基分解。此結論可以加入一些限制條件後,推廣到半正定的情況。但該條件並未被完全建立,例如,它未給出明確的數值演算法以計算科列斯基因子。

如果 是一個 的半正定矩陣,則序列 是一個由正定矩陣構成的序列。而且,在算子範數

 

在正定的情形下,每一個 都有其科列斯基分解 。根據算子範數的性質,

 

因而 是算子巴拿赫空间上的一個有界,因此是相对紧空間英语Relaviely compact space(因為基礎向量空間是有限維的)。因此,它有一個帶有限制 收斂子序列,也記作 。容易驗證,矩陣 具有所需的特性,例如,滿足 以及 是下三角矩陣且其對角元素非負。對於所有的  都有,

 

因此, 。因为基礎向量空間是有限維的,所以算子空間的所有拓撲結構都是等價的。故此,範數上 收斂於 ,意味着, 的每個元素都獨立地收斂於 。此同時暗示,由於每個 都是對角元素非負的下三角矩陣, 亦如此。

推廣

科列斯基分解可以推廣到元素中包含算子的矩陣(稱為算子矩陣)。[來源請求] 希爾伯特空間上的一個序列。考慮如下算子矩陣

 

滿足直和

 

其中每一個

 

都是一個有界算子。如果 是正定或半正定的,即對於有限的 及任意的

 

都有 ,則存在一個下三角的算子矩陣 使得 。此外也可以把 的對角元素化為正數。

用程式語言實現

  • C語言GNU科學庫提供了幾個科列斯基分解的實現。
  • Maxima電腦代數系統︰函數Cholesky可用於計算科列斯基分解。
  • GNU Octave数值計算系統提供了一些函數以計算,修正和应用科列斯基分解。
  • LAPACK庫提供了一个高性能的科列斯基分解的實現,可以以FortranC語言及其他大多數語言讀取。
  • Python中,numpy.linalg模塊中的命令Cholesky可執行科列斯基分解。
  • Matlab中,chol命令可以簡單地對一個矩陣進行科列斯基分解。
  • R語言中,chol函數可進行科列斯基分解。
  • Wolfram Mathematica中,函數CholeskyDecomposition可以對一個矩陣執行科列斯基分解。
  • C++中,armadillo庫英语Armadillo (C++ library)中的命令chol可執行科列斯基分解。特徵庫提供了稀疏矩陣和稠密矩陣的科列斯基分解。
  • Analytica英语Analytica (software)中,函數Decompose提供科列斯基分解。
  • Apache Commons數學庫中有科列斯基分解的實現,可應用於JavaScala及任何其他JVM語言

參見

腳註

  1. ^ Press, William H.; Saul A. Teukolsky; William T. Vetterling; Brian P. Flannery. . Cambridge University England EPress. 1992: 994 [2017-08-30]. ISBN 0-521-43108-5. (原始内容存档于2018-08-25). 
  2. ^ Golub & Van Loan (1996, p. 143), Horn & Johnson (1985, p. 407), Trefethen & Bau (1997, p. 174)
  3. ^ Golub & Van Loan (1996, p. 147)
  4. ^ Horn & Johnson (1985, p. 407)
  5. ^ Krishnamoorthy, Aravindh; Menon, Deepak. Matrix Inversion Using Cholesky Decomposition 1111: 4144. 2011. Bibcode:2011arXiv1111.4144K. arXiv:1111.4144 . 
  6. ^ Fang, Haw-ren; O’Leary, Dianne P. Modified Cholesky Algorithms: A Catalog with New Approaches (PDF). 8 August 2006 [2017-08-30]. (原始内容 (PDF)于2017-05-16). 
  7. ^ Nocedal, Jorge. Numerical Optimization. Springer. 2000. 
  8. ^ Fang, Haw-ren. Analysis of Block LDLT Factorizations for Symmetric Indefinite Matrices. 24 August 2007. 

參考文獻

  • Dereniowski, Dariusz; Kubale, Marek. (PDF). Lecture Notes on Computer Science 3019. Springer-Verlag: 985–992. 2004 [2017-08-30]. ISBN 978-3-540-21946-0. doi:10.1007/978-3-540-24669-5_127. (原始内容 (PDF)存档于2011-07-16).  |contribution=被忽略 (帮助).
  • Golub, Gene H.; Van Loan, Charles F. Matrix Computations 3rd. Baltimore: Johns Hopkins. 1996. ISBN 978-0-8018-5414-9. 
  • Horn, Roger A.; Johnson, Charles R. Matrix Analysis. Cambridge University Press. 1985. ISBN 0-521-38632-2. .
  • S. J. Julier and J. K. Uhlmann. "A General Method for Approximating Nonlinear Transformations of ProbabilityDistributions".
  • S. J. Julier and J.K. Uhlmann, "A new extension of the Kalman filter to nonlinear systems," in Proc. AeroSense: 11th Int. Symp. Aerospace/Defence Sensing, Simulation and Controls, 1997, pp. 182–193.
  • Trefethen, Lloyd N.; Bau, David. Numerical linear algebra. Philadelphia: Society for Industrial and Applied Mathematics. 1997. ISBN 978-0-89871-361-9. .

外部連結

科学史

  • Sur la résolution numérique des systèmes d'équations linéaires, Cholesky's 1910 manuscript, online and analyzed on BibNum(页面存档备份,存于互联网档案馆) (法文) (英文) [for English, click 'A télécharger']

資訊

電腦代碼

模擬中矩陣的利用

線上計算機

  • ,可執行科列斯基分解。

科列斯基分解, 此條目的引用需要进行清理, 使其符合格式, 2017年8月30日, 参考文献应符合正确的引用, 脚注及外部链接格式, 線性代數中, 英語, cholesky, decomposition, cholesky, factorization, 是指將一個正定的埃爾米特矩陣分解成一個下三角矩陣與其共軛轉置之乘積, 這種分解方式在提高代數運算效率, 蒙特卡羅方法等場合中十分有用, 實數矩陣的由安德烈, 路易, 科列斯基最先發明, 實際應用中, 在求解線性方程組中的效率約兩倍於lu分解, 目录, 描述, ld. 此條目的引用需要进行清理 使其符合格式 2017年8月30日 参考文献应符合正确的引用 脚注及外部链接格式 線性代數中 科列斯基分解 英語 Cholesky decomposition 或 Cholesky factorization 是指將一個正定的埃爾米特矩陣分解成一個下三角矩陣與其共軛轉置之乘積 這種分解方式在提高代數運算效率 蒙特卡羅方法等場合中十分有用 實數矩陣的科列斯基分解由安德烈 路易 科列斯基最先發明 實際應用中 科列斯基分解在求解線性方程組中的效率約兩倍於LU分解 1 目录 1 描述 2 LDL分解 3 實例 4 應用 4 1 矩陣求逆 5 計算 5 1 科列斯基算法 5 2 科列斯基 巴那齊耶維茨及科列斯基 克勞特演算法 5 3 計算的穩定性 5 4 LDL分解 5 5 分塊矩陣變形 5 6 修正分解 5 6 1 秩為1的修正 相加 5 6 2 秩為1的修正 相減 6 證明半正定矩陣的科列斯基分解唯一 7 推廣 8 用程式語言實現 9 參見 10 腳註 11 參考文獻 12 外部連結 12 1 科学史 12 2 資訊 12 3 電腦代碼 12 4 模擬中矩陣的利用 12 5 線上計算機描述 编辑對正定埃爾米特矩陣A displaystyle mathbf A 進行科列斯基分解 即求矩陣L displaystyle mathbf L 使下式成立 A L L displaystyle mathbf A mathbf LL 其中 L displaystyle mathbf L 是一個下三角矩陣且所有對角元素均為正實數 L displaystyle mathbf L 表示L displaystyle mathbf L 的共軛轉置 每一個正定埃爾米特矩陣都有一個唯一的科列斯基分解 2 當矩陣A displaystyle mathbf A 是一個半正定的埃爾米特矩陣 若允許L displaystyle mathbf L 的對角線元素為零 則A displaystyle mathbf A 也存在上述形式的分解 3 當A displaystyle mathbf A 為實數矩陣 則L displaystyle mathbf L 也為實數矩陣且科列斯基分解可改寫成A L L T displaystyle mathbf A mathbf LL mathbf T 4 當A displaystyle mathbf A 是正定矩陣時 科列斯基分解是唯一的 即只存在一個對角元素均嚴格大於零的下三角矩陣 使A L L displaystyle mathbf A mathbf LL 成立 然而 當A displaystyle mathbf A 是半正定時 分解則不一定是唯一的 定理的逆命題自然成立 對於某些可逆矩陣L displaystyle mathbf L 下三角矩陣或其他矩陣 如果A displaystyle mathbf A 可被寫成L L displaystyle mathbf LL 則A displaystyle mathbf A 是一個正定的埃爾米特矩陣 LDL分解 编辑經典科列斯基分解的一個變形是LDL分解 即 A L D L displaystyle mathbf A mathbf LDL dd 其中 L displaystyle mathbf L 是一个單位下三角矩陣 D displaystyle mathbf D 是一個對角矩陣 該分解與經典科列斯基分解猶有關聯 如下 A L D L L D 1 2 D 1 2 L L D 1 2 L D 1 2 displaystyle mathbf A mathbf LDL mathbf LD frac 1 2 mathbf D frac 1 2 mathbf L mathbf LD frac 1 2 mathbf LD frac 1 2 或者 由於L displaystyle mathbf L 的對角元素必須為1 displaystyle 1 且L C h o l e s k y displaystyle mathbf L Cholesky 與L displaystyle mathbf L 都是下三角矩陣 故如果已知經典科列斯基分解L C h o l e s k y displaystyle mathbf L Cholesky 則L D L T displaystyle mathbf LDL T 形式可依下式求出 設S是包含L C h o l e s k y displaystyle mathbf L Cholesky 的對角元素的對角矩陣 D S 2 displaystyle mathbf D mathbf S 2 L L C h o l e s k y S 1 displaystyle mathbf L mathbf L Cholesky mathbf S 1 LDL變形如果得以有效執行 構造及使用時所需求的空間及計算的複雜性與經典科列斯基分解是相同的 但是可避免提取平方根 5 某些不存在科列斯基分解的不定矩陣 也可以執行LDL分解 此時矩陣D displaystyle mathbf D 中會出現負數元素 因此人們更傾向於使用LDL分解 對於實數矩陣 該種分解的形式可被改寫成 A L D L T displaystyle mathbf A mathbf LDL mathbf T 此形式通常稱為LDLT分解 或LDLT分解 它與實對稱矩陣的特徵分解密切相關 因為對於實對稱矩陣 存在特徵分解A Q L Q T displaystyle mathbf A mathbf Q Lambda Q mathbf T 實例 编辑以下乃一個實對稱矩陣的科列斯基分解 4 12 16 12 37 43 16 43 98 2 0 0 6 1 0 8 5 3 2 6 8 0 1 5 0 0 3 displaystyle begin aligned left begin array 3 r 4 amp 12 amp 16 12 amp 37 amp 43 16 amp 43 amp 98 end array right left begin array 3 r 2 amp 0 amp 0 6 amp 1 amp 0 8 amp 5 amp 3 end array right left begin array 3 r 2 amp 6 amp 8 0 amp 1 amp 5 0 amp 0 amp 3 end array right end aligned 以下乃其LDLT分解 4 12 16 12 37 43 16 43 98 1 0 0 3 1 0 4 5 1 4 0 0 0 1 0 0 0 9 1 3 4 0 1 5 0 0 1 displaystyle begin aligned left begin array 3 r 4 amp 12 amp 16 12 amp 37 amp 43 16 amp 43 amp 98 end array right amp left begin array 3 r 1 amp 0 amp 0 3 amp 1 amp 0 4 amp 5 amp 1 end array right left begin array 3 r 4 amp 0 amp 0 0 amp 1 amp 0 0 amp 0 amp 9 end array right left begin array 3 r 1 amp 3 amp 4 0 amp 1 amp 5 0 amp 0 amp 1 end array right end aligned 應用 编辑科列斯基分解主要被用於線性方程組A x b displaystyle mathbf Ax mathbf b 的求解 如果A是對稱正定的 我們可以先求出A L L T displaystyle mathbf A mathbf LL mathbf T 隨後借向後替換法對y求解L y b displaystyle mathbf Ly mathbf b 再以向前替換法對x求解L T x y displaystyle mathbf L mathbf T mathbf x mathbf y 即得最終解 另一種可避免在計算L L T displaystyle mathbf LL mathbf T 時需要解平方根的方法就是計算A L D L T displaystyle mathbf A mathbf LDL mathrm T 然後對y求解L y b displaystyle mathbf Ly mathbf b 最後求解D L T x y displaystyle mathbf DL mathrm T mathbf x mathbf y 對於可以被改寫成對稱矩陣的線性方程組 科列斯基分解及其LDL變形是一個較高效率及較高數值穩定性的求解方法 相比之下 其效率幾近為LU分解的兩倍 來源請求 矩陣求逆 编辑 若欲對埃爾米特矩陣直接求逆 可以通過科列斯基分解 類似求解線性方程組一般求出逆矩陣 這需要n 3 displaystyle n 3 次運算 1 2 n 3 displaystyle frac 1 2 n 3 次乘法運算 該方法即便要求逐步計算也非常有效率 非埃爾米特矩陣B displaystyle mathbf B 也可以通過下例性質求逆 因為其中B B displaystyle mathbf BB 總是埃爾米特矩陣 B 1 B B B 1 displaystyle mathbf B 1 mathbf B mathbf BB 1 計算 编辑有各種各樣的方法用於計算科列斯基分解 常用的演算法的計算複雜度在一般情況下為O n 3 displaystyle O n 3 來源請求 下面的算法何者較快取決於執行時的具體條件 總體而言 第一個算法會稍慢 因為其以一種不太尋常的方式讀取數據 科列斯基算法 编辑 用於計算矩陣L displaystyle mathbf L 的科列斯基算法 是以高斯消元法為基礎而調整得來的 遞歸算法由i 1 displaystyle i 1 開始 令 A 1 A displaystyle mathbf A 1 mathbf A 在步骤i displaystyle i 矩陣A i displaystyle A i 的形式如下 A i I i 1 0 0 0 a i i b i 0 b i B i displaystyle mathbf A i begin pmatrix mathbf I i 1 amp 0 amp 0 0 amp a i i amp mathbf b i 0 amp mathbf b i amp mathbf B i end pmatrix 其中 I i 1 displaystyle mathbf I i 1 代表i 1 displaystyle i 1 維的單位矩陣 此時定義矩陣L i displaystyle mathbf L i 為 L i I i 1 0 0 0 a i i 0 0 1 a i i b i I n i displaystyle mathbf L i begin pmatrix mathbf I i 1 amp 0 amp 0 0 amp sqrt a i i amp 0 0 amp frac 1 sqrt a i i mathbf b i amp mathbf I n i end pmatrix 隨即A i displaystyle mathbf A i 可以被改寫成 A i L i A i 1 L i displaystyle mathbf A i mathbf L i mathbf A i 1 mathbf L i 其中 A i 1 I i 1 0 0 0 1 0 0 0 B i 1 a i i b i b i displaystyle mathbf A i 1 begin pmatrix mathbf I i 1 amp 0 amp 0 0 amp 1 amp 0 0 amp 0 amp mathbf B i frac 1 a i i mathbf b i mathbf b i end pmatrix 注意 在此b i b i displaystyle mathbf b i mathbf b i 是一個外積 重複此步驟直到i displaystyle i 從1 displaystyle 1 到n displaystyle n n displaystyle n 步之後 我們得到A n 1 I displaystyle A n 1 mathbf I 因此 所求的下三角矩陣L displaystyle L 為 L L 1 L 2 L n displaystyle mathbf L mathbf L 1 mathbf L 2 dots mathbf L n 科列斯基 巴那齊耶維茨及科列斯基 克勞特演算法 编辑 科列斯基 巴那齊耶維茨演算法以一個 5 5 矩陣執行的讀取順序 白色 及寫入順序 黄色 寫出等式A L L displaystyle mathbf A mathbf LL A L L T L 11 0 0 L 21 L 22 0 L 31 L 32 L 33 L 11 L 21 L 31 0 L 22 L 32 0 0 L 33 L 11 2 symmetric L 21 L 11 L 21 2 L 22 2 L 31 L 11 L 31 L 21 L 32 L 22 L 31 2 L 32 2 L 33 2 displaystyle begin aligned mathbf A LL T amp begin pmatrix mathbf L 11 amp 0 amp 0 mathbf L 21 amp mathbf L 22 amp 0 mathbf L 31 amp mathbf L 32 amp mathbf L 33 end pmatrix begin pmatrix mathbf L 11 amp mathbf L 21 amp mathbf L 31 0 amp mathbf L 22 amp mathbf L 32 0 amp 0 amp mathbf L 33 end pmatrix amp begin pmatrix mathbf L 11 2 amp amp text symmetric mathbf L 21 mathbf L 11 amp mathbf L 21 2 mathbf L 22 2 amp mathbf L 31 mathbf L 11 amp mathbf L 31 mathbf L 21 mathbf L 32 mathbf L 22 amp mathbf L 31 2 mathbf L 32 2 mathbf L 33 2 end pmatrix end aligned 則得到矩陣L displaystyle mathbf L 的元素的計算公式如下 L j j A j j k 1 j 1 L j k 2 displaystyle mathbf L j j sqrt A j j sum k 1 j 1 mathbf L j k 2 L i j 1 L j j A i j k 1 j 1 L i k L j k for i gt j displaystyle mathbf L i j frac 1 mathbf L j j left A i j sum k 1 j 1 mathbf L i k mathbf L j k right qquad text for i gt j 只要A displaystyle mathbf A 是實數正定矩陣 則平方根下的表達式恆為正 對於複埃爾米特矩陣 則適用如下公式 L j j A j j k 1 j 1 L j k L j k displaystyle mathbf L j j sqrt A j j sum k 1 j 1 mathbf L j k mathbf L j k L i j 1 L j j A i j k 1 j 1 L i k L j k for i gt j displaystyle mathbf L i j frac 1 mathbf L j j left mathbf A i j sum k 1 j 1 mathbf L i k mathbf L j k right qquad text for i gt j 因此 要計算L i j i j displaystyle mathbf L i j i neq j 只需利用其的左 上方元素的值 計算通常是以以下其中一種順序進行的 科列斯基 巴那齊耶維茨演算法從矩陣L的左上角開始 依行進行計算 科列斯基 克勞特演算法從矩陣L的左上角開始 依列進行計算 若有需要 整個矩陣可以逐個元素計算得出 無論使用何種順序讀取 計算的穩定性 编辑 假設我們要求解一個良置的線性方程組 採用了LU分解的算法 除非進行某種繞軸旋轉 否則是不穩定的 如果算法進行了繞軸旋轉 則其誤差取決於矩陣的增長因子 這個數通常 但非總是 很小 現在 假設算法適用科列斯基分解 如上所述 算法的效率將會是原來的兩倍 此外 無必要進行繞軸旋轉且誤差總是很小 具體而言 若要求解A x b displaystyle mathbf Ax mathbf b y displaystyle mathbf y 表示已計算出的解 然後能解出干擾方程組 A E y b displaystyle mathbf A mathbf E mathbf y mathbf b 其中 E 2 c n e A 2 displaystyle mathbf E 2 leq c n varepsilon mathbf A 2 在這裡 2 displaystyle quad 2 是指矩陣2 範數 而c n displaystyle c n 是一個取決於n displaystyle n 的小常數 e displaystyle varepsilon 表示單位捨入 英语 Unit round off 值得一提的是 科列斯基分解與平方根的使用有關 如果被分解的矩陣是正定的 那麽只要運算精確 矩陣中帶有平方根的元素的平方根下的數字永遠是正數 不幸的是 由於存在捨入誤差 這些數字可能為負數 並使算法擱淺 然而 此種情況僅當矩陣為病態時才會出現 一種可解決此問題的方法 是增添一個對角修正矩陣至待分解矩陣 以增加矩陣的正定性 6 此法雖或將減少分解的準確性 但有在某些情況卻頗有作為 譬如 執行應用於最優化的牛頓法時 若初期值距最優值較遠 則此時引入對角矩陣可以提高演算法的穩定性 LDL分解 编辑 科列斯基分解的另一種形式 LDL分解的計算方式如下所示 A L D L T 1 0 0 L 21 1 0 L 31 L 32 1 D 1 0 0 0 D 2 0 0 0 D 3 1 L 21 L 31 0 1 L 32 0 0 1 D 1 s y m m e t r i c L 21 D 1 L 21 2 D 1 D 2 L 31 D 1 L 31 L 21 D 1 L 32 D 2 L 31 2 D 1 L 32 2 D 2 D 3 displaystyle begin aligned mathbf A LDL mathrm T amp begin pmatrix 1 amp 0 amp 0 L 21 amp 1 amp 0 L 31 amp L 32 amp 1 end pmatrix begin pmatrix D 1 amp 0 amp 0 0 amp D 2 amp 0 0 amp 0 amp D 3 end pmatrix begin pmatrix 1 amp L 21 amp L 31 0 amp 1 amp L 32 0 amp 0 amp 1 end pmatrix amp begin pmatrix D 1 amp amp mathrm symmetric L 21 D 1 amp L 21 2 D 1 D 2 amp L 31 D 1 amp L 31 L 21 D 1 L 32 D 2 amp L 31 2 D 1 L 32 2 D 2 D 3 end pmatrix end aligned 如果 A displaystyle mathbf A 是實數矩陣 下述之遞歸計算式適用於矩陣 D displaystyle mathbf D 及 L displaystyle mathbf L 中的所有元素 D j A j j k 1 j 1 L j k 2 D k displaystyle D j A jj sum k 1 j 1 L jk 2 D k L i j 1 D j A i j k 1 j 1 L i k L j k D k for i gt j displaystyle L ij frac 1 D j left A ij sum k 1 j 1 L ik L jk D k right qquad text for i gt j 如果 A displaystyle mathbf A 是複埃爾米特矩陣 則矩陣 D displaystyle mathbf D 及 L displaystyle mathbf L 的計算適用以下公式 D j A j j k 1 j 1 L j k L j k D k displaystyle D j A jj sum k 1 j 1 L jk L jk D k L i j 1 D j A i j k 1 j 1 L i k L j k D k for i gt j displaystyle L ij frac 1 D j left A ij sum k 1 j 1 L ik L jk D k right qquad text for i gt j 同樣地 若有需求 該讀取順序可以逐一計算矩陣中的每一個元素 分塊矩陣變形 编辑 當A displaystyle mathbf A 是一個不定矩陣時 LDL分解在未經過謹慎的繞軸旋轉的情況下是不穩定的 7 特別是 分解出的矩陣的元素可能是任意的 一个可取的改進手段是執行矩陣分塊後再執行分解 通常將原矩陣分為包含2 2 displaystyle 2 times 2 的小矩陣的分塊矩陣 8 A L D L T I 0 0 L 21 I 0 L 31 L 32 I D 1 0 0 0 D 2 0 0 0 D 3 I L 21 T L 31 T 0 I L 32 T 0 0 I D 1 s y m m e t r i c L 21 D 1 L 21 D 1 L 21 T D 2 L 31 D 1 L 31 D 1 L 21 T L 32 D 2 L 31 D 1 L 31 T L 32 D 2 L 32 T D 3 displaystyle begin aligned mathbf A LDL mathrm T amp begin pmatrix mathbf I amp 0 amp 0 mathbf L 21 amp mathbf I amp 0 mathbf L 31 amp mathbf L 32 amp mathbf I end pmatrix begin pmatrix mathbf D 1 amp 0 amp 0 0 amp mathbf D 2 amp 0 0 amp 0 amp mathbf D 3 end pmatrix begin pmatrix mathbf I amp mathbf L 21 mathrm T amp mathbf L 31 mathrm T 0 amp mathbf I amp mathbf L 32 mathrm T 0 amp 0 amp mathbf I end pmatrix amp begin pmatrix mathbf D 1 amp amp mathrm symmetric mathbf L 21 mathbf D 1 amp mathbf L 21 mathbf D 1 mathbf L 21 mathrm T mathbf D 2 amp mathbf L 31 mathbf D 1 amp mathbf L 31 mathbf D 1 mathbf L 21 mathrm T mathbf L 32 mathbf D 2 amp mathbf L 31 mathbf D 1 mathbf L 31 mathrm T mathbf L 32 mathbf D 2 mathbf L 32 mathrm T mathbf D 3 end pmatrix end aligned 在此 矩陣中每一個元素都是一個子矩陣 故此 可依照上述遞歸公式類比計算 D j A j j k 1 j 1 L j k D k L j k T displaystyle mathbf D j mathbf A jj sum k 1 j 1 mathbf L jk mathbf D k mathbf L jk mathrm T L i j A i j k 1 j 1 L i k D k L j k T D j 1 displaystyle mathbf L ij left mathbf A ij sum k 1 j 1 mathbf L ik mathbf D k mathbf L jk mathrm T right mathbf D j 1 上述計算涉及矩陣相乘同精確的求逆 故而實踐中不能使用過大的分塊矩陣 修正分解 编辑 在實踐中經常有修正科列斯基分解的需求 即 經已計算一些矩陣A displaystyle mathbf A 的科列斯基分解A L L displaystyle mathbf A mathbf LL 然後在A displaystyle mathbf A 上稍作修改而產生的矩陣A displaystyle tilde mathbf A 欲對其進行一個修正的科列斯基分解A L L displaystyle tilde mathbf A tilde mathbf L tilde mathbf L 問題是 能否用已知的A displaystyle mathbf A 的分解去修正A displaystyle tilde mathbf A 的分解 秩為1的修正 相加 编辑 如果修正矩陣A A x x displaystyle tilde mathbf A mathbf A mathbf xx 則其修正的分解被稱為秩為1的修正 相加 以下是一個 MATLAB 語言寫的實現秩為1的修正的小程式 function L cholupdate L x n length x for k 1 n r sqrt L k k 2 x k 2 c r L k k s x k L k k L k k r L k 1 n k L k 1 n k s x k 1 n c x k 1 n c x k 1 n s L k 1 n k end end 秩為1的修正 相減 编辑 如果A A x x displaystyle tilde mathbf A mathbf A mathbf x mathbf x 那麽只有當A displaystyle tilde mathbf A 仍然是正定的時候該方法才適用 此條件下 上面的代碼也可用於相減的情況 只需要將r和L k 1 n k 的賦值式的加號替換成减號 證明半正定矩陣的科列斯基分解唯一 编辑上面的演算法表明 每一個正定矩陣A displaystyle A 都有一個科列斯基分解 此結論可以加入一些限制條件後 推廣到半正定的情況 但該條件並未被完全建立 例如 它未給出明確的數值演算法以計算科列斯基因子 如果A displaystyle A 是一個n n displaystyle n times n 的半正定矩陣 則序列 A A 1 k I n displaystyle mathbf A mathbf A 1 k mathbf I n 是一個由正定矩陣構成的序列 而且 在算子範數中 A k A displaystyle mathbf A k rightarrow mathbf A 在正定的情形下 每一個A k displaystyle mathbf A k 都有其科列斯基分解A k L k L k displaystyle mathbf A k mathbf L k mathbf L k 根據算子範數的性質 L k 2 L k L k A k displaystyle mathbf L k 2 leq mathbf L k mathbf L k mathbf A k 因而 L k displaystyle mathbf L k 是算子巴拿赫空间上的一個有界集 因此是相对紧空間 英语 Relaviely compact space 因為基礎向量空間是有限維的 因此 它有一個帶有限制L displaystyle mathbf L 收斂子序列 也記作 L k displaystyle mathbf L k 容易驗證 矩陣L displaystyle mathbf L 具有所需的特性 例如 滿足A L L displaystyle mathbf A mathbf LL 以及L displaystyle mathbf L 是下三角矩陣且其對角元素非負 對於所有的x displaystyle x 和y displaystyle y 都有 A x y lim A k x y lim L k L k x y L L x y displaystyle langle mathbf A x y rangle langle lim mathbf A k x y rangle langle lim mathbf L k mathbf L k x y rangle langle mathbf L mathbf L x y rangle 因此 A L L displaystyle mathbf A mathbf LL 因为基礎向量空間是有限維的 所以算子空間的所有拓撲結構都是等價的 故此 範數上L k displaystyle mathbf L k 收斂於L displaystyle mathbf L 意味着 L k displaystyle mathbf L k 的每個元素都獨立地收斂於L displaystyle mathbf L 此同時暗示 由於每個L k displaystyle mathbf L k 都是對角元素非負的下三角矩陣 L displaystyle mathbf L 亦如此 推廣 编辑科列斯基分解可以推廣到元素中包含算子的矩陣 稱為算子矩陣 來源請求 令 H n displaystyle mathcal H n 是希爾伯特空間上的一個序列 考慮如下算子矩陣 A A 11 A 12 A 13 A 12 A 22 A 23 A 13 A 23 A 33 displaystyle mathbf A begin bmatrix mathbf A 11 amp mathbf A 12 amp mathbf A 13 amp mathbf A 12 amp mathbf A 22 amp mathbf A 23 amp mathbf A 13 amp mathbf A 23 amp mathbf A 33 amp amp amp amp ddots end bmatrix 滿足直和 H n H n displaystyle mathcal H oplus n mathcal H n 其中每一個 A i j H j H i displaystyle mathbf A ij mathcal H j rightarrow mathcal H i 都是一個有界算子 如果A displaystyle mathbf A 是正定或半正定的 即對於有限的k displaystyle k 及任意的 h n 1 k H k displaystyle h in oplus n 1 k mathcal H k 都有 h A h 0 displaystyle langle h mathbf A h rangle geq 0 則存在一個下三角的算子矩陣L displaystyle mathbf L 使得A L L displaystyle mathbf A mathbf LL 此外也可以把L displaystyle mathbf L 的對角元素化為正數 用程式語言實現 编辑C語言 GNU科學庫提供了幾個科列斯基分解的實現 Maxima電腦代數系統 函數Cholesky可用於計算科列斯基分解 GNU Octave数值計算系統提供了一些函數以計算 修正和应用科列斯基分解 LAPACK庫提供了一个高性能的科列斯基分解的實現 可以以Fortran C語言及其他大多數語言讀取 在Python中 numpy linalg模塊中的命令Cholesky可執行科列斯基分解 在Matlab中 chol命令可以簡單地對一個矩陣進行科列斯基分解 在R語言中 chol函數可進行科列斯基分解 在Wolfram Mathematica中 函數CholeskyDecomposition可以對一個矩陣執行科列斯基分解 在C 中 armadillo庫 英语 Armadillo C library 中的命令chol可執行科列斯基分解 特徵庫提供了稀疏矩陣和稠密矩陣的科列斯基分解 在Analytica 英语 Analytica software 中 函數Decompose提供科列斯基分解 Apache Commons數學庫中有科列斯基分解的實現 可應用於Java Scala及任何其他JVM語言 參見 编辑象徵性科列斯基分解 英语 Symbolic Cholesky decomposition 最低次數算法 英语 Minimum degree algorithm 矩陣分解 西爾維斯特慣性定理 圈秩 英语 Cycle rank 矩陣的平方根腳註 编辑 Press William H Saul A Teukolsky William T Vetterling Brian P Flannery Numerical Recipes in C The Art of Scientific Computing second edition Cambridge University England EPress 1992 994 2017 08 30 ISBN 0 521 43108 5 原始内容存档于2018 08 25 Golub amp Van Loan 1996 p 143 Horn amp Johnson 1985 p 407 Trefethen amp Bau 1997 p 174 Golub amp Van Loan 1996 p 147 Horn amp Johnson 1985 p 407 Krishnamoorthy Aravindh Menon Deepak Matrix Inversion Using Cholesky Decomposition 1111 4144 2011 Bibcode 2011arXiv1111 4144K arXiv 1111 4144 Fang Haw ren O Leary Dianne P Modified Cholesky Algorithms A Catalog with New Approaches PDF 8 August 2006 2017 08 30 原始内容存档 PDF 于2017 05 16 Nocedal Jorge Numerical Optimization Springer 2000 Fang Haw ren Analysis of Block LDLT Factorizations for Symmetric Indefinite Matrices 24 August 2007 參考文獻 编辑Dereniowski Dariusz Kubale Marek 5th International Conference on Parallel Processing and Applied Mathematics PDF Lecture Notes on Computer Science 3019 Springer Verlag 985 992 2004 2017 08 30 ISBN 978 3 540 21946 0 doi 10 1007 978 3 540 24669 5 127 原始内容 PDF 存档于2011 07 16 contribution 被忽略 帮助 Golub Gene H Van Loan Charles F Matrix Computations 3rd Baltimore Johns Hopkins 1996 ISBN 978 0 8018 5414 9 Horn Roger A Johnson Charles R Matrix Analysis Cambridge University Press 1985 ISBN 0 521 38632 2 S J Julier and J K Uhlmann A General Method for Approximating Nonlinear Transformations of ProbabilityDistributions S J Julier and J K Uhlmann A new extension of the Kalman filter to nonlinear systems in Proc AeroSense 11th Int Symp Aerospace Defence Sensing Simulation and Controls 1997 pp 182 193 Trefethen Lloyd N Bau David Numerical linear algebra Philadelphia Society for Industrial and Applied Mathematics 1997 ISBN 978 0 89871 361 9 外部連結 编辑科学史 编辑 Sur la resolution numerique des systemes d equations lineaires Cholesky s 1910 manuscript online and analyzed on BibNum 页面存档备份 存于互联网档案馆 法文 英文 for English click A telecharger 資訊 编辑 Hazewinkel Michiel 编 Cholesky factorization 数学百科全书 Springer 2001 ISBN 978 1 55608 010 4 Cholesky Decomposition PlanetMath Cholesky Decomposition The Data Analysis BriefBook Cholesky Decomposition 页面存档备份 存于互联网档案馆 on www math linux com Cholesky Decomposition Made Simple 页面存档备份 存于互联网档案馆 on Science Meanderthal電腦代碼 编辑 LAPACK 页面存档备份 存于互联网档案馆 一個求解稠密線性代數問題的FORTRAN子程式的集合 ALGLIB 页面存档备份 存于互联网档案馆 包含部分從LAPACK到C C Delphi Visual Basic等的埠 libflame 页面存档备份 存于互联网档案馆 帶有LAPACK功能的C函數庫 德克薩斯大學奧斯汀分校 有關科列斯基分解高性能實現的筆記及影片 Google Library Ceres Solver 页面存档备份 存于互联网档案馆 MATLAB程式 LDL分解 Armadillo 页面存档备份 存于互联网档案馆 一個C 線性函數包 package 模擬中矩陣的利用 编辑 生成相关的随机变量 Martin Haugh 哥倫比亞大學線上計算機 编辑 線上矩陣運算 可執行科列斯基分解 取自 https zh wikipedia org w index php title 科列斯基分解 amp oldid 75951025, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。