0

Sylvester行列のQR分解による最大公約多項式の計算過程についての覚書

26
0

(Greatest Common Divisor of Polynomial:
GCD)を計算する手法の一つとして二つの多項式f,gi次シルベスター行列Si(f,g)の唯一の0特異値に対応する右特異ベクトルからGCDの係数ベクトルを計算するものがある.この手法ではSi(f,g)の特異値分解を複数回行う必要があり計算量が莫大になってしまう.これを避ける手段としてSi(f,g)QR分解から最小特異値を求めるものが存在する.本稿ではQRから最小特異値を計算する方法とSi(f,g)QR分解からSi1(f,g)QR分解を計算する方法について述べる.

最小特異値の計算

Si(f,g)の二番目に小さい特異値σ2(Si(f,g))0でなく,QR=Si(f,g)Si(f,g)QR分解であるとする.この時正しいサイズのランダムな初期値z0に対して以下の手順

  1. 前進代入によってRHyj=zj1をとく

  2. 後退代入によってRzj=yjをとく

  3. zjの正規化を行う

の繰り返しによってベクトルの系列zj,j=1,2,zに収束し,
(1)Sk(f,g)z=Rz=σ1(Si(f,g))
(ただしσ2(Si(f,g))(Si(f,g)の最小特異値)を満たす.またその収束率は
zjz{σ1(Si(f,g))/σ2(Si(f,g))}2jz0zとなるこの補題の証明は

S.V.Huffel ”Iterative algorithms for computing the singular subspace of a matrix associated with its smallest singular values” Linear Algebra and its Applications, Volumes 154-156, 1991, pp 675-709.

を参照されたい.
前進代入及び後退代入はn×m行列に対してO(nm)で実行可能である.また実用上は3回程度の繰り返しによってz3zとできるため,一度QR分解が与えられればO(nm)で最小特異値を計算することが可能である.これはO(n3)の特異値分解と比べると大きな改善である.

ユニタリ変換による特異値の不変性

ACn×mにユニタリ行列PQHをそれぞれ左右からかけてもその特異値σi(A),i=1,min(n,m)は変化しない

Aの特異値分解A=UΣVHがある時,ユニタリ行列は積について閉じているため(PU), (QV)Hはどちらもユニタリ行列である.そのためPAQH=(PU)Σ(QV)HPAQHの特異値分解となっており,Aと同じ特異値を持つ

列の入れ替え操作による特異値の不変性

右からかけることで列の入れ替えを行う行列をPiと書く.するとこれはユニタリ行列であるため,この性質によってシルベスター行列Sk(f,g)の最小特異値を求める代わりにSk(f,g)Pkの最小特異値を求めても同じであることがわかる.

シルベスター行列の更新

第一段階

SkPkの最下行にゼロベクトルを追加した時,以下の行列分解はQR分解となっている
[SkPk0T]=[Qk1][Rk0T]

第二段階

[SkPk0T]=:[a1,,an+m2k+2]の第nk+2列と行列の最も右に列ベクトルb1,b2を追加するとk1次シルベスター行列Sk1を得る.
Sk1=[a1,,ank+1,b1,ank+2,,an+m2k+2,b2]この行列に対してb1b2の右隣に配置されるように置換行列Pk1を右側からかけ,Sk1Pk1=[a1,,an+m2k+2,b1,b2]=[(Sk10T),b1,b2]を得る.上式の両辺に左側から
[Qk1]H(=[QkH1]) をかけ u1=[QkH1]b1, u2=[QkH1]b2とおくと [QkH1]Sk1Pk1=[(QkH1)(Sk10T),u1,u2](2)=[(Rk0T),u1,u2]である.Sk1Pk1QR分解としては,[(Rk0T),u1,u2]の対角成分より下が0になるようにu1,u2をユニタリ行列で変形すれば良い.

ギブンズ回転

行列またはベクトルのある成分の零化はギブンズ回転によって行われる.

ギブンズ回転とは,正方行列 G(i,j,θ)=(1cosθsinθsinθcosθ1)をベクトルの右側からかけることで鏡像回転を行うハウスホルダー変換の一種であり,明らかに
GT(i,j,θ)=G1(i,j,θ)=G(i,j,θ)である.
(3)cosθ=uiui2+uj2, sinθ=ujui2+uj2とすると
v=G(i,j,θ)uvl={ui2+uj2l=i0l=julli,jとなり,uの第j要素を利用して第i要素を零化できる.

QR分解を完了する

ギブンズ回転を利用して(2)式の三角化を引き続き行うと(Rk0T)は既に上三角行列となっているため,Sk1Pk1QR分解はu1,u2の対角以下の成分が0になるように右側からギブンズ行列をかければ良い.ベクトルvの第j要素ujを用いて第j+1要素を消去する行列を(3)のθに対してGu,jT=GT(j,j+1,θ)とかくことにする.このギブンズ回転を複数回行うことでu1,u2
u1=Gu1,lTGu1,l+1TGu1,nTu1,u2=Gu1,lTGu1,l+1TGu1,nTu2,u1=Gu2,l+1TGu2,l+2TGu2,nTu1,u2=Gu2,l+1TGu2,l+2TGu2,nTu2と余分な成分の零化を実行できる.なお(Rk0T)の第l成分以下は既に全て0であるためこれらのギブンズ回転を行っても変化しない.つまり
(Rk0T)=Gu2,l+1TGu2,l+2TGu2,nT(Rk0T)である.Gu2,l+1TGu2,l+2TGu2,nTGu1,lTGu1,l+1TGu1,nTを(2)の両辺に右側からかけることで
Gu2,l+1TGu2,l+2TGu2,nTGu1,lTGu1,l+1TGu1,nT[QkH1]Sk1Pk1=[(Rk0T),u1,u2]を得る.式変形を行うと
Sk1Pk1=[Qk1]Gu1,nGu1,lGu2,nGu2,l+1Qk1 [(Rk0T),u1,u2]Rk1Sk1Pk1QR分解となっている.

投稿日:2021723
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

kadecl
kadecl
0
568
音響信号処理に興味があります. ブラインド音源分離,雑音抑制など

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. 最小特異値の計算
  2. ユニタリ変換による特異値の不変性
  3. シルベスター行列の更新
  4. 第一段階
  5. 第二段階
  6. ギブンズ回転
  7. QR分解を完了する