5.10 阻尼倒数法

5.10 阻尼倒数法

改进Gram-Schmidt分解中需要计算 r i i = ∥ a i ∥ r_{ii} = \|\mathbf{a}_i\| rii=ai q i = a i / r i i \mathbf{q}_i = \mathbf{a}_i/r_{ii} qi=ai/rii r i i r_{ii} rii 表示子空间第 i i i 个坐标轴的高度,当其为 0 0 0 时,说明子空间少了该维度,矩阵 A A A 不是列满秩, a i \mathbf{a}_i ai 可由前面 i − 1 i-1 i1 a j , j < i \mathbf{a}_j,j < i aj,j<i 表示,这样 q i \mathbf{q}_i qi 单位向量应该为 0 \mathbf{0} 0 向量,最优解的第 i i i 个分量应该为 0 0 0 。但实际计算时,由于舍入误差, r i i r_{ii} rii 不会等于 0 0 0 ,只会趋近 0 0 0 ,是个极小的数。如果还是按公式 q i = a i / r i i \mathbf{q}_i = \mathbf{a}_i/r_{ii} qi=ai/rii 计算,由于舍入误差 q i \mathbf{q}_i qi 会极不稳定,导致最优解的第 i i i 个分量远离 0 0 0 。所以我们希望当 r i i r_{ii} rii 很小时, 1 / r i i 1/r_{ii} 1/rii 实际计算时取 0 0 0 ,不是很小时,还是取原值。即要求

1 / r i i = { 1 / r i i f o r l a r g e r i i 0 f o r s m a l l r i i 1/r_{ii} = \left \{ \begin{array}{rc} 1/r_{ii} & for & large & r_{ii} \\ 0 & for & small & r_{ii} \end{array}\right. 1/rii={1/rii0forforlargesmallriirii

为了达到这个目的,可以采用各种数学技巧,阻尼倒数法就是著名的一种。

1 / r i i = r i i r i i 2 + λ 2 1/r_{ii} = \frac{r_{ii}}{r^2_{ii}+\lambda^2} 1/rii=rii2+λ2rii

λ \lambda λ 是阻尼系数,需要人为设定,当 r i i < λ r_{ii}<\lambda rii<λ 时,认为 r i i r_{ii} rii 过小,理论上是 0 0 0

阻尼倒数法有如下近似结果

r i i r i i 2 + λ 2 = { 1 r i i f o r ∣ r i i ∣ ≫ λ r i i λ 2 → 0 f o r ∣ r i i ∣ ≪ λ \frac{r_{ii}}{r^2_{ii}+\lambda^2} = \left \{ \begin{array}{rc} \frac{1}{r_{ii}} & for & |r_{ii}| \gg \lambda \\ \frac{r_{ii}}{\lambda^2} \to 0 & for & |r_{ii}| \ll \lambda \end{array}\right. rii2+λ2rii={rii1λ2rii0forforriiλriiλ

为了减小阻尼系数 λ \lambda λ 对正常 r i i r_{ii} rii 的影响,可以令当 r i i r_{ii} rii 较大时, λ \lambda λ 趋近 0 0 0 。可采用分段函数

λ = { λ 0 ( 1 − ∣ r i i ∣ ϵ ) f o r ∣ r i i ∣ ≤ ϵ 0 f o r ∣ r i i ∣ > ϵ \lambda = \left \{ \begin{array}{rc} \lambda_0(1-\frac{|r_{ii}|}{\epsilon}) & for & |r_{ii}| \le \epsilon \\ 0 & for & |r_{ii}| > \epsilon \end{array}\right. λ={λ0(1ϵrii)0forforriiϵrii>ϵ

也可采用高斯函数

λ = λ 0 e − ( ∣ r i i ∣ ϵ ) 2 \lambda = \lambda_0 e^{-(\frac{|r_{ii}|}{\epsilon})^2} λ=λ0e(ϵrii)2

其中 λ 0 \lambda_0 λ0 为名义阻尼系数, ϵ \epsilon ϵ 为判断奇异的阈值。

高斯函数比分段函数更光滑,这样最优解在奇异位置更平滑。高斯函数缺点是当 r i i r_{ii} rii 较大时, λ \lambda λ 不等于 0 0 0 ,会引入极小误差。

按照阻尼倒数法计算, q i = a i / r i i \mathbf{q}_i = \mathbf{a}_i/r_{ii} qi=ai/rii ,当 r i i r_{ii} rii 趋近 0 0 0 时, q i \mathbf{q}_i qi 趋近 0 \mathbf{0} 0 。最优解的第 i i i 分量 x ^ i = ( δ i − ∑ j = i + 1 n ( δ j x ^ j ) ) / r i i \hat{x}_i = (\delta_i - \sum^{n}_{j=i+1} (\delta_j\hat{x}_j))/r_{ii} x^i=(δij=i+1n(δjx^j))/rii 也趋近 0 0 0 ,达到稳定解的目的。阻尼倒数法涉及的参数如 λ 0 \lambda_0 λ0 ϵ \epsilon ϵ ,其最优值很难确定。

r i i r_{ii} rii 趋近 0 0 0 ,矩阵 A A A 不是列满秩,此时矩阵是行列均不满秩,方程 A x = b A\mathbf{x}=\mathbf{b} Ax=b 的解理论需要采用奇异值分解,后面章节会解释。阻尼倒数法虽能得到较稳定的解,但只是其中一个解,没有包含所有解。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值