Я пытаюсь решить ODE с помощью solve_ivp, внутри ODE, некоторые функции являются результатом mp.quad (функция интеграции mpmath)
Я использую python3 под Mac, и появляется ошибкаthis:
Traceback (most recent call last):
File "LG_evolution.py", line 248, in <module>
NumEvol = solve_ivp(lambda t,y: BE_Group_1(t,y),t_span=(1e-9, z[-1]),y0=init_state,t_eval=z,vectorized=False,rtol=1e-12, atol=1e-15)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scipy/integrate/_ivp/ivp.py", line 544, in solve_ivp
ts = np.hstack(ts)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/numpy/core/shape_base.py", line 288, in hstack
return _nx.concatenate(arrs, 1)
ValueError: need at least one array to concatenate
from mpmath import *
from scipy.integrate import solve_ivp
def gamma_Nt_O2(z):
return quad(lambda x: np.sqrt(x)*sigma_Nt_O2(x)*mp.besselk(1,np.sqrt(x)*z*mF/M1),[smin_Nt_O2/mF**2,np.inf],error=False, method='tanh-sinh')*(mF**3)*T(z)/(64*np.pi**2)
#**Here Washout(z) contains gamma_Nt_O2(z),which is note explicitly shown**
def Washout(z):
return float(W_ID(z)+W_ID_O2(z) +W_dL1_O2(z)+W_dL2(z)+W_dL2_O2(z))
def BE_Group(z,func):
d_Num_N1 = -(Decay(z)+Scattering(z)) * ( func[0] - Num_N1_eq(z) )
d_Num_BmL = -eps * Decay(z) * ( func[0] - Num_N1_eq(z) ) - ( Washout(z)+(func[0]/Num_N1_eq(z)*gamma_Hs(z) + 2*gamma_St(z))/H(z)/z)*func[1]
return d_Num_N1, d_Num_BmL
NumEvol = solve_ivp(lambda t,y: BE_Group(t,y),t_span=(1e-9, z[-1]),y0=init_state,t_eval=z,vectorized=True,rtol=1e-12, atol=1e-15)
Когда вызывается NumEvol, будет показана ошибка, описанная выше