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

Class template bulirsch_stoer

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

boost::numeric::odeint::bulirsch_stoer — The Bulirsch-Stoer algorithm.

Synopsis

// In header: <boost/numeric/odeint/stepper/bulirsch_stoer.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 bulirsch_stoer {
public:
  // types
  typedef State      state_type;
  typedef Value      value_type;
  typedef Deriv      deriv_type;
  typedef Time       time_type;
  typedef Algebra    algebra_type;
  typedef Operations operations_type;
  typedef Resizer    resizer_type;
  // construct/copy/destruct
  bulirsch_stoer(value_type = 1E-6, value_type = 1E-6, value_type = 1.0,
                 value_type = 1.0, time_type = static_cast< time_type >(0));
  // public member functions
  template<typename System, typename StateInOut>
    controlled_step_result
    try_step(System, StateInOut &, time_type &, time_type &);
  template<typename System, typename StateInOut>
    controlled_step_result
    try_step(System, const StateInOut &, time_type &, time_type &);
  template<typename System, typename StateInOut, typename DerivIn>
    controlled_step_result
    try_step(System, StateInOut &, const DerivIn &, time_type &, time_type &);
  template<typename System, typename StateIn, typename StateOut>
    boost::disable_if< boost::is_same< StateIn, time_type >, controlled_step_result >::type
    try_step(System, const StateIn &, time_type &, StateOut &, time_type &);
  template<typename System, typename StateIn, typename DerivIn,
           typename StateOut>
    controlled_step_result
    try_step(System, const StateIn &, const DerivIn &, time_type &,
             StateOut &, time_type &);
  void reset();
  template<typename StateIn> void adjust_size(const StateIn &);
  // private member functions
  template<typename StateIn> bool resize_m_dxdt(const StateIn &);
  template<typename StateIn> bool resize_m_xnew(const StateIn &);
  template<typename StateIn> bool resize_impl(const StateIn &);
  template<typename System, typename StateInOut>
    controlled_step_result
    try_step_v1(System, StateInOut &, time_type &, time_type &);
  template<typename StateInOut>
    void extrapolate(size_t, state_table_type &, const value_matrix &,
                     StateInOut &);
  time_type calc_h_opt(time_type, value_type, size_t) const;
  controlled_step_result
  set_k_opt(size_t, const inv_time_vector &, const time_vector &, time_type &);
  bool in_convergence_window(size_t) const;
  bool should_reject(value_type, size_t) const;
  // public data members
  static const size_t m_k_max;
};

Description

Bulirsch-Stoer - это контролируемый шаг, который регулирует как размер шага, так и порядок метода. Алгоритм использует модифицированную среднюю точку и полиномиальную экстраполяцию вычисляет решение.

Template Parameters

  1. <
    typenameState
    >

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

  2. <
    typenameValue=double
    >

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

  3. <
    typenameDeriv=State
    >

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

  4. <
    typenameTime=Value
    >

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

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

    Тип алгебры.

  6. typenameOperations=typenameoperations_dispatcher<State>::operations_type

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

  7. <
    typenameResizer=initially_resizer
    >

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

