我有以下要在 scipy.integrate.odeint 中实现的功能
def numericSolver(rv_,t,alpha=1.,gamma=1.):
BVal = B_f(alpha,gamma,t) #this function returns a vector
BdotVal = Bdot_f(alpha,gamma,t) #this function returns a vector
matDynamics = np.array([[0.,1.,float(BdotVal[2]),0.,0.,0.],
[0.,0.,0.,float(BVal[2]),0,-float(BVal[1])],
[0.,0.,0.,1,0.,0.],
[0.,-float(BVal[2]),0.,0.,0.,float(BVal[0])],
[0.,0.,0.,0.,0.,1.],
[0.,float(BVal[1]),0.,-float(BVal[0]),0.,0.]])
derivatives = matDynamics.dot(rv_)
return derivatives
为了实现此功能,我将 odeint 称为
solution = odeint(numericSolver,IC,t=t,args=(alpha,gamma))
其中IC是初始条件向量,t是感兴趣的时间向量,alpha和gamma是 的输入numericSolver。
为了更清楚的解释,derivatives是解决方案,, 到方程
在哪里是matDynamics和rv_是.
有没有办法让 odeint 返回derivatives每个值的值t?还是最好使用中返回的值手动计算导数值solution?