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

Class template adams_bashforth

Boost , Chapter 1. Boost.Numeric.Odeint , Header <boost/numeric/odeint/stepper/adams_bashforth.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 adams_bashforth

boost::numeric::odeint::adams_bashforth — The Adams-Bashforth multistep algorithm.

Synopsis

// In header: <boost/numeric/odeint/stepper/adams_bashforth.hpp>
template<size_t Steps, 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,
         typename InitializingStepper = extrapolation_stepper< order_helper<Steps>::value,                                                    State, Value, Deriv, Time,                                                   Algebra, Operations, Resizer > >
class adams_bashforth : public algebra_stepper_base< Algebra, Operations > {
public:
  // types
  typedef State                                       state_type;
  typedef state_wrapper< state_type >                 wrapped_state_type;
  typedef Value                                       value_type;
  typedef Deriv                                       deriv_type;
  typedef state_wrapper< deriv_type >                 wrapped_deriv_type;
  typedef Time                                        time_type;
  typedef Resizer                                     resizer_type;
  typedef stepper_tag                                 stepper_category;
  typedef InitializingStepper                         initializing_stepper_type;
  typedef algebra_stepper_base< Algebra, Operations > algebra_stepper_base_type;
  typedef algebra_stepper_base_type::algebra_type     algebra_type;
  typedef algebra_stepper_base_type::operations_type  operations_type;
  typedef unsigned short                              order_type;
  typedef unspecified                                 step_storage_type;
  // construct/copy/destruct
  adams_bashforth(const algebra_type & = algebra_type());
  // public member functions
  order_type order(void) const;
  template<typename System, typename StateInOut>
    void do_step(System, StateInOut &, time_type, time_type);
  template<typename System, typename StateInOut>
    void do_step(System, const StateInOut &, time_type, time_type);
  template<typename System, typename StateIn, typename StateOut>
    void do_step(System, const StateIn &, time_type, StateOut &, time_type);
  template<typename System, typename StateIn, typename StateOut>
    void do_step(System, const StateIn &, time_type, const StateOut &,
                 time_type);
  template<typename StateType> void adjust_size(const StateType &);
  const step_storage_type & step_storage(void) const;
  step_storage_type & step_storage(void);
  template<typename ExplicitStepper, typename System, typename StateIn>
    void initialize(ExplicitStepper, System, StateIn &, time_type &,
                    time_type);
  template<typename System, typename StateIn>
    void initialize(System, StateIn &, time_type &, time_type);
  void reset(void);
  bool is_initialized(void) const;
  const initializing_stepper_type & initializing_stepper(void) const;
  initializing_stepper_type & initializing_stepper(void);
  // private member functions
  template<typename System, typename StateIn, typename StateOut>
    void do_step_impl(System, const StateIn &, time_type, StateOut &,
                      time_type);
  template<typename StateIn> bool resize_impl(const StateIn &);
  // public data members
  static const size_t steps;
  static const order_type order_value;
};

Description

Метод Адамса-Башфорта представляет собой многоступенчатый алгоритм с настраиваемым числом шагов. Номер шага указывается как параметр шаблона Steps, а затем он использует результат предыдущих шагов Steps. См. такжеen.wikipedia.org/wiki/Linear_multistep_methodВ настоящее время поддерживается максимум Шагов=8. Метод является явным и соответствует концепции Stepper. Контроль размера шага или непрерывный выход не предусмотрены.

Этот класс происходит от algebra_base и наследует свой интерфейс через CRTP (текущий повторяющийся шаблон шаблона). Подробнее см. в алгебре_stepper_base.

Template Parameters

  1. <
    size_tSteps
    >

    Количество шагов (максимум 8).

  2. typenameState

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

  3. <
    typenameValue=double
    >

    Тип значения.

  4. <
    typenameDeriv=State
    >

    Тип, представляющий временную производную государства.

  5. <
    typenameTime=Value
    >

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

  6. <
    typenameAlgebra=typenamealgebra_dispatcher<State>::algebra_type
    >

    Тип алгебры.

  7. <
    typenameOperations=typenameoperations_dispatcher<State>::operations_type
    >

    Тип операции.

  8. <
    typenameResizer=initially_resizer
    >

    Тип политики резистора.

  9. typenameInitializingStepper=extrapolation_stepper<order_helper<Steps>::value,                                                  State,Value,Deriv,Time,                                                 Algebra,Operations,Resizer>

    Шаг за первые два шага.

