它适用于在这里找到的一个样本:How to incorporate time-varying parameters from lookup table into boost::odeint, c++
但这对我的例子不起作用
TransferF::TransferF(const double& deltaT) : dt(deltaT), t(0.0), y(2)
{
// initial values
y[0] = 2.0; // x1
y[1] = 0.0; // x2
}
void TransferF::ode(const state_type &x, state_type &y, double t)
{
y[0] = x[0];
y[1] = x[1];
y[2] = (-2*y[1] - y[0] + 1) / (pow(y[0],2));
}
在py中也是一样的:
def modelt(x,t):
y = x[0]
dydt = x[1]
dy2dt2 = (-2*dydt - y + 1)/ (y **2)
return [dydt,dy2dt2]
x3 = odeint(modelt,[2,0],timev)
我预期时间序列的结果相同,但是Python解决方案正在下降,C++正在上升。你知道吗
y
应该只包含导数y', y"
,而不是函数y
本身:相关问题 更多 >
编程相关推荐