generated at
複数関数受けれるオイラー法のコード
ここのコードが元
eular.py
import matplotlib.pyplot as plt import math import numpy as np # 微分方程式の関数 def dxdt(x, t): gradients = [] for i in range(len(x)): gradients.append(1) return gradients # オイラー法 def euler(num, x0, t0, tn, h): x = x0.copy() t = t0.copy() n = int((tn[0] - t0[0]) / h) #雑実装 X = [[] for _ in range(num)] T = [[] for _ in range(num)] # 漸化式を計算 for t_count in range(n): gradients = dxdt(x, t) for i in range(num): x[i] += gradients[i] * h X[i].append(x[i]) t[i] = t0[i] + t_count * h T[i].append(t[i]) return X, T num = 4 X, T = euler(num, [0,1,2,5], [0 for _ in range(num)], [15 for _ in range(num)], 0.01) print(X) print(T) for i in range(len(T)): plt.plot(T[i], X[i]) plt.show()