bulirsch_stoer public construct/copy/destruct

  1. bulirsch_stoer(value_typeeps_abs=1E-6,value_typeeps_rel=1E-6,
                  value_typefactor_x=1.0,value_typefactor_dxdt=1.0,
                  time_typemax_dt=static_cast<time_type>(0));
    Построение классаbulirsch_stoer, включая инициализацию границ ошибок.

    bulirsch_stoer public member functions

    1. template<typenameSystem,typenameStateInOut>
       controlled_step_result
       try_step(Systemsystem,StateInOut&x,time_type&t,time_type&dt);
      Пытается сделать один шаг.

      Этот метод пытается сделать один шаг с размером шага dt. Если оценка ошибки велика, шаг отклоняется, и метод возвращается неудачно, а размер шага dt уменьшается. Если оценка ошибки приемлемо мала, шаг выполняется, успех возвращается и может быть увеличен, чтобы сделать шаги как можно больше. Этот метод также обновляет t, если выполняется шаг. Также при необходимости корректируется внутренний порядок степпера.

    Параметры:

    eps_abs

    Абсолютный уровень толерантности.

    eps_rel

    Относительная толерантность.

    factor_dxdt

    Фактор веса производного.

    factor_x

    Фактор веса государства.

    Параметры:

    dt

    Размер шага. Обновлено.

    system

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

    t

    Ценность времени. Обновлено, если шаг будет успешным.

    x

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

    Возврат:

    успех, если шаг был принят, провалиться иначе.

  2. template<typenameSystem,typenameStateInOut>
     controlled_step_result
     try_step(Systemsystem,constStateInOut&x,time_type&t,time_type&dt);
    Вторая версия для решения задачи пересылки, может использоваться с Boost. Диапазон как StateInOut.
  3. <
    template<typenameSystem,typenameStateInOut,typenameDerivIn>
     controlled_step_result
     try_step(Systemsystem,StateInOut&x,constDerivIn&dxdt,time_type&t,
              time_type&dt);
    >Пытается сделать один шаг.

    Этот метод пытается сделать один шаг с размером шага dt. Если оценка ошибки велика, шаг отклоняется, и метод возвращается неудачно, а размер шага dt уменьшается. Если оценка ошибки приемлемо мала, шаг выполняется, успех возвращается и может быть увеличен, чтобы сделать шаги как можно больше. Этот метод также обновляет t, если выполняется шаг. Также при необходимости корректируется внутренний порядок степпера.

    Параметры:

    <dt>

    Размер шага. Обновлено.

    <dxdt>

    Производная от государства.

    <system>

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

    <t>

    Ценность времени. Обновлено, если шаг будет успешным.

    <x>

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

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

    успех, если шаг был принят, провалиться иначе.

  4. <
    template<typenameSystem,typenameStateIn,typenameStateOut>
     boost::disable_if<boost::is_same<StateIn,time_type>,controlled_step_result>::type
     try_step(Systemsystem,constStateIn&in,time_type&t,StateOut&out,
              time_type&dt);
    >Пытается выполнить один шаг.
    [Note]Примечание

    Этот метод отключается, если state_type = time_type, чтобы избежать двусмысленности.

    Этот метод пытается сделать один шаг с размером шага dt. Если оценка ошибки велика, шаг отклоняется, и метод возвращается неудачно, а размер шага dt уменьшается. Если оценка ошибки приемлемо мала, шаг выполняется, успех возвращается и может быть увеличен, чтобы сделать шаги как можно больше. Этот метод также обновляет t, если выполняется шаг. Также при необходимости корректируется внутренний порядок степпера.

    Параметры:

    <dt>

    Размер шага. Обновлено.

    <in>

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

    <out>

    Используется для хранения результата шага.

    <system>

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

    <t>

    Ценность времени. Обновлено, если шаг будет успешным.

    Возврат:

    успех, если шаг был принят, провалиться иначе.

  5. <
    template<typenameSystem,typenameStateIn,typenameDerivIn,
            typenameStateOut>
     controlled_step_result
     try_step(Systemsystem,constStateIn&in,constDerivIn&dxdt,
              time_type&t,StateOut&out,time_type&dt);
    >Пытается сделать один шаг.

    Этот метод пытается сделать один шаг с размером шага dt. Если оценка ошибки велика, шаг отклоняется, и метод возвращается неудачно, а размер шага dt уменьшается. Если оценка ошибки приемлемо мала, шаг выполняется, успех возвращается и может быть увеличен, чтобы сделать шаги как можно больше. Этот метод также обновляет t, если выполняется шаг. Также при необходимости корректируется внутренний порядок степпера.

    Параметры:

    <dt>

    Размер шага. Обновлено.

    <dxdt>

    Производная состояния.

    <in>

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

    <out>

    Используется для хранения результата этапа.

    <system>

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

    <t>

    Ценность времени. Обновлено, если шаг будет успешным.

    Возврат:

    успех, если шаг был принят, провалиться иначе.

  6. <
    voidreset();
    >Сбрасывает внутреннее состояние степпера.
  7. <
    template<typenameStateIn>voidadjust_size(constStateIn&x);
    >Установите размер всех временных интервалов в степпере вручную.

    Параметры:

    <x>

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

  8. bulirsch_stoer private member functions

    1. <
      template<typenameStateIn>boolresize_m_dxdt(constStateIn&x);
      >
    2. <
      template<typenameStateIn>boolresize_m_xnew(constStateIn&x);
      >
    3. <
      template<typenameStateIn>boolresize_impl(constStateIn&x);
      >
    4. <
      template<typenameSystem,typenameStateInOut>
       controlled_step_result
       try_step_v1(Systemsystem,StateInOut&x,time_type&t,time_type&dt);
      >
    5. <
      template<typenameStateInOut>
       voidextrapolate(size_tk,state_table_type&table,
                        constvalue_matrix&coeff,StateInOut&xest);
      >
    6. <
      time_typecalc_h_opt(time_typeh,value_typeerror,size_tk)const;
      >
    7. <
      controlled_step_result
      set_k_opt(size_tk,constinv_time_vector&work,consttime_vector&h_opt,
               time_type&dt);
      >
    8. <
      boolin_convergence_window(size_tk)const;
      >
    9. <
      boolshould_reject(value_typeerror,size_tk)const;
      >

    PrevUpHomeNext

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




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



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


    реклама


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

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