Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Class template runge_kutta_dopri5

Boost , Chapter 1. Boost.Numeric.Odeint , Header <boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp>

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Boost C++ LibrariesHomeLibrariesPeopleFAQMore

PrevUpHomeNext

Class template runge_kutta_dopri5

boost::numeric::odeint::runge_kutta_dopri5 — The Runge-Kutta Dormand-Prince 5 method.

Synopsis

// In header: <boost/numeric/odeint/stepper/runge_kutta_dopri5.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 runge_kutta_dopri5 : public explicit_error_stepper_fsal_base {
public:
  // types
  typedef explicit_error_stepper_fsal_base< runge_kutta_dopri5< ... >,... > 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
  runge_kutta_dopri5(const algebra_type & = algebra_type());
  // public member functions
  template<typename System, typename StateIn, typename DerivIn,
           typename StateOut, typename DerivOut>
    void do_step_impl(System, const StateIn &, const DerivIn &, time_type,
                      StateOut &, DerivOut &, time_type);
  template<typename System, typename StateIn, typename DerivIn,
           typename StateOut, typename DerivOut, typename Err>
    void do_step_impl(System, const StateIn &, const DerivIn &, time_type,
                      StateOut &, DerivOut &, time_type, Err &);
  template<typename StateOut, typename StateIn1, typename DerivIn1,
           typename StateIn2, typename DerivIn2>
    void calc_state(time_type, StateOut &, const StateIn1 &, const DerivIn1 &,
                    time_type, const StateIn2 &, const DerivIn2 &, time_type) const;
  template<typename StateIn> void adjust_size(const StateIn &);
  // private member functions
  template<typename StateIn> bool resize_k_x_tmp_impl(const StateIn &);
  template<typename StateIn> bool resize_dxdt_tmp_impl(const StateIn &);
};

Description

Метод Runge-Kutta Dormand-Prince 5 является очень популярным методом для решения ODE, см.. Метод является явным и соответствует концепции Error Stepper. Предусмотрен контроль размера шага, но доступен непрерывный выход, что делает этот метод благоприятным для многих применений.

Этот класс происходит от explicit_error_stepper_fsal_base и наследует свой интерфейс через CRTP (текущий повторяющийся шаблон шаблона). Метод обладает свойством FSAL (первое то же, что и последнее). См. явное_error_stepper_fsal_base для более подробной информации.

