![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Class template eulerBoost , Chapter 1. Boost.Numeric.Odeint , Header <boost/numeric/odeint/stepper/euler.hpp>
|
![]() | Home | Libraries | People | FAQ | More |
boost::numeric::odeint::euler — An implementation of the Euler method.
// In header: <boost/numeric/odeint/stepper/euler.hpp> template<typename State, typename Value = double, typename Deriv = State, typename Time = Value, typename Algebra = typename algebra_dispatcher< State >::algebra_type, typename Operations = typename operations_dispatcher< State >::operations_type, typename Resizer = initially_resizer> class euler : public explicit_stepper_base { public: // types typedef explicit_stepper_base< euler< ... >,... > stepper_base_type; typedef stepper_base_type::state_type state_type; typedef stepper_base_type::value_type value_type; typedef stepper_base_type::deriv_type deriv_type; typedef stepper_base_type::time_type time_type; typedef stepper_base_type::algebra_type algebra_type; typedef stepper_base_type::operations_type operations_type; typedef stepper_base_type::resizer_type resizer_type; // construct/copy/destruct euler(const algebra_type & = algebra_type()); // public member functions template<typename System, typename StateIn, typename DerivIn, typename StateOut> void do_step_impl(System, const StateIn &, const DerivIn &, time_type, StateOut &, time_type); template<typename StateOut, typename StateIn1, typename StateIn2> void calc_state(StateOut &, time_type, const StateIn1 &, time_type, const StateIn2 &, time_type) const; template<typename StateType> void adjust_size(const StateType &); };
Метод Эйлера является очень простым решением для обычных дифференциальных уравнений. Этот метод не должен использоваться для реальных применений. Полезно только для демонстрационных целей. Управление размером шага не предусмотрено, но доступен тривиальный непрерывный выход.
Этот класс происходит от explicit_stepper_base и наследует его интерфейс через CRTP (текущий повторяющийся шаблон шаблона), см.
typenameState
>Тип состояния.
typenameValue=double>
Тип значения.
typenameDeriv=State>
Тип, представляющий временную производную государства.
typenameTime=Value>
Время, представляющее независимую переменную — время.
typenameAlgebra=typenamealgebra_dispatcher<State>::algebra_type>
Тип алгебры.
typenameOperations=typenameoperations_dispatcher<State>::operations_type>
Тип операции.
typenameResizer=initially_resizer>
Тип политики резистора.
euler
public member functionstemplate<typenameSystem,typenameStateIn,typenameDerivIn, typenameStateOut> voiddo_step_impl(System,constStateIn&in,constDerivIn&dxdt, time_type,StateOut&out,time_typedt);>Этот метод выполняет один шаг.<
dxdt
>из<in
>в момент<t
>переходит к способу. Результат обновляется неуместно, следовательно, вход в<in
>и выход в<out
>. Доступ к этой функциональности шага обеспечивается по явному_stepper_base и<do_step_impl
>не должен называться напрямую.Параметры: |
|
template<typenameStateOut,typenameStateIn1,typenameStateIn2> voidcalc_state(StateOut&x,time_typet,constStateIn1&old_state, time_typet_old,constStateIn2&,time_type)const;>Этот метод используется для непрерывного вывода и вычисляет состояние<
x
>за раз<t
>из знания двух состояний<old_state
>и<current_state
>в точках времени<t_old
>и<t_new
>.template<typenameStateType>voidadjust_size(constStateType&x);>Установите размер всех временных ступеней вручную.
Параметры: |
|
Статья Class template euler раздела Chapter 1. Boost.Numeric.Odeint Header <boost/numeric/odeint/stepper/euler.hpp> может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Header <boost/numeric/odeint/stepper/euler.hpp> ::
реклама |