adams_bashforth public construct/copy/destruct

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

    Параметры:

    <algebra>

    adams_bashforth public member functions

    1. order_typeorder(void)const;
      Возвращает порядок алгоритма, который равен числу шагов.

    <algebra>

    Составляется и хранится копия алгебры.

    Возвращение:

    Порядок применения метода.

  2. <
    template<typenameSystem,typenameStateInOut>
     voiddo_step(Systemsystem,StateInOut&x,time_typet,time_typedt);
    >Этот метод выполняет один шаг. Он преобразует результат на месте.

    Параметры:

    <dt>

    Размер шага.

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

    <t>

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

    <x>

    Состояние ОДЭ, которое должно быть решено. После вызова do_step результат обновляется в x.

  3. template<typenameSystem,typenameStateInOut>
     voiddo_step(Systemsystem,constStateInOut&x,time_typet,time_typedt);
    Вторая версия для решения задачи пересылки, может называться Boost. Диапазон как StateInOut.
  4. <
    template<typenameSystem,typenameStateIn,typenameStateOut>
     voiddo_step(Systemsystem,constStateIn&in,time_typet,StateOut&out,
                  time_typedt);
    >Метод выполняет один шаг с шагомером, пройденным Степпером.

    Параметры:

    <dt>

    <in>

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

    <out>

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

    <system>

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

    <t>

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

  5. template<typenameSystem,typenameStateIn,typenameStateOut>
     voiddo_step(Systemsystem,constStateIn&in,time_typet,
                  constStateOut&out,time_typedt);
    Вторая версия для решения задачи пересылки, может называться Boost. Диапазон как StateOut.
  6. <
    template<typenameStateType>voidadjust_size(constStateType&x);
    >Установите размер всех временных интервалов в степпере вручную.

    Параметры:

    <x>

    Выводится состояние, из которого выводится размер временной величины, подлежащей изменению.

  7. conststep_storage_type&step_storage(void)const;
    Возвращает хранение промежуточных результатов.

    Возвращение:

    Хранение промежуточных результатов.

  8. <
    step_storage_type&step_storage(void);
    >Возвращает хранение промежуточных результатов.

    Возвращение:

    Хранение промежуточных результатов.

  9. <
    template<typenameExplicitStepper,typenameSystem,typenameStateIn>
     voidinitialize(ExplicitStepperexplicit_stepper,Systemsystem,
                     StateIn&x,time_type&t,time_typedt);
    >Инициировал степпера. Выполняет шаги-1 с помощью явного_stepper для заполнения буфера.

    Параметры:

    <dt><dt>

    <dt><dt>

    Размер шага.

    <explicit_stepper>

    степпер, используемый для заполнения буфера предыдущих результатов шага

    <system><system>

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

    <t>

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

    <x>

    Состояние ОДЭ, которое должно быть решено. После вызова do_step результат обновляется в x.

  10. template<typenameSystem,typenameStateIn>
     voidinitialize(Systemsystem,StateIn&x,time_type&t,time_typedt);
    Инициировал степпера. Делает Шаги-1 шаги с внутренним экземпляром Инициализации Штеппера для заполнения буфера.
    [Note]Примечание

    Состояние x и время t обновляются до значений после Шагов-1 начальных стадий.

    Параметры:

    dt

    Размер шага.

    system

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

    t

    Начальное значение времени, обновляемое в этом методе.

    x

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

  11. <
    voidreset(void);
    >Сбрасывает внутренний буфер степпера.
  12. <
    boolis_initialized(void)const;
    >Возвращается истинно, если степпер был инициализирован.

    Возвращает:

    истинное кипение, если инициализирован степпер, ложное иначе

  13. <
    constinitializing_stepper_type&initializing_stepper(void)const;
    >Возвращает внутренний инициализирующий степпер экземпляр.

    инициализация_stepper

    Возвращение:

  14. initializing_stepper_type&initializing_stepper(void);
    Возвращает внутренний инициализирующий степпер экземпляр.

    Возвращение:

    инициализация_stepper

adams_bashforth private member functions

  1. <
    template<typenameSystem,typenameStateIn,typenameStateOut>
     voiddo_step_impl(Systemsystem,constStateIn&in,time_typet,
                       StateOut&out,time_typedt);
    >
  2. <
    template<typenameStateIn>boolresize_impl(constStateIn&x);
    >

PrevUpHomeNext

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:50:17/0.011478900909424/1