中点法のソースを表示
←
中点法
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[File:Midpoint method illustration.png|right|thumb|<math>y_n</math> が <math>y(t_n)</math> と正確に一致しているとしたときの中点法の図解。中点法では赤色の弦が中点での接線(緑色の線)と近似的に平行になるように <math>y_{n+1}</math> を計算する。]] [[応用数学]]、特に[[数値計算]]における'''中点法'''(ちゅうてんほう、{{Lang-en-short|midpoint method}})は、一段階法(one-step method)による[[常微分方程式]] :<math> y'(t) = f(t, y(t)), \quad y(t_0) = y_0 </math> の[[数値解析]]的な解法の一つである。 '''陽的中点法'''(explicit midpoint method)は以下の公式に基づく。 :<math> y_{n+1} = y_n + hf\left(t_n+\frac{h}{2},y_n+\frac{h}{2}f(t_n, y_n)\right) \qquad\qquad (1e)</math> '''陰的中点法'''(implicit midpoint method)は以下の公式に基づく。 :<math> y_{n+1} = y_n + hf\left(t_n+\frac{h}{2},\frac12 (y_n+y_{n+1})\right) \qquad\qquad (1i)</math> ここで <math>n=0, 1, 2, \dots</math>、<math>h</math> はステップ幅(step size)と呼ばれる微小量、<math>t_n=t_0 + n h</math>、また <math>y_n</math> は算出された <math>y(t_n)</math> の近似値。陽的中点法は'''修正オイラー法'''(modified Euler method)としても知られる<ref>{{harvnb|Süli|Mayers|2003|p=328}}</ref>。陰的中点法は最も単純な[[選点法]]であり、[[ハミルトン力学]]における{{仮リンク|シンプレクティック積分法|en|symplectic integrator}}に応用される。 この手法の名称は、上掲の公式において傾きを与える関数 <math>f</math> の値が、<math>y(t)</math> が既知の点 <math>t_n</math> と未知の(これから算出したい)点 <math>t_{n+1}</math> との中点 <math>t=t_n+h/2=\frac{t_n+t_{n+1}}{2}</math> において計算されることに由来する。 幾何学的に解釈することで直感的な理解がしやすくなるかもしれない(上掲の図を参照)。基本的な[[オイラー法]]では、曲線の <math>(t_n, y_n)</math> での接線を <math>f(t_n, y_n)</math> から計算し、次の値 <math> y_{n+1}</math> を接線と垂線 <math>t=t_{n+1}</math> との交点から求める。しかし、2階微分が <math>t_n</math> と <math>t_{n+1}</math> の間で常に正、または(上掲の図のように)常に負であれば、曲線は接線から逸れ続けて <math>h</math> の増大とともに誤差は拡大する。この図からは、この区間においては中点における接線(上側の緑色の線分)のほうが、ほとんどいつもより正確な曲線の近似となることが見てとれる。この接線は、まず元のオイラー法を使って中点での <math>y(t)</math> を推定し、次に <math>f</math> から傾きを計算することで求まる。この改良された接線を使って <math>y_n</math> から <math>y_{n+1}</math> の値が計算される(図中の赤色の弦)。中点での <math>y(t)</math> の推定に誤差が伴うため、赤色の弦は正確には緑色の線分(真の接線)と平行ではないことに注意する。 中点法における各ステップでの局所的な誤差は <math>O\left(h^3\right)</math> であり、大域的な誤差は <math>O\left(h^2\right)</math> となる。このように、中点法はオイラー法と比べて数値計算的に強力でありながら、<math>h \to 0</math> のときの誤差の収束は一般的により速い。 中点法は、[[ルンゲ=クッタ法]]として知られるより高次の手法の一クラスである。 ==導出== [[File:Numerical integration illustration, step=1.svg|right|thumb|微分方程式 <math>y'=y, y(0)=1</math> に対する数値計算の図解。青い線は[[オイラー法]]によるもの、緑の線は中点法によるもの、赤い線は厳密解 <math>y=e^t</math>。ステップ幅は <math>h=1.0</math>。]] [[File:Numerical integration illustration step=0.25.svg|right|thumb|同じく、<math>h=0.25</math> の場合。中点法のほうがオイラー法より収束が速いことが見てとれる。]] 中点法はオイラー法 :<math> y_{n+1} = y_n + hf(t_n,y_n) </math> を改良したものであり、手順も類似している。 オイラー法を導く鍵は近似式 :<math> y(t+h) \approx y(t) + hf(t,y(t)) \qquad\qquad (2)</math> であり、これは傾きの公式 :<math> y'(t) \approx \frac{y(t+h) - y(t)}{h} \qquad\qquad (3)</math> と <math> y' = f(t, y)</math> に注意することで得られる。 中点法の場合、(3) をより正確な :<math> y'\left(t+\frac{h}{2}\right) \approx \frac{y(t+h) - y(t)}{h} </math> で置き換える。すると (2) は次の式に変わる。 :<math> y(t+h) \approx y(t) + hf\left(t+\frac{h}{2},y\left(t+\frac{h}{2}\right)\right) \qquad\qquad (4)</math> この式を使って <math> y(t+h)</math> を求めることはできない。なぜなら <math>y</math> の <math>t+h/2</math> での値が分からないからである。そのため、ちょうどオイラー法で <math>y(t+h/2)</math> を求めるのと同じように、[[テイラー展開]]を使って :<math>y\left(t + \frac{h}{2}\right) \approx y(t) + \frac{h}{2}y'(t)=y(t) + \frac{h}{2}f(t, y(t))</math> と近似する。これを (4) に代入すると :<math>y(t + h) \approx y(t) + hf\left(t + \frac{h}{2}, y(t) + \frac{h}{2}f(t, y(t))\right)</math> のように陽的中点法 (1e) の公式が得られる。 陰的中点法 (1i) は、ステップの中間点 <math>t+h/2</math> での値を <math>y(t)</math> と <math>y(t+h)</math> とを結ぶ線分の中点 :<math>y\left(t+\frac h2\right)\approx \frac12\bigl(y(t)+y(t+h)\bigr)</math> で近似し、 :<math>\frac{y(t+h)-y(t)}{h}\approx y'\left(t+\frac h2\right)\approx k=f\left(t+\frac h2,\frac12\bigl(y(t)+y(t+h)\bigr)\right)</math> とすることで得られる。<math>y_n+h\,k</math> で <math>y(t_n+h)</math> を近似すると陰的ルンゲ=クッタ法 :<math>\begin{align} k&=f\left(t_n+\frac h2,y_n+\frac h2 k\right)\\ y_{n+1}&=y_n+h\,k \end{align}</math> が得られるが、前半部分はステップ幅を <math>h/2</math> とした後退オイラー法を含んでいる。 陰的中点法では時間についての対称性から <math>h</math> の偶数乗の局所誤差項は全てキャンセルし、誤差は自動的に <math>O\left(h^3\right)</math> となる。<math>k</math> の決定を後退オイラー法ではなく(前進)オイラー法で行うと、再び陽的中点法が得られる。 ==関連項目== * [[区分求積法]] * {{仮リンク|ホイン法|en|Heun's method}} * [[リープ・フロッグ法]] * [[ベレの方法]] ==脚注== {{reflist}} ==参考文献== * {{cite book |author1=Griffiths,D. V. |author2=Smith, I. M. |title=Numerical methods for engineers: a programming approach |publisher=CRC Press |location=Boca Raton |year=1991 |isbn=0-8493-8610-1 |oclc= |doi= |page=218 }} * {{Citation | last1=Süli | first1=Endre | last2=Mayers | first2=David | title=An Introduction to Numerical Analysis | publisher=[[Cambridge University Press]] | isbn=0-521-00794-1 | year=2003}}. {{DEFAULTSORT:ちゆうてんほう}} [[Category:解析学]] [[Category:数値解析]] [[Category:数値微分方程式]] [[Category:数学に関する記事]]
このページで使用されているテンプレート:
テンプレート:Citation
(
ソースを閲覧
)
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Harvnb
(
ソースを閲覧
)
テンプレート:Lang-en-short
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
中点法
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報