Template Parameters

  1. Тип1.

    [!-- [ORIG_BEGIN]
    typenameState

    Тип состояния.

    [ORIG_END] -->[ORIG_END] -->
  2. Тип.

    [ORIG_END] -->
  3. Тип, добавляем к производному.

    [ORIG_END] -->
  4. Временная независимая проверка.

    typenameTime=Value

    Время, представляющее независимую переменную — время.

    [ORIG_END] -->[ORIG_END] -->
  5. Тип хадисов.

    [ORIG_END] -->
  6. Тип .

    [ORIG_END] -->
  7. Тип - ретрансляции.

    [ORIG_END] -->

runge_kutta_dopri5 public construct/copy/destruct

  1. Параметры

    algebra

    runge_kutta_dopri5(constalgebra_type&algebra=algebra_type());Конструируетrunge_kutta_dopri5класс. Этот конструктор можно использовать в качестве конструктора по умолчанию, если в алгебре есть конструктор по умолчанию.

    Параметры:

    Копия алгебры сделана и хранится внутри эксплицитной_степной_базы

[ORIG_END][ORIG_END] -->

runge_kutta_dopri5 public member functions

  1. [!-- [ORIG_BEGIN]
    template<typenameSystem,typenameStateIn,typenameDerivIn,
            typenameStateOut,typenameDerivOut>
     voiddo_step_impl(Systemsystem,constStateIn&in,
                       constDerivIn&dxdt_in,time_typet,StateOut&out,
                       DerivOut&dxdt_out,time_typedt);
    Этот метод выполняет один шаг. Производноеdxdt_inизinв моментtпереходит к способу. Результат обновляется неуместно, следовательно, вход вinи выход вout. Кроме того, производная обновления неуместна, поэтому предполагается, что вход находится вdxdt_inи выход вdxdt_out. Доступ к этой функциональности шага обеспечивается явной_error_stepper_fsal_base иdo_step_implне должен называться напрямую.

    Параметры

    [

    Фундативный x при t. dxdt_in

    dxdt_out

    Внутрь

    in

    [ODE]

    out

    system

    Сети, Среда, Сеть, R.H.S. ODE.

    t

    Значение [

    ], [

    Параметры:

    dxdt_in

    Производная x при t. dxdt_in не модифицируется этим способом

    dxdt_out

    Результат новой производной в момент времени t+dt.

    in

    Состояние ОДЭ, которое должно быть решено. не изменяется в этом способе

    out

    Результат шага записывается.

    system

    Функция системы для решения, следовательно, r.h.s. ODE. Он должен соответствовать концепции простой системы.

    t

    Значение времени, в которое должен быть выполнен шаг.

[ORIG_END] -->[ORIG_END] -->
  • Параметры:

    Фундативный x при t. dxdt_in

    dt

    dxdt_out

    in

    ОЭД,

    out

    Система СИД, СИЗО, r.h.s.

    t

    Знатоки

    [!-- [ORIG_BEGIN]
    template<typenameSystem,typenameStateIn,typenameDerivIn,
            typenameStateOut,typenameDerivOut,typenameErr>
     voiddo_step_impl(Systemsystem,constStateIn&in,
                       constDerivIn&dxdt_in,time_typet,StateOut&out,
                       DerivOut&dxdt_out,time_typedt,Err&xerr);

  • [!-- [ORIG_BEGIN]
    template<typenameSystem,typenameStateIn,typenameDerivIn,
            typenameStateOut,typenameDerivOut,typenameErr>
     voiddo_step_impl(Systemsystem,constStateIn&in,
                       constDerivIn&dxdt_in,time_typet,StateOut&out,
                       DerivOut&dxdt_out,time_typedt,Err&xerr);
    Этот метод выполняет один шаг. Производноеdxdt_inизinв моментtпереходит к способу. Результат обновляется неуместно, следовательно, вход вinи выход вout. Кроме того, производная обновления неуместна, поэтому предполагается, что вход находится вdxdt_inи выход вdxdt_out. Доступ к этой функциональности шага обеспечивается по явному_error_stepper_fsal_base иdo_step_implне должен называться напрямую. Вычисляется оценка ошибки.

    Параметры:

    dt

    Размер шага.

    dxdt_in

    Производная x при t. dxdt_in не модифицирована этим способом

    dxdt_out

    Результат новой производной в момент времени t+dt.

    in

    Состояние ОДЭ, которое должно быть решено. не изменяется в этом способе

    out

    Результат шага записывается.

    system

    Функция системы для решения, следовательно, r.h.s. ODE. Он должен соответствовать концепции простой системы.

    t

    Значение времени, в которое должен быть выполнен шаг.

    xerr

    [ORIG_END] -->[ORIG_END] -->
  • <
    template<typenameStateOut,typenameStateIn1,typenameDerivIn1,
            typenameStateIn2,typenameDerivIn2>
     voidcalc_state(time_typet,StateOut&x,constStateIn1&x_old,
                     constDerivIn1&deriv_old,time_typet_old,
                     constStateIn2&,constDerivIn2&deriv_new,
                     time_typet_new)const;
    >Этот метод используется для непрерывного вывода и вычисляет состояние<x>в момент времени<t>из знания двух состояний<old_state>и<current_state>в точках времени<t_old>и<t_new>. Он также использует внутренние переменные для расчета результата. Следовательно, этот метод должен быть назван после двух успешных<do_step>звонков.
  • Параметры:

    [!-- [ORIG_BEGIN]
    template<typenameStateIn>voidadjust_size(constStateIn&x);
    template<typenameStateIn>voidadjust_size(constStateIn&x);
    typenameValue=double
    Отрегулируйте размер всех времен в шагу вручную.

    Параметры:

    x

    x

    Состояние, из которого выводится размер временной величины.

    [ORIG_END] -->[ORIG_END] -->
  • runge_kutta_dopri5 private member functions

    1. <
      template<typenameStateIn>boolresize_k_x_tmp_impl(constStateIn&x);
      >
    2. <
      template<typenameStateIn>boolresize_dxdt_tmp_impl(constStateIn&x);
      >

    PrevUpHomeNext

    Статья Class template runge_kutta_dopri5 раздела Chapter 1. Boost.Numeric.Odeint Header <boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp> может быть полезна для разработчиков на c++ и boost.




    Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



    :: Главная :: Header <boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp> ::


    реклама


    ©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
    Top.Mail.Ru

    Время компиляции файла: 2024-08-30 11:47:00
    2025-05-20 01:00:13/0.0076501369476318/1