MATLAB函数及应用
上QQ阅读APP看书,第一时间看更新

30.chol函数

在MATLAB中,利用chol函数实现Cholesky分解。函数的语法格式为:

R=chol(A):将对称正定矩阵A分解成满足A=R'∗R的上三角R。如果A是非对称矩阵,则chol将矩阵视为对称矩阵,并且只使用A的对角线和上三角形。

R=chol(A,triangle):指定在计算分解时使用A的哪个三角因子。例如,如果triangle是'lower',则chol仅使用A的对角线和下三角部分来生成满足A=R∗R'的下三角矩阵R。triangle的默认值是'upper'。

[R,flag]=chol(___):还返回输出flag,指示A是否为对称正定矩阵。可以使用上述语法中的任何输入参数组合。当指定flag输出时,如果输入矩阵不是对称正定矩阵,chol不会生成错误。

· 如果flag=0,则输入矩阵是对称正定矩阵,分解成功。

· 如果flag不为零,则输入矩阵不是对称正定矩阵,flag为整数,表示分解失败的主元位置的索引。

[R,flag,P]=chol(S):另外返回一个置换矩阵P,这是amd获得的稀疏矩阵S的预先排序。如果flag=0,则S是对称正定矩阵,R是满足R'∗R=P'∗S∗P的上三角矩阵。

[R,flag,P]=chol(____,outputForm):使用上述语法中的任何输入参数组合,指定是以矩阵还是向量形式返回置换信息P。此选项仅可用于稀疏矩阵输入。例如,如果outputForm是'vector'且flag=0,则S(p,p)=R'∗R。outputForm的默认值是'matrix',满足R'∗R=P'∗S∗P。

【例1-30】计算矩阵的上下Cholesky分解,并验证结果。

此外,也可以用chol函数来对稀疏矩阵进行Cholesky分解。

【例1-31】计算稀疏矩阵的Cholesky因子,并使用置换输出创建具有较少非零元素的Cholesky因子。

运行程序,效果如图1-12所示。

图1-12 稀疏矩阵的Cholesky分解