オイラー法
これ読んで理解した
注意: ↑のページでいうtは導関数の定義でいうとこのxに対応、xはyに対応している
注意: この例だとdxdt()はxを引数に取っているけど、xとtの両方を本当は取るべき
こっちの方が正確でより良いコード
code: eular.py
import matplotlib.pyplot as plt
import math
# 微分方程式の関数
# xがこの値の場合に、
def dxdt(x, t):
return math.sin(t)
# オイラー法
def euler(x0, t0, tn, h):
x = x0
t = t0
n = int((tn - t0) / h)
X = []
T = []
# 漸化式を計算
for i in range(n):
x += dxdt(x, t) * h
X.append(x)
t = t0 + i * h
T.append(t)
return X, T
#lim h->0のさまざまな値でためしたsin wave X, T = euler(-2, 0, 50, 1)
plt.plot(T,X)
X, T = euler(-2, 0, 50, 0.5)
plt.plot(T,X)
X, T = euler(-2, 0, 50, 0.01)
plt.plot(T,X)
plt.show()