選点法

選点法(せんてんほう、: Collocation method) とは、数値解析において常微分方程式偏微分方程式積分方程式に対して数値解を与える方法である。この方法のアイディアは、解候補(通常はある次数以下の多項式)からなる有限次元のベクトル空間と定義域から幾つかの点を先に選び、それらの点で与えられた方程式を満足する解を解候補の空間から選択することである。そのように選ばれた点は、選点(collocation points)と呼ぶ。

常微分方程式

区間 [t0, t0 + h] 上の常微分方程式の初期値問題を以下のように定める。

y = f ( t , y ) , y ( t 0 ) = y 0 . {\displaystyle y'=f(t,y),\quad y(t_{0})=y_{0}.}

解候補の空間を n 次以下の多項式からなるベクトル空間とし、点 0 ≤ c1 < c2 < ... < cn ≤ 1 を選ぶ(時々、ck も選点と呼ばれるが、方程式の定義域が [0,1] とは限らないので最初に述べた選点とは少し違う定義となる)。

それらの点に対応する選点法による近似(多項式)解 p(t) は、初期値条件 p(t0) = y0 と選点 tk = t0 + ckh (1 ≤ kn) での微分方程式 p'(tk) = f (tk, p(tk)) を満足する。そのように与えられた方程式の数は n+1 であり、p の未知係数の数と一致する。そのため、近似解は一意に定められる。したがって、最後の時刻 t0 + h での近似解は p(t0 + h) となる。

以上のような方法は実際にすべて陰的ルンゲ=クッタ法であり、以下のブッチャー配列で与えられる。

c 1 a 11 a 12 a 1 n c 2 a 11 a 12 a 2 n c n a 11 a 12 a n n b 1 b 2 b n {\displaystyle {\begin{array}{c|ccccc}c_{1}&a_{11}&a_{12}&\cdots &a_{1n}\\c_{2}&a_{11}&a_{12}&\cdots &a_{2n}\\\vdots &\vdots &\vdots &\ddots &\vdots \\c_{n}&a_{11}&a_{12}&\cdots &a_{nn}\\\hline &b_{1}&b_{2}&\cdots &b_{n}\end{array}}}

この中で、ck は選ばれた点に対応し、bkakj は以下の公式で与えられる[1]

b k = 0 1 q k ( τ ) q k ( c k ) d τ {\displaystyle b_{k}=\int _{0}^{1}{\frac {q_{k}(\tau )}{q_{k}(c_{k})}}d\tau }
a k j = 0 c k q j ( τ ) q j ( c j ) d τ {\displaystyle a_{kj}=\int _{0}^{c_{k}}{\frac {q_{j}(\tau )}{q_{j}(c_{j})}}d\tau }

ここで、 q j ( τ ) = ( τ c j ) 1 i = 1 n ( τ c i ) {\displaystyle q_{j}(\tau )=(\tau -c_{j})^{-1}\prod _{i=1}^{n}(\tau -c_{i})} である。

しかし、陰的ルンゲ=クッタ法がすべて選点法であるわけではない[2]

計算例:台形公式

例として、上記の常微分方程式に対し点 c1 = 0c2 = 1 を選ぶとしよう(よって n = 2)。近似解 p(t) は2次多項式であり、選点法による方程式

p ( t 0 ) = y 0 , {\displaystyle p(t_{0})=y_{0},\,}
p ( t 0 ) = f ( t 0 , p ( t 0 ) ) , {\displaystyle p'(t_{0})=f(t_{0},p(t_{0})),\,}
p ( t 0 + h ) = f ( t 0 + h , p ( t 0 + h ) ) {\displaystyle p'(t_{0}+h)=f(t_{0}+h,p(t_{0}+h))\,}

を満足する。計算を簡単にするために、p を以下の形で書く。

p ( t ) = α ( t t 0 ) 2 + β ( t t 0 ) + γ {\displaystyle p(t)=\alpha (t-t_{0})^{2}+\beta (t-t_{0})+\gamma \,}

上記の方程式系を用いて未知の係数を解くと

α = 1 2 h ( f ( t 0 + h , p ( t 0 + h ) ) f ( t 0 , p ( t 0 ) ) ) , β = f ( t 0 , p ( t 0 ) ) , γ = y 0 . {\displaystyle {\begin{aligned}\alpha &={\frac {1}{2h}}\left(f(t_{0}+h,p(t_{0}+h))-f(t_{0},p(t_{0}))\right),\\\beta &=f(t_{0},p(t_{0})),\\\gamma &=y_{0}.\end{aligned}}}

であることがわかる。したがって対応する選点法は次の公式で(陰的に)与えられる。

y 1 = p ( t 0 + h ) = y 0 + 1 2 h ( f ( t 0 + h , y 1 ) + f ( t 0 , y 0 ) ) , {\displaystyle y_{1}=p(t_{0}+h)=y_{0}+{\frac {1}{2}}h\left(f(t_{0}+h,y_{1})+f(t_{0},y_{0})\right),\,}

ここで、y1 = p(t0 + h)t = t0 + h での近似解である。

この方法は微分方程式における台形公式として知られている。確かに、方程式を以下のように書き換えって(数値積分における)台形公式で近似することから上記の公式を導出することも可能である。

y ( t ) = y ( t 0 ) + t 0 t f ( τ , y ( τ ) ) d τ , {\displaystyle y(t)=y(t_{0})+\int _{t_{0}}^{t}f(\tau ,y(\tau ))\,{\textrm {d}}\tau ,\,}

ガウス・ルジャンドル法

上述の点 cin 次のルジャンドル多項式の根として選べる。それらの点に対応する選点法は、n 段ガウス・ルジャンドル法(Gauss-Legendre method)として知られている。n 段ガウス・ルジャンドルは次数 2n を持ち、n 段ルンゲ=クッタ法の中にでも一番精度の高い方法である[3]。さらに、ガウス・ルジャンドル法はすべてA-安定であり[4]硬い方程式にも適用できる。しかし n が4以上の時、ルジャンドル多項式の根を効率良く計算することが困難であり、加えて対応する方法の係数も極めて複雑であるので、4段以上のガウス・ルジャンドル法はあまり使われない[5]

2段ガウス・ルジャンドル法は以下のブッチャー配列で与えられる。

1 2 3 6 1 4 1 4 3 6 1 2 + 3 6 1 4 + 3 6 1 4 1 2 1 2 {\displaystyle {\begin{array}{c|cc}{\frac {1}{2}}-{\frac {\sqrt {3}}{6}}&{\frac {1}{4}}&{\frac {1}{4}}-{\frac {\sqrt {3}}{6}}\\{\frac {1}{2}}+{\frac {\sqrt {3}}{6}}&{\frac {1}{4}}+{\frac {\sqrt {3}}{6}}&{\frac {1}{4}}\\\hline &{\frac {1}{2}}&{\frac {1}{2}}\\\end{array}}}

そして3段ガウス・ルジャンドル法は以下のブッチャー配列で与えられる。

1 2 15 10 5 36 2 9 15 15 5 36 15 30 1 2 5 36 + 15 24 2 9 5 36 15 24 1 2 + 15 10 5 36 + 15 30 2 9 + 15 15 5 36 5 18 4 9 5 18 {\displaystyle {\begin{array}{c|ccc}{\frac {1}{2}}-{\frac {\sqrt {15}}{10}}&{\frac {5}{36}}&{\frac {2}{9}}-{\frac {\sqrt {15}}{15}}&{\frac {5}{36}}-{\frac {\sqrt {15}}{30}}\\{\frac {1}{2}}&{\frac {5}{36}}+{\frac {\sqrt {15}}{24}}&{\frac {2}{9}}&{\frac {5}{36}}-{\frac {\sqrt {15}}{24}}\\{\frac {1}{2}}+{\frac {\sqrt {15}}{10}}&{\frac {5}{36}}+{\frac {\sqrt {15}}{30}}&{\frac {2}{9}}+{\frac {\sqrt {15}}{15}}&{\frac {5}{36}}\\\hline &{\frac {5}{18}}&{\frac {4}{9}}&{\frac {5}{18}}\end{array}}}

偏微分方程式

偏微分方程式における選点法は、単独の方法より、あるスキームを実装するために必要とされる手法の一つに近い。例えば、放物型偏微分方程式の解を計算する場合、有限差分法より方程式の空間変数を離散化すると時間変数の常微分方程式となるので上述の選点法が適用できる。

現在よく使われているほとんどのスキームに選点法(必ずしも常微分方程式における選点法ではない)が使える。特に重要と見なされるスキームの中には、有限要素法[6][7][8][9]重み付き残差法[10]も参照)、スペクトル法[11][12](選点法に基づいたスペクトル法は時々擬スペクトル法(英語版)として知られている[13])がある(具体的な方法は、それぞれの記事を参照)。ここでは例として、フーリエ選点法と呼ばれるスペクトル法を簡単に紹介する。

フーリエ選点法は(理想的に)指数的収束速度を持ち[14]周期的境界条件を持つ方程式に対し特に効果的である。空間領域 [0, 2π] 上の(周期的境界条件付き)移流方程式

u t + a ( x ) u x = 0 , u ( x , 0 ) = f ( t ) {\displaystyle u_{t}+a(x)u_{x}=0,\;u(x,0)=f(t)}

を考える。偶数の N に対し、等距離の点 xj = jhh = 2π/N)を選点として選ぶ。簡単のために、まず方程の時間変数を(前進)差分法より離散化し、次のようにする。

U n + 1 U n Δ t = a ( x ) u x {\displaystyle {\frac {U^{n+1}-U^{n}}{\Delta t}}=-a(x)u_{x}}

ここで、Un は時間 tn での近似解である。したがって、正しく ux を近似することで、次の時刻での近似解がわかるようになる。

既知の数値 vj = Un(xj) から空間上のグリッド関数 v = {vj} を定義し、周期的に拡張する。そして a(x)ux を次のように各選点で近似する。

a ( x j ) u x ( x j ) a ( x j ) ( D v ) j {\displaystyle a(x_{j})u_{x}(x_{j})\approx a(x_{j})(Dv)_{j}}

ここで、D は スペクトル微分作用素 (spectral differentiation operator) という線型作用素であり、以下のように定義される[15]

D v = F h 1 ( i ξ F h ( v ) ) {\displaystyle Dv={\mathcal {F}}_{h}^{-1}(i\xi {\mathcal {F}}_{h}(v))}

ここで、 F h {\displaystyle {\mathcal {F}}_{h}} は半離散フーリエ変換 (semi-discrete Fourier transform) といい、以下のように定義される[16]

F h ( v ) = h j = e i ξ x j v j , ξ [ π / h , π / h ] {\displaystyle {\mathcal {F}}_{h}(v)=h\sum _{j=-\infty }^{\infty }e^{i\xi x_{j}}v_{j},\;\xi \in [-\pi /h,\pi /h]}

そして対応する逆変換

( F h 1 ( v ^ ) ) j = 1 2 π π / h π / h e i ξ x j v ^ ( ξ ) d ξ , j Z {\displaystyle ({\mathcal {F}}_{h}^{-1}({\hat {v}}))_{j}={\frac {1}{2\pi }}\int _{-\pi /h}^{\pi /h}e^{i\xi x_{j}}{\hat {v}}(\xi )d\xi ,\;j\in \mathbb {Z} }

である[16]。上述の近似から、次の時刻 tn+1 での近似解がわかる。

また、グリッド関数を空間全体に周期的に拡張する代わりに、そのまま離散フーリエ変換を使って近似することも可能である。この方法は高速フーリエ変換を活用できるため、計算速度が相応に上がる。離散フーリエ変換は以下のように定義される。

( F ( v ) ) j = 1 N k = 0 N v k e i j x k , j = 0 , ± 1 , , ± N / 2 {\displaystyle ({\mathcal {F}}(v))_{j}={\frac {1}{N}}\sum _{k=0}^{N}v_{k}e^{ijx_{k}},\;j=0,\pm 1,\ldots ,\pm N/2}

そして対応する逆変換は、

( F 1 ( v ^ ) ) j = k = N / 2 N / 2 v ^ k e i k x j , j = 0 , 1 , , N {\displaystyle ({\mathcal {F}}^{-1}({\hat {v}}))_{j}=\sum _{k=-N/2}^{N/2}{\hat {v}}_{k}e^{ikx_{j}},\;j=0,1,\ldots ,N}

である。スペクトル微分作用素 D を使わずに、まず周波数領域の導関数を以下のように設定する。

v ^ j = { i j ( F ( v ) ) j j ± N / 2 0 j = ± N / 2 {\displaystyle {\hat {v}}_{j}={\begin{cases}ij({\mathcal {F}}(v))_{j}\;&j\neq \pm N/2\\0\;&j=\pm N/2\end{cases}}}

それから、ux を以下のように近似できる。

a ( x j ) u x ( x j ) a ( x j ) ( F 1 ( v ^ ) ) j {\displaystyle a(x_{j})u_{x}(x_{j})\approx a(x_{j})({\mathcal {F}}^{-1}({\hat {v}}))_{j}}

最後に、次の時刻での近似解を同じように計算する。

出典

[脚注の使い方]
  1. ^ Iserles 2008, p. 43
  2. ^ Ascher & Petzold 1998; Iserles 1996, pp. 43–44
  3. ^ Iserles 2008, pp. 46–47
  4. ^ Iserles 2008, p. 63
  5. ^ Iserles 2008, pp. 47
  6. ^ 森正武. (1986) 有限要素法とその応用. 岩波書店.
  7. ^ 菊池文雄. (1999). 有限要素法概説 [新訂版]. サイエンス社.
  8. ^ 菊池文雄. (1994). 有限要素法の数理. 培風館.
  9. ^ 有限要素法で学ぶ現象と数理―FreeFem++数理思考プログラミング―, 日本応用数理学会 監修・大塚 厚二・高石 武史著, 共立出版.
  10. ^ Finlayson, B. A., & Scriven, L. E. (1966). The method of weighted residuals—a review. Appl. Mech. Rev, 19(9), 735-748.
  11. ^ 石岡圭一, スペクトル法による数値計算入門, 東京大学出版会.
  12. ^ Lloyd N. Trefethen (2000) Spectral Methods in MATLAB. SIAM, Philadelphia, PA.
  13. ^ Fornberg, B. (1998). A practical guide to pseudospectral methods (Vol. 1). Cambridge University Press.
  14. ^ Trefethen 1996, p. 233
  15. ^ Trefethen 1996, p. 238
  16. ^ a b Trefethen 1996, p. 94

参考文献

  • Ascher, Uri M.; Petzold, Linda R. (1998), Computer Methods for Ordinary Differential Equations and Differential-Algebraic Equations, Philadelphia: Society for Industrial and Applied Mathematics, ISBN 978-0-89871-412-8 .
  • Hairer, Ernst; Nørsett, Syvert Paul; Wanner, Gerhard (1993), Solving ordinary differential equations I: Nonstiff problems, Berlin, New York: Springer-Verlag, ISBN 978-3-540-56670-0 .
  • Iserles, Arieh (2008), A First Course in the Numerical Analysis of Differential Equations (Second Edition), Cambridge University Press, ISBN 978-0-521-73490-5 .
  • Trefethen, Lloyd N. (1996年). “Finite Difference and Spectral Methods”. 2017年1月2日閲覧。
有限差分法
放物型偏微分方程式
  • FTCSスキーム(英語版)
  • クランク・ニコルソン法(英語版)
双曲型偏微分方程式
  • ラックス・フリードリヒ法(英語版)
  • ラックス・ウェンドロフ法(英語版)
  • マコマック法(英語版)
  • 風上スキーム(英語版)
  • 特性曲線法
その他
有限体積法
  • ゴドノフスキーム(英語版)
  • 高分解能スキーム(英語版)
  • 保存法則用単調性上流中心差分スキーム(英語版)
  • 移流上流分離法(英語版)
  • リーマン解法(英語版)
有限要素法
  • hp-FEM(英語版)
  • 拡張型有限要素法(英語版) (XFEM)
  • 不連続ガラーキン法(英語版) (DG)
  • スペクトル要素法(英語版) (SEM)
  • モルタル有限要素法(英語版)
メッシュフリー法粒子法
  • SPH法
  • MPS法(英語版)
  • MPM法(英語版)
領域分割法
  • シューア補元法(英語版)
  • 仮想領域法(英語版)
  • シュヴァルツ交代法加法シュヴァルツ法(英語版)抽象加法シュヴァルツ法(英語版)
  • ノイマン・ディレクレ法(英語版)
  • ノイマン・ノイマン法(英語版)
  • ポアンカレ・ステクロフ法(英語版)
  • バランシング領域分割法(英語版) (BDD)
  • BDDC法(英語版)
  • FETI法(英語版)
  • FETI-DP法(英語版)
その他