Я пытаюсь решить большую систему дифференциальных уравнений, используя solve_ivp
.
from scipy import integrate
sol = integrate.solve_ivp(func_system, (0,100), initial_value_array, t_eval)
. func_system
- это система дифференциальных уравнений, которая зависит от длины списка X
:
X = ['a','b','c','d',...]
K1, K2, K3, K4 = [1, 2, 2, 1]
def dadt(X,t):
return -K1*X[0]+K2*X[1]
def dbdt(X,t):
return K2*X[0]-(K2+K3+K4)*X[1]
def dcdt (X,t):
return ....
def dddt (X,t):
return ....
и т. Д.
def func_system(X,t):
return np.array([dadt(X,t), dbdt(X,t), dcdt(X,t), dddt(X,t)])
Поскольку X может быть очень длинным, я бы хотел перебрать список для создания имен функций. Например,
dxdt = ['d'+a+'dt' for a in X]
for i in range(len(dxdt)):
def dxdt[i]:
return something
, где я получаю "что-то" из кадра данных. Мой вопрос: можно ли перебирать список для создания имен функций?