MATLAB chol()函数:实现楚列斯基分解
矩阵分解是矩阵分析的一个重要工具,求矩阵的特征值和特征向量、求矩阵的逆以及矩阵的秩等都要用到矩阵分解。
楚列斯基分解是专门针对对称正定矩阵的分解。设 A=(aij)∈Rn×n 是对称正定矩阵,A=RTR 称为矩阵 A 的楚列斯基分解,其中 R∈Rn×n 是一个具有正的对角元素的上三角矩阵,即:
这种分解是唯一存在的。
在 MATLAB 中,实现楚列斯基分解的函数是 chol(),它的使用格式及说明如下表所示:
在确定正定性时,使用 chol() 函数优先于 eig() 函数。
【实例】将对称正定矩阵进行楚列斯基分解。MATLAB 程序如下:
楚列斯基分解是专门针对对称正定矩阵的分解。设 A=(aij)∈Rn×n 是对称正定矩阵,A=RTR 称为矩阵 A 的楚列斯基分解,其中 R∈Rn×n 是一个具有正的对角元素的上三角矩阵,即:
这种分解是唯一存在的。
在 MATLAB 中,实现楚列斯基分解的函数是 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