科列斯基分解

线性代数中，科列斯基分解（）是指将一个正定的埃尔米特矩阵分解成一个下三角矩阵与其共轭转置之乘积。这种分解方式在提高代数运算效率、蒙特卡罗方法等场合中十分有用。实数矩阵的科列斯基分解由安德烈-路易·科列斯基最先发明。实际应用中，科列斯基分解在求解线性方程组中的效率约两倍于LU分解。
描述.
对正定埃尔米特矩阵formula_1进行科列斯基分解，即求矩阵formula_2使下式成立
其中，formula_2是一个下三角矩阵且所有对角元素均为正实数，formula_5表示formula_2的共轭转置。每一个正定埃尔米特矩阵都有一个唯一的科列斯基分解。
当矩阵formula_1是一个半正定的埃尔米特矩阵，若允许formula_2的对角线元素为零，则formula_1也存在上述形式的分解。
当formula_1为实数矩阵，则formula_2也为实数矩阵且科列斯基分解可改写成formula_12。
当formula_1是正定矩阵时，科列斯基分解是唯一的，即只存在一个对角元素均严格大于零的下三角矩阵，使formula_3成立。然而，当formula_1是半正定时，分解则不一定是唯一的。
定理的逆命题自然成立：对于某些可逆矩阵formula_2（下三角矩阵或其他矩阵），如果formula_1可被写成formula_18，则formula_1是一个正定的埃尔米特矩阵。
LDL分解.
经典科列斯基分解的一个变形是LDL分解，即
其中，formula_2是一个单位下三角矩阵，formula_22是一个对角矩阵。
该分解与经典科列斯基分解犹有关联，如下：
或者，由于formula_2的对角元素必须为formula_25，且formula_26与formula_2都是下三角矩阵，故如果已知经典科列斯基分解formula_26，则formula_29形式可依下式求出，设S是包含formula_30的对角元素的对角矩阵，
LDL变形如果得以有效执行，构造及使用时所需求的空间及计算的复杂性与经典科列斯基分解是相同的，但是可避免提取平方根。某些不存在科列斯基分解的不定矩阵，也可以执行LDL分解，此时矩阵formula_22中会出现负数元素。因此人们更倾向于使用LDL分解。对于实数矩阵，该种分解的形式可被改写成
此形式通常称为LDLT分解（或LDLT分解）。它与实对称矩阵的特征分解密切相关，因为对于实对称矩阵，存在特征分解formula_35。
实例.
以下乃一个实对称矩阵的科列斯基分解︰
以下乃其LDLT分解︰
应用.
科列斯基分解主要被用于线性方程组formula_38的求解。如果A是对称正定的，我们可以先求出formula_12，随后借向后替换法对y求解formula_40，再以向前替换法对x求解formula_41即得最终解。
另一种可避免在计算formula_42时需要解平方根的方法就是计算formula_43，然后对y求解formula_44，最后求解formula_45
对于可以被改写成对称矩阵的线性方程组，科列斯基分解及其LDL变形是一个较高效率及较高数值稳定性的求解方法。相比之下，其效率几近为LU分解的两倍。
矩阵求逆.
若欲对埃尔米特矩阵直接求逆，可以通过科列斯基分解，类似求解线性方程组一般求出逆矩阵，这需要formula_46次运算（formula_47次乘法运算）。 "该方法即便要求逐步计算也非常有效率。"
非埃尔米特矩阵formula_48也可以通过下例性质求逆，因为其中formula_49总是埃尔米特矩阵︰
计算.
有各种各样的方法用于计算科列斯基分解。 常用的演算法的计算复杂度在一般情况下为formula_51。
下面的算法何者较快取决于执行时的具体条件。总体而言，第一个算法会稍慢，因为其以一种不太寻常的方式读取数据。
科列斯基算法.
用于计算矩阵formula_2的科列斯基算法，是以高斯消元法为基础而调整得来的。
递归算法由formula_53开始，令
在步骤formula_55，矩阵formula_56的形式如下：
其中，formula_58代表formula_59维的单位矩阵。
此时定义矩阵formula_60为
随即formula_62可以被改写成
其中
注意︰在此formula_65是一个外积。
重复此步骤直到formula_55从formula_25到formula_68。formula_68步之后，我们得到formula_70。因此，所求的下三角矩阵formula_71为
科列斯基-巴那齐耶维茨及科列斯基-克劳特演算法.
写出等式formula_3，
则得到矩阵formula_2的元素的计算公式如下︰
只要formula_1是实数正定矩阵，则平方根下的表达式恒为正。
对于复埃尔米特矩阵，则适用如下公式：
因此，要计算formula_81只需利用其的左、上方元素的值。计算通常是以以下其中一种顺序进行的。
若有需要，"整个矩阵可以逐个元素计算得出"，无论使用何种顺序读取。
计算的稳定性.
假设我们要求解一个良置的线性方程组。采用了LU分解的算法，除非进行某种绕轴旋转，否则是不稳定的；如果算法进行了绕轴旋转，则其误差取决于矩阵的"增长因子"，这个数通常（但非总是）很小。
现在，假设算法适用科列斯基分解。如上所述，算法的效率将会是原来的两倍。此外，无必要进行绕轴旋转且误差总是很小。具体而言，若要求解formula_82，formula_83表示已计算出的解，然后能解出"干扰方程组"formula_84，其中
在这里，formula_86是指矩阵2-范数，而formula_87是一个取决于formula_68的小常数，formula_89表示。
值得一提的是，科列斯基分解与平方根的使用有关。如果被分解的矩阵是正定的，那么只要"运算精确"，矩阵中带有平方根的元素的平方根下的数字永远是正数。不幸的是，由于存在舍入误差，这些数字可能为负数，并使算法搁浅。然而，此种情况仅当矩阵为病态时才会出现。一种可解决此问题的方法，是增添一个对角修正矩阵至待分解矩阵，以增加矩阵的正定性。 此法虽或将减少分解的准确性，但有在某些情况却颇有作为；譬如，执行应用于最优化的牛顿法时，若初期值距最优值较远，则此时引入对角矩阵可以提高演算法的稳定性。
LDL分解.
科列斯基分解的另一种形式——LDL分解的计算方式如下所示，
如果 是实数矩阵，下述之递归计算式适用于矩阵  及  中的所有元素︰
如果 是复埃尔米特矩阵，则矩阵  及 的计算适用以下公式：
同样地，若有需求，"该读取顺序可以逐一计算矩阵中的每一个元素。"
分块矩阵变形.
当formula_1是一个不定矩阵时，LDL分解在未经过谨慎的绕轴旋转的情况下是不稳定的； 特别是，分解出的矩阵的元素可能是任意的。一个可取的改进手段是执行矩阵分块后再执行分解，通常将原矩阵分为包含formula_96的小矩阵的分块矩阵：
在此，矩阵中每一个元素都是一个子矩阵。故此，可依照上述递归公式类比计算：
上述计算涉及矩阵相乘同精确的求逆，故而实践中不能使用过大的分块矩阵。
"修正"分解.
在实践中经常有"修正"科列斯基分解的需求。即，经已计算一些矩阵formula_1的科列斯基分解formula_3，然后在formula_1上稍作修改而产生的矩阵formula_103，欲对其进行一个修正的科列斯基分解formula_104。问题是，能否用已知的formula_1的分解去修正formula_106的分解。
秩为1的修正（相加）.
如果"修正"矩阵formula_107，则其修正的分解被称为秩为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的修正（相减）.
如果formula_108，那么只有当formula_109仍然是正定的时候该方法才适用。
此条件下，上面的代码也可用于相减的情况，只需要将codice_1和codice_2的赋值式的加号替换成减号。
证明半正定矩阵的科列斯基分解唯一.
上面的演算法表明，每一个正定矩阵formula_110都有一个科列斯基分解。此结论可以"加入一些限制条件"后，推广到半正定的情况。但该"条件"并未被完全建立，例如，它未给出明确的数值演算法以计算科列斯基因子。
如果formula_110是一个formula_112的半正定矩阵，则序列formula_113是一个由正定矩阵构成的序列。而且，在算子范数中
在正定的情形下，每一个formula_115都有其科列斯基分解formula_116。根据算子范数的性质，
因而formula_118是算子巴拿赫空间上的一个有界集，因此是（因为基础向量空间是有限维的）。因此，它有一个带有限制formula_2收敛子序列，也记作formula_118。容易验证，矩阵formula_2具有所需的特性，例如，满足formula_122以及formula_2是下三角矩阵且其对角元素非负。对于所有的formula_124和formula_125都有，
因此，formula_3。因为基础向量空间是有限维的，所以算子空间的所有拓扑结构都是等价的。故此，范数上formula_128收敛于formula_2，意味着，formula_128的每个元素都独立地收敛于formula_2。此同时暗示，由于每个formula_128都是对角元素非负的下三角矩阵，formula_2亦如此。
推广.
科列斯基分解可以推广到元素中包含算子的矩阵（称为算子矩阵）。令formula_134是希尔伯特空间上的一个序列。考虑如下算子矩阵
满足直和
其中每一个
都是一个有界算子。如果formula_1是正定或半正定的，即对于有限的formula_139及任意的
都有formula_141，则存在一个下三角的算子矩阵formula_2使得formula_143。此外也可以把formula_2的对角元素化为正数。