直接法としての共役勾配法
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/29 01:56 UTC 版)
「共役勾配法」の記事における「直接法としての共役勾配法」の解説
非零ベクトルu、vが u T A v = 0 {\displaystyle \mathbf {u} ^{\mathrm {T} }\mathbf {A} \mathbf {v} =\mathbf {0} } を満たすとき、u、vはAに関して共役であるという。Aは対称正定値なので、左辺から内積 ⟨ u , v ⟩ A := ⟨ A T u , v ⟩ = ⟨ A u , v ⟩ = ⟨ u , A v ⟩ = u T A v {\displaystyle \langle \mathbf {u} ,\mathbf {v} \rangle _{\mathbf {A} }:=\langle \mathbf {A} ^{\mathrm {T} }\mathbf {u} ,\mathbf {v} \rangle =\langle \mathbf {A} \mathbf {u} ,\mathbf {v} \rangle =\langle \mathbf {u} ,\mathbf {A} \mathbf {v} \rangle =\mathbf {u} ^{\mathrm {T} }\mathbf {A} \mathbf {v} } を定義することができる。この内積に関して2つのベクトルが直交するなら、それらのベクトルは互いに共役である。この関係は対称で、uがvに対して共役なら、vもuに対して共役である(この場合の「共役」は複素共役と無関係であることに注意)。 {pk}をn個の互いに共役なベクトル列とする。pkは基底Rnを構成するので、Ax = bの解x*をこの基底で展開すると、 x ∗ = ∑ i = 1 n α i p i {\displaystyle \mathbf {x} _{*}=\sum _{i=1}^{n}\alpha _{i}\mathbf {p} _{i}} と書ける。ただし係数は A x ∗ = ∑ i = 1 n α i A p i = b . {\displaystyle \mathbf {A} \mathbf {x} _{*}=\sum _{i=1}^{n}\alpha _{i}\mathbf {A} \mathbf {p} _{i}=\mathbf {b} .} p k T A x ∗ = ∑ i = 1 n α i p k T A p i = p k T b . {\displaystyle \mathbf {p} _{k}^{\mathrm {T} }\mathbf {A} \mathbf {x} _{*}=\sum _{i=1}^{n}\alpha _{i}\mathbf {p} _{k}^{\mathrm {T} }\mathbf {A} \mathbf {p} _{i}=\mathbf {p} _{k}^{\mathrm {T} }\mathbf {b} .} α k = p k T b p k T A p k = ⟨ p k , b ⟩ ⟨ p k , p k ⟩ A = ⟨ p k , b ⟩ ‖ p k ‖ A 2 . {\displaystyle \alpha _{k}={\frac {\mathbf {p} _{k}^{\mathrm {T} }\mathbf {b} }{\mathbf {p} _{k}^{\mathrm {T} }\mathbf {A} \mathbf {p} _{k}}}={\frac {\langle \mathbf {p} _{k},\mathbf {b} \rangle }{\,\,\,\langle \mathbf {p} _{k},\mathbf {p} _{k}\rangle _{\mathbf {A} }}}={\frac {\langle \mathbf {p} _{k},\mathbf {b} \rangle }{\,\,\,\|\mathbf {p} _{k}\|_{\mathbf {A} }^{2}}}.} で与えられる。 この結果は、上で定義した内積を考えるのが最も分かりやすいと思われる。 以上から、Ax = bを解くための方法が得られる。すなわち、まずn個の共役な方向を見つけ、それから係数αkを計算すればよい。
※この「直接法としての共役勾配法」の解説は、「共役勾配法」の解説の一部です。
「直接法としての共役勾配法」を含む「共役勾配法」の記事については、「共役勾配法」の概要を参照ください。
- 直接法としての共役勾配法のページへのリンク