首页 > 编程笔记 > MATLAB笔记 阅读:203

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 程序如下:
  1. >> clear % 清除工作区的变量
  2. >> A = gallery('lehmer',5) % 生成5阶对称正定测试矩阵A
  3. A =
  4. 1.0000 0.5000 0.3333 0.2500 0.2000
  5. 0.5000 1.0000 0.6667 0.5000 0.4000
  6. 0.3333 0.6667 1.0000 0.7500 0.6000
  7. 0.2500 0.5000 0.7500 1.0000 0.8000
  8. 0.2000 0.4000 0.6000 0.8000 1.0000
  9. >> R=chol(A) % 对矩阵A进行楚列斯基分解,返回楚列斯基分解因子R
  10. R =
  11. 1.0000 0.5000 0.3333 0.2500 0.2000
  12. 0 0.8660 0.5774 0.4330 0.3464
  13. 0 0 0.7454 0.5590 0.4472
  14. 0 0 0 0.6614 0.5292
  15. 0 0 0 0 0.6000
  16. >> R'*R % 验证楚列斯基分解
  17. ans =
  18. 1.0000 0.5000 0.3333 0.2500 0.2000
  19. 0.5000 1.0000 0.6667 0.5000 0.4000
  20. 0.3333 0.6667 1.0000 0.7500 0.6000
  21. 0.2500 0.5000 0.7500 1.0000 0.8000
  22. 0.2000 0.4000 0.6000 0.8000 1.0000

相关文章