SVD算法的全面介绍
这相对于当 i 0.5 i 1 i ,就设 i 0,好处是不用知道机器精度 。
另外一个依据是:
if( i i 1 i i i 1),then
……(3.2.2)
i 0
分析知判断依据(3.2.1)可能会在没有0奇异值的情况下引入一个0奇异值,所以显然不可取;而再来看判断依据(3.2.2),不妨取如下例子, 足够小,以致浮点运算中1 1;考虑矩阵
21
1x B(x) 11 2
当x 时,容易验证最小的奇异值约为 3;但是用判断依据(3.2.2),则会将x设为
0,而B
(0)的最小奇异值约为 2。 所以新的收敛判断依据必须要确保,当把 i设为0时,不会引起奇异值的大波动;同时严格来说我们不能把一个非0的 i设为0。我们令 表示最小奇异值的可靠的下界估计,其值可如下迭代计算:
算法3.2.2: n n for j n 1 to 1 step -1 do
j j(
j 1 j 1 j 1
1 1
for j 1 to n-1 step 1 do
j 1 j 1(
j
j j j 1
j
1 1
Then B 1 min j;B 11 min j
1 1 min(B 1 ,B 11)
文献[13]证明了 min(B) n1/2;从中可以看出最简单可取的收敛判据是当
,将它设为0。但是这是一个过于保守的估 i小于tol*时(tol是相对误差容许限)
计,耗时太久,所以一般取以下更实用的收敛判断依据:
ConergenceCriterion1a
假定 j是由算法3.2.2计算得到,则当 j/ j 1 tol时,把 j设置为0时。