|TOP Page|
ここで、
は次のように定義される作用素ノルムである。

CG法はKrylov部分空間
の中で誤差の
ノルムを最小化する手法であった。
つまり、方程式の解を
、
回反復後の近似解を
とすると、
がKrylov部分空間に含まれることから、

とかける、但し、多項式
は
次である。
回反復目のCG法の誤差
の
ノルム
は、

のように初期誤差
を用いて表すことができる。ここで、
を用いた。
はこれを
次の多項式全体
の中で最小化するので

となる。
ここで簡単のため
とおく。但し、
は
を満たす
次の多項式である。これを用いると上の式は

と表すことができる。
ノルムの評価
ここで、
は
の固有値であるとし、
は固有ベクトルであるとする。
は
を固有ベクトルの線形結合で表した時の係数であるとする
![||r(\b{A})\b{e}_0||_{\b{A}} = ||\sum_i^n r(\lambda_i)\xi_i\b{x}_i||_{\b{A}} \le |\sum_i^n r(\lambda_i)| \quad ||\sum_i^n\xi_i\b{x}_i||_{\b{A}} \le \max_i \quad |r(\lambda_i)| \quad ||\b{e}_0||_{\b{A}} \\ \qquad \qquad \qquad \qquad \qquad \qquad \qquad \le \max_{\small{\lambda\in[\lambda_{min},\lambda_{max}]}} \quad |r(\lambda)| \quad ||\b{e}_0||_{\b{A}} ||r(\b{A})\b{e}_0||_{\b{A}} = ||\sum_i^n r(\lambda_i)\xi_i\b{x}_i||_{\b{A}} \le |\sum_i^n r(\lambda_i)| \quad ||\sum_i^n\xi_i\b{x}_i||_{\b{A}} \le \max_i \quad |r(\lambda_i)| \quad ||\b{e}_0||_{\b{A}} \\ \qquad \qquad \qquad \qquad \qquad \qquad \qquad \le \max_{\small{\lambda\in[\lambda_{min},\lambda_{max}]}} \quad |r(\lambda)| \quad ||\b{e}_0||_{\b{A}}](436F6E76657267656E6365206F66204347204D6574686F64_eq0034.gif)
これを用いると
回反復時における誤差の
ノルム
は次のように評価される。
![||\b{e}_m||_{\b{A}} \le \min_{\small{q\in P_m \quad r(0)=1}} \quad \max_{\small{\lambda\in[\lambda_{min},\lambda_{max}]}} \quad |r(\lambda)| \quad ||\b{e}_0||_{\b{A}} ||\b{e}_m||_{\b{A}} \le \min_{\small{q\in P_m \quad r(0)=1}} \quad \max_{\small{\lambda\in[\lambda_{min},\lambda_{max}]}} \quad |r(\lambda)| \quad ||\b{e}_0||_{\b{A}}](436F6E76657267656E6365206F66204347204D6574686F64_eq0038.gif)
つまり、
を満たす
次の多項式
の中で、区間
での最大の絶対値を最小値によって、誤差の
ノルムは抑えられる。
![]() |
誤差のノルムを抑える係数 (イメージ) |
|---|
チェビシェフ多項式はある区間で絶対値の最大値を最小化するという性質をもった多項式である。
具体的には
次のチェビシェフ多項式
は最高次の係数が1であるような任意の
次の多項式
の中で

が最小になるような多項式を
倍したものと一致する。
チェビシェフ多項式は次のように定義される

一見複雑な超越関数に見えるが実はこれは単純な多項式である。
チェビシェフ多項式同士には次のような関係がある。
これを使えば
、
、
、
、
となることがわかる。
チェビシェフ多項式は次のようにも表すことができる。
![C_k(t)=\frac{1}{2}\left[(t+\sqrt{t^2-1})^k+(t+\sqrt{t^2-1})^{-k}\right] C_k(t)=\frac{1}{2}\left[(t+\sqrt{t^2-1})^k+(t+\sqrt{t^2-1})^{-k}\right]](436F6E76657267656E6365206F66204347204D6574686F64_eq0058.gif)
チェビシェフ多項式の絶対値は区間[-1,1]で最大値1をとることが知られている。
次のチェビシェフ多項式
は区間[-1,1]の間の絶対値の最大値を最小化する最高次数の係数が
の
次の多項式であった。
チェビシェフ多項式の最適化区間を
から
に変換するために、
という変数変換を用いたものを
とすると

となる。これにさらに適当なスケーリングを行って、引数が
の時に値1を取るようにした関数
とすると

