線型多段法のソースを表示
←
線型多段法
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''線型多段法'''(linear multistep method)は、[[常微分方程式の数値解法]]の一つである<ref name="Yamamoto1">{{Cite book |和書 |author=山本哲朗 |title=数値解析入門 |edition=増訂版 |date=2003-06 |publisher=[[サイエンス社]] |series=サイエンスライブラリ 現代数学への入門 14 |ISBN=4-7819-1038-6}}</ref><ref name="Mori">{{Cite book|和書|author=森正武|authorlink=森正武|year=2002|month=2|title=数値解析|publisher=共立出版|isbn=4-320-01701-3|}}</ref>。 == 概要 == [[常微分方程式]]の数値解法では、初期値から始めて微小な刻み幅の分だけ時間を進め、次の点での解を求める。このステップを繰り返せば[[解曲線]]が得られる。 過去の<math> s </math>個の時刻における値を用いて次の値を算出する方法を、<math> s </math>段法または<math> s </math>次の多段法という。特に<math> s </math>が1の場合は1段法または単段法と呼ばれる<ref name="Yamamoto1"/><ref name="Mori"/>。 1段法(single-step method)の例として、[[オイラー法]]や[[ルンゲ=クッタ法]]が挙げられる<ref name="Yamamoto1"/><ref name="Mori"/>。[[オイラー法]]では、過去の1時刻での値のみを用いて最新の値を決定する。[[ルンゲ=クッタ法]]では、間にある複数のステップ(例えば中点)の値を用いることで良い近似値を得ているが、2番目のステップの値を得る前に過去の情報を全て捨てている。 多段法では、過去の情報を捨てずに保持して用いることで有効な値を得る。すなわち、多段法では過去の複数の時刻での値を用いる。線型多段法の場合は、それらの[[線型結合]]が用いられる。 == 定義 == [[常微分方程式]]とその[[初期値問題]]を次のように定める。 : <math> y' = f(t,y), \quad y(t_0) = y_0. </math> 離散的な時間<math> t_i </math>における<math> y(t) </math>の値は次のようになる。 : <math> t_i = t_0 + i h </math> : <math> y_i = y(t_i) = y(t_0 + i h) </math> : <math> y_i' = f(t_i, y_i) </math> ここで<math> h </math>は時間の刻み幅であり、<math> \Delta t </math>とも書かれる。 線型多段法では、求める<math> y </math>の値を計算するために<math> y_i </math>と<math> y_i' </math>の線型結合を用いる。<math> s </math>段法では次の値を計算するため、過去の<math> s </math>個の値<math> y_n, \ldots, y_{n+s-1} </math>を用いる。そのため、求める最新の値は<math> y_{n+s} </math>となる。 線型多段法は次の形で表される。 : <math> \begin{align} & y_{n+s} + a_{s-1} y_{n+s-1} + a_{s-2} y_{n+s-2} + \cdots + a_0 y_n \\ & \qquad {} = h \bigl( b_s f(t_{n+s},y_{n+s}) + b_{s-1} f(t_{n+s-1},y_{n+s-1}) + \cdots + b_0 f(t_n,y_n) \bigr), \end{align} </math> <math> 2s + 1 </math>個の係数<math> a_0, \ldots, a_{s-1} </math> と <math> b_0, \ldots, b_s </math>がこの方法を定める。各係数は使用者が決めるが、多くの係数がゼロとされることがよくある。<math> y(t) </math>が<math> n </math>次の[[多項式]]であれば、使用者はこれを厳密に[[補間]]するように係数を選ぶのが一般的である。 == 特徴 == === 準備 === 上記のように、<math> s </math>段法では過去の<math> s </math>個の時刻における値が必要となる。初期値として1時刻の値のみが与えられている場合は、1段法を<math> s-1 </math>回実行するなどして必要な値を用意しておく。 === 陽公式と陰公式 === <math> b_s = 0 </math>であればこの方法は[[陽関数|陽公式]]と呼ばれる。陽公式は<math> y_{n+s} </math>を直接算出できる。 <math> b_s </math>の値がゼロでなければ、<math> y_{n+s} </math>の値は<math> f(t_{n+s}, y_{n+s}) </math>の値に依存する。この方法は[[陰関数|陰公式]]と呼ばれ、<math> y_{n+s} </math>を求めるための式があらかじめ解かれていなければならない。陰公式を解くためには[[ニュートン法]]のような[[反復法 (数値計算)|反復法]]がよく用いられる。 陽公式は<math> y_{n+s} </math>の値を「予測」するために用いられることがある。陽公式から求めた<math> y_{n+s} </math>の値(予測子)を陰公式の<math> f(t_{n+s}, y_{n+s}) </math>に代入すれば、より正確な<math> y_{n+s} </math>に「修正」できる。これが[[予測子修正子法]]である<ref name="Yamamoto1"/><ref name="Mori"/>。 ===収束性=== 出発値を一定の誤差以内に選べば<math>m</math>次の安定な線形多段法は<math>m</math>次収束することが知られている<ref name="Yamamoto1"/><ref>Ortega, J. M. (1990). Numerical analysis: a second course. Society for Industrial and Applied Mathematics.</ref>(ただし<math>m</math>次の[[ルンゲ=クッタ法]]は出発値に関係なく<math>m</math>次収束する<ref name="Yamamoto1"/>)。 ===Dahlquist barrier=== <math>m</math>次の安定な<math>N</math>次多段法において、<math>N</math>が偶数の時<math>m\leq N+2</math>、<math>N</math>が奇数の時<math>m\leq N+1</math>である<ref name="Yamamoto1"/><ref>Dahlquist, Germund (1956), "Convergence and stability in the numerical integration of ordinary differential equations", Mathematica Scandinavica, 4: 33--53.</ref><ref>Hairer, Ernst; Nørsett, Syvert Paul; Wanner, Gerhard (1993), Solving ordinary differential equations I: Nonstiff problems (2nd ed.), Berlin: Springer Verlag, ISBN 978-3-540-56670-0.</ref>。よって<math>N+2</math>次より高次の安定な線形<math>N</math>段法は存在しない<ref name="Yamamoto1"/>。 == 例 == === 2次のアダムス・バッシュフォース(Adams-Bashforth)法 === これは簡単な線型2段法の一つである。 : <math> y_{n+2} = y_{n+1} + \tfrac32 hf(t_{n+1},y_{n+1}) - \tfrac12 hf(t_n,y_n). </math> この方法では2つの値<math> y_n </math>と<math> y_{n+1} </math>を用いて<math> y_{n+2} </math>を計算する。しかし[[初期値問題]]では<math> y_0</math>だけが与えられていて、<math> y_1 </math>はこの公式では求められない。そこで計算の開始にあたって<math>y_1</math>だけは、別の方法たとえば[[2次のルンゲクッタ法]]などで求める必要がある。 ==脚注== {{reflist}} == 外部リンク == * [http://www.scholarpedia.org/article/Linear_multistep_method スカラーペディア記事 "Linear multistep method" (英語)] [[Category:解析学|せんけいたたんほう]] [[Category:数値解析|せんけいたたんほう]] [[Category:数値微分方程式|せんけいたたんほう]] [[Category:数学に関する記事|せんけいたたんほう]]
このページで使用されているテンプレート:
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
線型多段法
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報