Я пытаюсь решить большую систему дифференциальных уравнений, используя solve_ivp
.
from scipy import integrate
def dXdt(X,t):
return np.array([dadt(X,t), dbdt(X,t), dcdt(X,t), dddt(X,t])
sol = integrate.solve_ivp(dXdt, (0,100), initial_value_array, t_eval)
dadt(X,t)
, dbdt(X,t)
, dcdt(X,t)
, dddt(X,t]
- это система дифференциальных уравнений что мне нужно получить из следующих словарей:
da_dict = {'a': -1.0, 'b': 2.0, 'c': 4.0}
db_dict = {'b': -10.0, 'a': 1.0}
dc_dict = {'c': -4.0, 'b': 3.0}
dd_dict = {'b': 5.0}
следующим образом:
def dadt(X,t):
return -1.0*X[0] + 2*X[1] + 3*X[2]
где, X[0]
, X[1]
, X[2]
, x[3]
на 'a'
, 'b'
, 'c'
, 'd'
в словарях. Точно так же,
def dbdt(X,t):
return -10*X[1] + 1*X[0]
def dcdt(X,t):
return -4*X[2] + 3*X[1]
def dddt(X,t):
return 5*X[1]
У меня есть более 100 дифференциальных уравнений, которые мне нужно решить с помощью solve_ivp. Как мне написать dadt(X,t)
, dbdt(X,t)
.... из словарей, фактически не записывая их?