首页 > 编程笔记 > MATLAB笔记

MATLAB chol()函数:实现楚列斯基分解

矩阵分解是矩阵分析的一个重要工具,求矩阵的特征值和特征向量、求矩阵的逆以及矩阵的秩等都要用到矩阵分解。

楚列斯基分解是专门针对对称正定矩阵的分解。设 A=(aij)∈Rn×n 是对称正定矩阵,A=RTR 称为矩阵 A 的楚列斯基分解,其中 R∈Rn×n 是一个具有正的对角元素的上三角矩阵,即:


这种分解是唯一存在的。

在 MATLAB 中,实现楚列斯基分解的函数是 chol(),它的使用格式及说明如下表所示:

表 1 chol函数调用格式及说明
调用格式 说 明
R= chol(A) 返回楚列斯基分解因子 A
[R,p] = chol(A) 该命令不产生任何错误信息,若 A 为正定矩阵,则 p=0,R 同上;若 A 非正定,则 p 为正整数,R 是有序的上三角矩阵

在确定正定性时,使用 chol() 函数优先于 eig() 函数。

【实例】将对称正定矩阵进行楚列斯基分解。MATLAB 程序如下:
>> clear                      % 清除工作区的变量
>> A = gallery('lehmer',5)    % 生成5阶对称正定测试矩阵A
A =
    1.0000    0.5000  0.3333   0.2500    0.2000
    0.5000    1.0000  0.6667   0.5000    0.4000
    0.3333    0.6667  1.0000   0.7500    0.6000
    0.2500    0.5000  0.7500   1.0000    0.8000
    0.2000    0.4000  0.6000   0.8000    1.0000
>> R=chol(A)                  % 对矩阵A进行楚列斯基分解,返回楚列斯基分解因子R
R =
    1.0000    0.5000  0.3333   0.2500    0.2000
         0    0.8660  0.5774   0.4330    0.3464
         0         0  0.7454   0.5590    0.4472
         0         0       0   0.6614    0.5292
         0         0       0        0    0.6000
>> R'*R                       % 验证楚列斯基分解
ans =
    1.0000    0.5000  0.3333   0.2500    0.2000
    0.5000    1.0000  0.6667   0.5000    0.4000
    0.3333    0.6667  1.0000   0.7500    0.6000
    0.2500    0.5000  0.7500   1.0000    0.8000
    0.2000    0.4000  0.6000   0.8000    1.0000

推荐阅读