我试图用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)
….而不实际写它们
我不确定如何处理t参数,因为在任何示例中都没有使用它。我将X和t的占位符值放在下面的代码中
我在下面写了一个片段,可能对您的示例很有用。我把你的字典列在一个列表里,如果你已经写了所有的字典,你可以自己加上其他的
我从未使用过scipy(至今!),但我希望这可以帮助您不必编写所有函数,如果这对您有用,请告诉我
相关问题 更多 >
编程相关推荐