微積分 · 方向場

方向場

方向場は、平面の各点に、微分方程式y′ = f(x, y)が指定する傾きの短い線分を描いたものです。解はその線分に沿う曲線になります。初期点をドラッグして解全体の動きを見てから、オイラー法で傾きに沿って進んでみましょう。

01

この可視化での方向場

1階微分方程式y′=f(x,y)y' = f(x, y)は、平面の各点で傾きを指定します。その方向場(傾きの場とも呼びます)は、格子の各点で傾きを短い線分として描きます。解は、グラフがすべての点でその線分に接する微分可能な関数y(x)y(x)です。初期値問題では、与えられた点P=(x0,y0)P = (x_0, y_0)を通る解を求めます。fが連続で、yについて局所リプシッツ連続なら、各点を通る解が、あるxの区間でただ1つ存在します。つまり、傾きだけで各解が決まります。

Pをドラッグすると、それを通る曲線全体が連続的に動きます(解が存在する任意の閉区間上で)。8つの用意された方程式には閉じた形の解を使い、入力した方程式は適応刻み幅ルンゲ=クッタ法(Dormand–Prince 5(4)、相対許容誤差10−810^{-8})で数値計算します。y′がxだけに依存するなら、解の違いは定数だけであり、+C+Cは縦方向の移動です。yだけに依存するなら、fが0になる高さが水平な平衡解となり、隣り合う2つの平衡解の間の解は、互いを横にずらしたものになります。

オイラー法と刻み幅h
yk+1=yk+h f(xk,yk),xk+1=xk+hy_{k+1} = y_k + h\, f(x_k, y_k), \qquad x_{k+1} = x_k + h

オイラー法は現在の点で傾きを読み、その傾きで幅hだけ進んでから、再び傾きを読みます。ここではPから終点Xまで進み、最後の刻み幅はXに着くように短くします。解が滑らかなら、Xでの誤差はおおよそhに比例します。赤いキーはhを段階的に半分にし、そのたびに誤差もほぼ半分になるので、前後の誤差の比は2に近づきます。

02

注目するところ

  • 線分はすべて同じ長さで、矢印の先端もありません。意味があるのは傾きだけです。方向場は、ベクトル場(1,f)(1, f)の各矢印から長さの情報を取り除いたものです。
  • 解がすべてのxで存在するとは限りません。y′=y2y' = y^2の(0, 1)を通る解は1/(1−x)1/(1-x)で、xが1に近づくと際限なく増大します。このページは破線で描画を止め、反対側の枝とはつなぎません。y′=−x/yy' = -x/yの(0, 2)を通る解は半円で、傾きが鉛直になる点で終わります。その先でもオイラー法は数値を返しますが、解の値は存在しないと表示します。
  • リプシッツ条件がなければ、解は一意とは限りません。y=0y = 0とy=x3y = x^3はどちらも(0, 0)を通るy′=3y2/3y' = 3y^{2/3}の解です。また、y = 0上にしばらくとどまってから離れる曲線も解になります。(0, 0)からのオイラー法は、どの刻み幅でも0にとどまります。
  • 等傾線は、傾きが一定になる曲線f(x,y)=cf(x, y) = cです。各等傾線に沿って線分は平行であり、手で方向場を描くときに利用します。h = π/nとして、y′=cos⁡xy' = \cos xに対し(0, 0)からπまでオイラー法で進むと、値は正確にhになります。
03

操作方法

  • 空白をクリックすると別の解を追加できます(最大6本)。最後に触れた初期点がPとなり、オイラー法はそこから始まります。「図を移動」がオンのときは、ドラッグで図を移動します。
  • x軸上の▲をドラッグするか、ホイールを回すと、オイラー法の終点Xを動かせます。赤いキーは現在のhから始め、最後まで進んだ後はh = 1からやり直します。「収束の記録」ウィンドウは、閉じている間も各段階の値・誤差・比を記録します。
04

関連項目

y′=yy' = yに対し(0, 1)から1までオイラー法で進むと、複利の増加倍率(1+h)1/h(1 + h)^{1/h}が得られます。2本の連立微分方程式は相図として描かれます。

さらに読む: ウィキペディア: Slope field (英語); OpenStax, Calculus Volume 2, 4.2 Direction Fields and Numerical Methods (英語).