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

Class template runge_kutta_cash_karp54_classic

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

boost::numeric::odeint::runge_kutta_cash_karp54_classic — The Runge-Kutta Cash-Karp method implemented without the generic Runge-Kutta algorithm.

Synopsis

// In header: <boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.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_cash_karp54_classic : public explicit_error_stepper_base {
public:
  // types
  typedef explicit_error_stepper_base< runge_kutta_cash_karp54_classic< ... >,... > 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_cash_karp54_classic(const algebra_type & = algebra_type());
  // public member functions
  template<typename System, typename StateIn, typename DerivIn,
           typename StateOut, typename Err>
    void do_step_impl(System, const StateIn &, const DerivIn &, time_type,
                      StateOut &, time_type, Err &);
  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 StateIn> void adjust_size(const StateIn &);
  // private member functions
  template<typename StateIn> bool resize_impl(const StateIn &);
};

Description

Метод Runge-Kutta Cash-Karp является одним из стандартных методов решения обычных дифференциальных уравнений, см.en.wikipedia.org/wiki/Cash-Karp_method. Метод является явным и соответствует концепции Error Stepper. Контроль размера шага обеспечивается, но непрерывный выход не доступен для этого метода.

Этот класс происходит от explicit_error_stepper_base и наследует свой интерфейс через CRTP (текущий повторяющийся шаблон шаблона). Этот класс реализует метод напрямую, поэтому общий алгоритм Рунге-Кутта не используется.

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
    >

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

runge_kutta_cash_karp54_classic public construct/copy/destruct

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

    Параметры:

    <algebra>

    <algebra>

    Копия алгебры сделана и хранится внутри явного_stepper_base.

    runge_kutta_cash_karp54_classic public member functions

    1. <
      template<typenameSystem,typenameStateIn,typenameDerivIn,
              typenameStateOut,typenameErr>
       voiddo_step_impl(Systemsystem,constStateIn&in,constDerivIn&dxdt,
                         time_typet,StateOut&out,time_typedt,Err&xerr);
      >Этот метод выполняет один шаг.<dxdt>из<in>в момент<t>переходит к способу.

      Результат обновляется неуместно, следовательно, вход в<in>и выход в<out>. Кроме того, оценка ошибки хранится в<xerr>. Доступ к этой функциональности шага обеспечивается явной_error_stepper_base и<do_step_impl>не должен называться напрямую.

      Параметры:

      <dt><dt>

      Размер шага.

      <dxdt>

      Производная x при t.

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

      <out>

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

      <system>

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

      <t>

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

      <xerr>

      Результат оценки ошибки записан в xerr.

    2. <
      template<typenameSystem,typenameStateIn,typenameDerivIn,
              typenameStateOut>
       voiddo_step_impl(Systemsystem,constStateIn&in,constDerivIn&dxdt,
                         time_typet,StateOut&out,time_typedt);
      >Этот метод выполняет один шаг. Производная<dxdt>из<in>в момент<t>переходит к способу. Результат обновляется неуместно, следовательно, вход в<in>и выход в<out>. Доступ к этой функциональности шага обеспечивается явной_error_stepper_base и<do_step_impl>не должен называться напрямую.

      Параметры:

      <dt>

      <dxdt>

      Производная от x при t.

      <in>

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

      <out>

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

      <system>

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

      <t>

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

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

      Параметры:

      <x>

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

    runge_kutta_cash_karp54_classic private member functions

    1. <
      template<typenameStateIn>boolresize_impl(constStateIn&x);
      >

    PrevUpHomeNext

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




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



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


    реклама


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

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