は区間
の間の絶対値の最大値を最小化する引数
において1をとる
次の多項式である。
の絶対値は区間
で最大値1をとることから
の絶対値は区間
で最大値
をとる。つまり、
![\min_{\small{p\in P_k,p(\gamma)=1}} \quad \max_{\small{t\in[\alpha,\beta]}} \quad |p(t)| = \frac{1}{|C_k(1+2\frac{\gamma-\beta}{\beta-\alpha})|} \min_{\small{p\in P_k,p(\gamma)=1}} \quad \max_{\small{t\in[\alpha,\beta]}} \quad |p(t)| = \frac{1}{|C_k(1+2\frac{\gamma-\beta}{\beta-\alpha})|}](436F6E76657267656E6365206F66204347204D6574686F64_eq0080.gif)
引数0のとき1をとる
次の多項式
の中で、区間
において絶対値の最大値の最小値は、上の式の
、
、
とおくことで
![\min_{\small{r\in P_k,r(0)=1}} \quad \max_{\small{\lambda\in[\lambda_{min},\lambda_{max}]}} \quad |r(\lambda)| = \frac{1}{|C_m(1+2\frac{-\lambda_{max}}{\lambda_{max}-\lambda_{min}})|} = \frac{1}{|C_m(1+2\frac{\lambda_{min}}{\lambda_{max}-\lambda_{min}})|} = \frac{1}{C_m(1+2\frac{\lambda_{min}}{\lambda_{max}-\lambda_{min}})} = \frac{1}{C_m(1+2\eta)} \min_{\small{r\in P_k,r(0)=1}} \quad \max_{\small{\lambda\in[\lambda_{min},\lambda_{max}]}} \quad |r(\lambda)| = \frac{1}{|C_m(1+2\frac{-\lambda_{max}}{\lambda_{max}-\lambda_{min}})|} = \frac{1}{|C_m(1+2\frac{\lambda_{min}}{\lambda_{max}-\lambda_{min}})|} = \frac{1}{C_m(1+2\frac{\lambda_{min}}{\lambda_{max}-\lambda_{min}})} = \frac{1}{C_m(1+2\eta)}](436F6E76657267656E6365206F66204347204D6574686F64_eq0087.gif)
ここで、
とおいた。また、
を用いた。
ここから、
を評価する
を用いる。

を用いる。
但し、
とおいた。
は正定値対称行列のスペクトル条件数(Spectorum Condition Number)である。

![\min_{\small{r\in P_k,r(0)=1}} \quad \max_{\small{\lambda\in[\lambda_{min},\lambda_{max}]}} \quad |r(\lambda)| \le 2(\frac{\sqrt{\kappa}-1}{\sqrt{\kappa}+1})^m \min_{\small{r\in P_k,r(0)=1}} \quad \max_{\small{\lambda\in[\lambda_{min},\lambda_{max}]}} \quad |r(\lambda)| \le 2(\frac{\sqrt{\kappa}-1}{\sqrt{\kappa}+1})^m](436F6E76657267656E6365206F66204347204D6574686F64_eq0097.gif)
これを用いると
![]() |
となり、誤差の
ノルムに対して上のように評価できることがわかる。
このことから条件数が小さいほど収束が早いということがわかる。
上の式から、予測される収束率
は次のようにかける。

これは
が十分大きい場合、次のように変形される。

例えば
が
倍されたとしたときに収束率
がもとの収束率
からどのように近似的に求められるかを考える。

ここで
が十分大きいという近似を用いた。
が
倍されると収束率がだいたい
乗されることがわかる。これは同じ収束を得るまでに
倍の反復数を要するということを意味する。
ラプラス演算子を有限要素法離散化した場合、メッシュサイズと条件数
はだいたい次のような関係にあることが知られている。

このことから例えばメッシュサイズが
倍されるとだいたい次のことがいえる。
hが
倍
条件数
が
倍
収束率が
乗
反復数が
倍
つまり、メッシュサイズが半分になると反復数がだいたい2倍になるということがわかる。
サンプルプログラムではメッシュサイズを容易に変化させることができる。
main関数の中の最初の宣言で問題を解くための正方形の領域での四角形メッシュを定義している。
field::CElemAry_SquarePow2 ea(6,1.0,0.5,0.5);
第一の初期化変数はデフォルトで6になっているこれは一辺を
つに分割することを意味している。
第二の初期化変数は1.0となっているがこれは一辺の長さが1.0であることを意味している。
つまりデフォルトでメッシュサイズは
である。第一初期化変数を変化させてメッシュサイズと反復数が上のような反比例の関係に従うかどうか確認してみよう。
| メッシュサイズ | ![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|---|
| 反復数 | 47 | 94 | 188 | 376 | 758 |
このように単純な問題においては正確に上の性質を満たしていることがわかる。
CG法の収束は超線形性を示す。収束が超線形であるとは、対数グラフで残差の変化を表したときにグラフが直線的ではなく徐々に加速して始めより急な収束を示すことをいう。
次のグラフは前のサンプルプログラムの収束の様子である。
青い線は始めの収束の様子を表している。緑の線のようにあきらかに収束が加速しているのがわかる。このような超線形の収束はJacobi法やGauss-Sidel法や古典的などの古典的な反復法ではみられず、Krylov部分空間法ならではのものである。
上で行ったチェビシェフ多項式による収束の予測では線形の収束しか予測できないので、実際のところ上の式で得られる収束よりも現実の方がずっと早い収束が得られることが多い。