用导数函数内的列表元素求解ODE

问题描述

我正在尝试使用SciPy的resolve_ivp函数绘制变量a与时间的关系图。下面的函数定义了导数:

def da_dt0(a,t):
    return H0*(omega_m/a+a**2*omega_l-5*eta*omega_m/3.)**(1./2)

其中H0,omega_m,omega_1和eta都是常数。 我用这两行代码来求解a(t)。

trange_void = np.linspace(7.5,15.,101)
sol0 = solve_ivp(da_dt0,[7.5,15.],y0=[av0],t_eval = trange_void)

其中av0也是前面定义的常量。

但是,现在我正在尝试更改eta参数,以了解其对a(t)的影响。我有一个名为eta_list的列表,其中包含101个组件,每个组件对应于t值。

我尝试制作一个给出t值的eta值的函数,并将该函数放入da_dt0()函数中:

def eta_fxn(t):
    index = int(np.round((100./15.)*t))
    return eta_list[index]

def da_dt0(a,t):
    eta_value = eta_fxn(t)
    return H0*(omega_m/a+a**2*omega_lambda-5*eta_value*omega_m/3.)**(1./2)

这是一个漫长的询问过程:如何使用带有作为列表元素的参数(eta)的solve_ivp解决da_dt0()。我尝试在我的resolve_ivp调用中使用args =(),但我认为这些args必须是标量,而不是列表。

请让我知道我是否可以澄清任何内容,或者是否不应该使用solve_ivp。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)