5.10 阻尼倒数法
5.10 阻尼倒數法
改進Gram-Schmidt分解中需要計算 rii=∥ai∥r_{ii} = \|\mathbf{a}_i\|rii?=∥ai?∥ ,qi=ai/rii\mathbf{q}_i = \mathbf{a}_i/r_{ii}qi?=ai?/rii?,riir_{ii}rii? 表示子空間第 iii 個坐標軸的高度,當其為 000 時,說明子空間少了該維度,矩陣 AAA 不是列滿秩,ai\mathbf{a}_iai? 可由前面 i?1i-1i?1 個 aj,j<i\mathbf{a}_j,j < iaj?,j<i 表示,這樣 qi\mathbf{q}_iqi? 單位向量應該為 0\mathbf{0}0 向量,最優解的第 iii 個分量應該為 000 。但實際計算時,由于舍入誤差,riir_{ii}rii? 不會等于 000 ,只會趨近 000 ,是個極小的數。如果還是按公式 qi=ai/rii\mathbf{q}_i = \mathbf{a}_i/r_{ii}qi?=ai?/rii? 計算,由于舍入誤差 qi\mathbf{q}_iqi? 會極不穩定,導致最優解的第 iii 個分量遠離 000 。所以我們希望當 riir_{ii}rii? 很小時,1/rii1/r_{ii}1/rii? 實際計算時取 000 ,不是很小時,還是取原值。即要求
1/rii={1/riiforlargerii0forsmallrii1/r_{ii} = \left \{ \begin{array}{rc} 1/r_{ii} & for & large & r_{ii} \\ 0 & for & small & r_{ii} \end{array}\right. 1/rii?={1/rii?0?forfor?largesmall?rii?rii??
為了達到這個目的,可以采用各種數學技巧,阻尼倒數法就是著名的一種。
1/rii=riirii2+λ21/r_{ii} = \frac{r_{ii}}{r^2_{ii}+\lambda^2} 1/rii?=rii2?+λ2rii??
λ\lambdaλ 是阻尼系數,需要人為設定,當 rii<λr_{ii}<\lambdarii?<λ 時,認為 riir_{ii}rii? 過小,理論上是 000 。
阻尼倒數法有如下近似結果
riirii2+λ2={1riifor∣rii∣?λriiλ2→0for∣rii∣?λ\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??={rii?1?λ2rii??→0?forfor?∣rii?∣?λ∣rii?∣?λ?
為了減小阻尼系數 λ\lambdaλ 對正常 riir_{ii}rii? 的影響,可以令當 riir_{ii}rii? 較大時,λ\lambdaλ 趨近 000 。可采用分段函數
λ={λ0(1?∣rii∣?)for∣rii∣≤?0for∣rii∣>?\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?∣?)0?forfor?∣rii?∣≤?∣rii?∣>??
也可采用高斯函數
λ=λ0e?(∣rii∣?)2\lambda = \lambda_0 e^{-(\frac{|r_{ii}|}{\epsilon})^2} λ=λ0?e?(?∣rii?∣?)2
其中 λ0\lambda_0λ0? 為名義阻尼系數,?\epsilon? 為判斷奇異的閾值。
高斯函數比分段函數更光滑,這樣最優解在奇異位置更平滑。高斯函數缺點是當 riir_{ii}rii? 較大時,λ\lambdaλ 不等于 000 ,會引入極小誤差。
按照阻尼倒數法計算,qi=ai/rii\mathbf{q}_i = \mathbf{a}_i/r_{ii}qi?=ai?/rii? ,當 riir_{ii}rii? 趨近 000 時,qi\mathbf{q}_iqi? 趨近 0\mathbf{0}0 。最優解的第 iii 分量 x^i=(δi?∑j=i+1n(δjx^j))/rii\hat{x}_i = (\delta_i - \sum^{n}_{j=i+1} (\delta_j\hat{x}_j))/r_{ii}x^i?=(δi??∑j=i+1n?(δj?x^j?))/rii? 也趨近 000 ,達到穩定解的目的。阻尼倒數法涉及的參數如 λ0\lambda_0λ0?、?\epsilon? ,其最優值很難確定。
riir_{ii}rii? 趨近 000 ,矩陣 AAA 不是列滿秩,此時矩陣是行列均不滿秩,方程 Ax=bA\mathbf{x}=\mathbf{b}Ax=b 的解理論需要采用奇異值分解,后面章節會解釋。阻尼倒數法雖能得到較穩定的解,但只是其中一個解,沒有包含所有解。
總結
以上是生活随笔為你收集整理的5.10 阻尼倒数法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5.9 QR分解--Gram-Schmi
- 下一篇: 5.11 加权Gram-Schmidt