複数関数受けれるオイラー法のコード
オイラー法 by Python
https://algorithm.joho.info/mathematics/euler-method-program/
ここのコードが元
Kinetoの弾性同期アルゴリズムのため
code: 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((tn0 - t00) / 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):
xi += gradientsi * h
Xi.append(xi)
ti = t0i + t_count * h
Ti.append(ti)
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(Ti, Xi)
plt.show()