胆碱酯酶

Cholesky因子分解的秩1更新

语法

R1=cholupdate(R,x)
R1=cholupdate(R,x,'+')
R1=cholupdate(R,x,'-')
[R1,p]=cholupdate(R,x,'-')

说明

R1=cholupdate(R,x)哪里R=chol(A)原始的Cholesky因式分解A,返回的上三角Cholesky因子A+x*x',其中是适当长度的列向量。胆碱酯酶仅使用的对角线和上三角形R. 下三角R被忽略。

R1=cholupdate(R,x,'+')R1=cholupdate(R,x).

R1=cholupdate(R,x,'-')返回的Cholesky因子A-x*x'. 当R不是有效的Cholesky因子,或者当降阶矩阵不是正定的并且没有Cholesky因式分解时,会报告一条错误消息。

[R1,p]=cholupdate(R,x,'-')不会返回错误消息。如果p0,R1A-x*x'. 如果p大于0,R1是原始的Cholesky因子A. 如果p1,胆碱酯酶失败,因为过时的矩阵不是正定的。如果p2,胆碱酯酶失败,因为R不是有效的Cholesky因素。

示例

A=pascal(4)A=1 1 1 1 2 3 4 1 3 6 10 1 4 10 20 R=chol(A)R=1 1 1 1 0 1 2 3 0 0 1 3 0 0 0 1 x=[0 0 0 1]';

这被称为一级更新A自从等级(x*x')1:

A+x*x'ans公司=
1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 21

而不是用R1=chol(A+x*x'),我们可以使用胆碱酯酶:

R1=cholupdate(R,x)R1=
1.0000 1.0000 1.0000 1.0000 0 1.0000 2.0000 3.0000 0 1.0000 3.0000 0 0 1.4142

下一步通过减法破坏正定性(实际上使矩阵奇异)1从最后一个元素A. 过时的矩阵是:

A-x*x'ans=1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 19

比较chol公司具有胆碱酯酶:

R1=chol(A-x*x')使用chol矩阵的误差必须是正定的。R1=cholupdate(R,x,'-')错误使用cholupdate downlated矩阵必须是正定的。

但是,减去0.5从最后一个元素A我们可以用一个正定矩阵胆碱酯酶要计算其Cholesky因子:

x=[0 0 0 1/sqrt(2)]';R1=cholupdate(R,x,'-')R1=1.0000 1.0000 1.0000 0 1.0000 2.0000 3.0000 0 0 1.0000 3.0000 0 0 0 0.7071

提示

胆碱酯酶仅适用于完整矩阵。

扩展功能

另请参见

|

R2006a之前引入