如何解决用导数函数内的列表元素求解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 举报,一经查实,本站将立刻删除。