常微分方程式の数値解法:オイラー法
初期条件 $(x_0, y_0)$ が与えられたときに、一階の微分方程式
$$\frac{dy}{d x} = f(x, y)$$
を解くことを考えます。上式の左辺で、刻みを $h$ として $x_k$ における微分係数を前進差分で近似すると、
$$\frac{y_{k+1} - y_k}{h} = f(x_k, y_k)$$
すなわち
$$y_{k+1} = y_k + h f(x_k, y_k)$$
という漸化式になります。上式において初期条件 $(x_0, y_0)$ を代入すると
$$y_1 = y_0 + h f(x_0, y_0)$$
となるので $y_1$ が求められ、以下順次 $y_2, y_3, ..., y_n $ を求めることができます。
課題54:オイラー法
$x_0 = 1$ で $y_0 = 2$ となる初期条件で微分方程式
$$\frac{dy}{d x} = 2 - \frac{y}{x}$$
を満足する関数 $y$ の $x = 2$ における値をEuler法で求めるためのプログラムをPythonで作成してください。刻み幅を変えた時にどうなるかも考察してください。
ただし Sympy
や Scipy.integrate.odeint
を使わないこと(答え合わせには使っても良い)。インターネットで検索して得たプログラムをそのまま使ったり改変して使っても構いませんが、そのときは取得元のURLを明記してください。
課題提出方法
-
基本的にGoogle Colaboratoryを用いてプログラミングしてください。どうしても Google Colaboratory を用いることができない場合のみ、Jupyter Notebook または Jupyter Lab を用いてください。
-
課題1つごとに、ノートブックを新規作成してください。1つのノートブックで複数の課題を解かないでください。
-
ノートブックを新規作成すると「Untitled.ipynb」のような名前になりますが、それを「学籍番号・氏名・課題番号」のような名前に変更してください。
-
質問・感想・要望などございましたらぜひ書き込んでください。
-
もし課題を解くにあたって参考になったウェブサイトがあれば、それについても触れてください。
-
課題を計算し終わった ipynb ファイルを提出するときは、指定したメールアドレスに Google Drive で共有する形で授業担当者に提出してください。