2014-04-09 2 views
1

저는 최적의 제어 방법 (궤도 생성 및 최적화)을 사용하여 무한 차원의 최적화 알고리즘을 연구하고 있습니다. 이 궤도 최적화를하고 싶은 시스템은 $ \ dot {x} (t) = f (x (t), u (t), t) $ 형태의 비선형입니다. 즉, 나는 시간에 따라 변하는 비선형 적 입력을 가지고있다.boost :: odeint를 이용한 비선형 시변 시스템 입력

boost :: odeint를 사용하여 그러한 ODE를 해결할 수 있습니까? 나는 문서에서 힌트를 찾지 못했지만, 나는 그것을 보지 못했을 것입니다.

답변

2

예, 이런 종류의 문제에는 odeint를 사용할 수 있습니다. 명시 스테퍼 dxdt가 r.h.s. 대한 출력 파라미터하면 odeint 패스 시스템 기능 (ODE)이 x 현재 상태에 대한 입력 파라미터 인 서명

ode(x , dxdt , t); 

을 갖는 것으로 기대 ODE의 시간은 t입니다. 예를 들어, 구동 오실레이터는 다음과 같이 구현 될 수있다.

typedef std::array< double , 2 > state_type; 

struct oscillator 
{ 
    double driving_strength; 
    double dribving_frequency; 

    void operator()(state_type const &x , state_type &dxdt , double t) const 
    { 
     dxdt[0] = x[1]; 
     dxdt[1] = -x[0] + driving_strength * sin(driving_frequency * t); 
    } 
}; 

state_type x; 
oscillator osc; 
// initialize x and osc 
runge_kutta4<state_type> stepper; 
integrate_const(stepper , osc , x , t_start , t_end , dt); 
관련 문제