(10)misc.(euler()、rk23())

微分方程式の近似解は Graphs アプリケーションで直接グラフ化できるが、オイラー法、ルンゲ・クッタ法それぞれの組込函数も別に用意されている。

  • euler()
  • rk23()

-----------------------------------------------

構文:

  • euler(<微分方程式の右辺>, <独立変数>, <従属変数>, {<独立変数初期値>, <独立変数最大値>}, <従属変数初期値>, <独立変数ステップ> [, <オイラーステップ>])
  • euler(<連立微分方程式の右辺>, <独立変数>, {<従属変数リスト>}, {<独立変数初期値>, <独立変数最大値>}, {<従属変数初期値リスト>}, <独立変数ステップ> [, <オイラーステップ>])
  • rk23(<微分方程式の右辺>, <独立変数>, <従属変数>, {<独立変数初期値>, <独立変数最大値>}, <従属変数初期値>, <独立変数ステップ> [, <誤差許容範囲>])
  • rk23(<連立微分方程式の右辺>, <独立変数>, {<従属変数リスト>}, {<独立変数初期値>, <独立変数最大値>}, {<従属変数初期値リスト>}, <独立変数ステップ> [, <誤差許容範囲>])

引数は euler() も rk23() もほとんど同じである。解は行列で返ってくる。

<独立変数ステップ> は、解として出力される刻み幅。
<オイラーステップ> は、<独立変数ステップ> を何分割して計算するのかを指定する正の整数。デフォルトは 1。だから実際に計算されるステップサイズは <独立変数ステップ> ÷ <オイラーステップ> となる。
<誤差許容範囲> は 10E-14 以上、デフォルトは 0.001。
<連立微分方程式の右辺> は、system 形式、list 形式のどちらでもよい。

 

実行例 1:
-------------------------------------------
微分方程式:y' = 2 x
初期条件:y(0) = 0
-------------------------------------------

f:id:ti-nspire:20150330150835j:plain

厳密解は x^2 であるので、もっと細かくステップを刻めば 0, 1, 4, 9, 16, 25 となるはずである。

 

実行例 2(単振動):
-------------------------------------------
微分方程式:y'' + y = 0
初期条件:y(0) = 0, y'(0) = 1
-------------------------------------------

下のように 1 階の連立に変形してから解く。

y1' = y2, y1(0) = 0

y2' = -y1, y2(0) = 1

 

1 行目は system 形式で連立方程式を入力している。

3 ~ 4 行目は scatter plot でグラフ化する手段として解をリストに格納している。

5 行目は list 形式で連立方程式を入力している。

6 行目は厳密解を求めている。

f:id:ti-nspire:20150330154222j:plain

f:id:ti-nspire:20150330154327j:plain