吉文斯旋轉

2021-06-19 03:19:53 字數 1215 閱讀 8138

在數值線性代數中,吉文斯旋轉(givens rotation)是在兩個座標軸所展開的平面中的旋轉。吉文斯旋轉得名於華萊士·吉文斯,他在 1950 年代工作於阿貢國家實驗室時把它介入到數值分析中。

吉文斯旋轉表示為如下形式的矩陣

這裡的 c = cos(θ) 和 s = sin(θ) 出現在第 i 行和第k 行與第 i 列和第 k 列的交叉點上。就是說,吉文斯旋轉矩陣的所有非零元定義如下::

乘積 g(i,k,θ)tx表示向量x在 (i,k)平面中的逆時針旋轉 θ 弧度。

givens 旋轉在數值線性代數中主要的用途是在向量或矩陣中介入零。例如,這種效果可用於計算矩陣的qr分解。超過householder變換的乙個好處是它們可以輕易的並行化,另乙個好處是對於非常稀疏的矩陣計算量更小。

當乙個吉文斯旋轉矩陣 g(i,j,θ)從左側乘另乙個矩陣 a 的時候,ga 只作用於a 的第 i 和 j 行。所以我們集中於下列問題。給出 a 和 b,找到c = cos θ 和 s = sin θ 使得

明確計算出 θ 是沒有必要的。我們轉而直接獲取 c, s 和 r。乙個明顯的解是

但是為了避免上溢位和下溢位,我們使用不同的計算,採用比率 b/a (它是 tan θ)或它的倒數(golub & van loan 1996)。如 edward anderson (2000) 在改進lapack 時發現的,前瞻數值考慮是連續性的。要完成它,我們要求r 是正數。

if (b = 0) then 

else if (a = 0) then

else if (abs(b) > abs(a)) then

t ← a/b

u ← copysign(sqrt(1+t*t),b)

s ← 1/u

c ← s*t

r ← b*u

else

t ← b/a

u ← copysign(sqrt(1+t*t),a)

c ← 1/u

s ← c*t

r ← a*u

這是依據 ieee 754r copysign(x,y) 函式寫成的,它提供了安全和廉價的方式複製 y 的符號到 x。如果不能獲得它,使用符號函式的x*sgn(y) 可作為替代。

注意這裡的sgn定義為

而不是常用的

後者常在高階語言中作為標準庫函式被提供,注意不要直接應用於本演算法中。

吉布斯取樣

2013 05 10 14 16 45 分類 學術 舉報 字型大小訂閱 幾個可以學習gibbs sampling的方法 1,讀bishop的pattern recognition and machine learning,講的很清楚,但是我記得好像沒有例子。2,讀artificial intelli...

吉布斯取樣(Gibbs Sampling

簡單理解吉布斯取樣的過程 幾個可以學習gibbs sampling的方法 1,讀bishop的pattern recognition and machine learning,講的很清楚,但是我記得好像沒有例子。2,讀artificial intelligence,2 3版,都有。但是我沒讀過。3,...

深度學習(六) 吉布斯取樣

吉布斯取樣也是用於高維空間的取樣方法。假設二維聯合概率分布 pi x x 在二維空間裡有兩個點,分別是 a x x 和 b x x 這兩個點的第乙個維度取值相同,放在直角座標系上看,它們兩的連線構成一條垂線。有如下成立 pi x x pi x mid x pi x pi x mid x pi x m...