如何写出形式为 x'=f(x,t) 的方程式,其中 t 明确出现在 odeint 中

How to write equation of the form x'=f(x,t) where t appears explicitly in odeint

我正在尝试使用 odeint 求解以下形式的微分方程:

y[0]'(r)=y1,
y[1]'(r)=f(y,r)

明确出现 t 的地方。如何在等式的代码中写 "r"?

参见下面的示例

typedef std::vector< double > state_type;

class phieq{
double lambda, mu, g, sigma, rv;

public:
phieq(double  mlambda, double  mmu, double mg, double msigma, double mrv) : lambda(mlambda), mu(mmu), g(mg), sigma(msigma), rv(mrv) {} 
void operator() (const state_type &y , state_type &dydr , const double /* t */) 
{ dydr[0] = y[1];
  dydr[1] = -((2.0*y[1])/r)+lambda*y[0]*y[0]*y[0]-(mu*mu)*y[0];
}
};
在这种情况下,

r 是您的自变量。 odeint 源自动力系统,因此在其示例中使用 t(表示时间)。在你的情况下你应该写

void operator() (const state_type &y , state_type &dydr , const double r)

然后你可以在下面的表达式中使用 r。