2015-10-21 4 views
1

Я пытаюсь использовать odeint решить дифференциальное уравнение вида:Как написать уравнение вида х '= f (х, т), где т появляется явно в odeint

у [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]; 
} 
}; 

ответ

1

г ваш независимой переменной в этом случае. odeint происходит из динамических систем, поэтому для этого в этом примере используется t (для времени). В вашем случае вам следует написать

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

, а затем вы можете использовать r в приведенных ниже выражениях.

 Смежные вопросы

  • Нет связанных вопросов^_^