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,'-')
不会返回错误消息。如果p
是0
,R1
是A-x*x'
. 如果p
大于0
,R1
是原始的Cholesky因子A
. 如果p
是1
,胆碱酯酶
失败,因为过时的矩阵不是正定的。如果p
是2
,胆碱酯酶
失败,因为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
胆碱酯酶
仅适用于完整矩阵。