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

Overview

Boost , Chapter 1. Boost.Numeric.Odeint , Getting started

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++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

одеинт — библиотека для решения задач начальных значений (IVP) обычных дифференциальных уравнений. Математически эти задачи сформулированы следующим образом:

x'(t) = f(x,t),x(0) = x0.

xиfмогут быть векторами, и решение представляет собой некоторую функциюx(t), выполняя оба уравнения выше. В следующем мы будем ссылаться наx'(t)также<dxdt>, который также является нашей нотацией для производной в исходном коде.

Обычные дифференциальные уравнения встречаются почти везде в естественных науках. Например, вся ньютоновская механика описывается дифференциальными уравнениями второго порядка. Будьте уверены, вы найдете их в каждой дисциплине. Они также возникают при дискретизации дифференциальных уравнений (PDE). Затем происходит система сопряженных обыкновенных дифференциалов, иногда также называемых решетками ODE.

Численные приближения для решенияx(t)вычисляются итеративно. Самым простым алгоритмом является схема Эйлера, где, начиная сx(0), можно найтиx(dt) = x(0) + dt f(x(0),0). Теперь можно использоватьx(dt)и получитьx(2dt)аналогичным образом и так далее. Метод Эйлера имеет порядок 1, что означает, что ошибка на каждом шаге составляет~ dt2. Это, конечно, не очень удовлетворяет, поэтому метод Эйлера редко используется для реальных жизненных проблем и служит таким же наглядным примером.

Основное внимание odeint уделяется предоставлению численных методов, реализованных таким образом, что алгоритм полностью независим от структуры данных, используемой для представления состоянияx. При этом одеинт применим для широкого спектра ситуаций и может использоваться со многими другими библиотеками. Помимо обычного случая, когда состояние определяется как<std::vector>или<boost::array>, мы предоставляем нативную поддержку следующих библиотек:

В odeint реализованы следующие алгоритмы:

Table 1.1. Stepper Algorithms

Алгоритм

Класс

Концепция

Концепция системы

Приказ

Оценка ошибок

Плотный выход

Внутреннее состояние

Замечания

Явный Эйлер

<euler>

Dense Output Stepper

Система

1

Нет

Да

Нет

Очень просто, только для демонстрации цели

Модифицированная середина

<modified_midpoint>

Шагатель

Система

конфигурируемый (2)

Нет

Нет

Нет

Используется в реализации Bulirsch-Stoer

Рунге-Кутта 4

<runge_kutta4>

Шагатель

Система

4

Нет

Нет

Нет

Классическая схема Рунге-Кутта, хорошая общая схема без контроля ошибок

Кэш-Карп

<runge_kutta_cash_karp54>

Ошибка Степпер

Система

5

Да (4)

Нет

Нет

Хорошая общая схема с оценкой ошибок, используемая в control_error_stepper

Спящий принц 5

<runge_kutta_dopri5>

Ошибка Степпер

Система

5

Да (4)

Да

Да

Стандартный метод с контролем ошибок и плотным выходом, используемый в control_error_stepper и в dense_output_control_explicit_fsal.

Фельберг 78

<runge_kutta_fehlberg78>

Ошибка Степпер

Система

8

Да (7)

Нет

Нет

Хороший метод высокого порядка с оценкой ошибок, используемый в control_error_stepper.

Адамс Башфорт

<adams_bashforth>

Шагатель

Система

настраиваемый

Нет

Нет

Да

Многоступенчатый метод

Адамс Башфорт Мултон

<adams_bashforth_moulton>

Шагатель

Система

настраиваемый

Нет

Нет

Да

Комбинированный многоступенчатый метод

Контролируемый Рунге-Кутта

<controlled_runge_kutta>

Контролируемый степпер

Система

зависит

Да

Нет

зависит

Контроль ошибокОшибка СтепперДля этого требуетсястеппер ошибкисверху. Заказ зависит от заданной ошибки

.

Dense Output Runge-Kutta

<dense_output_runge_kutta>

Dense Output Stepper

Система

зависит

Нет

Да

Да

Плотный выход дляStepperиError Stepperсверху, если они обеспечивают плотную функциональность вывода (например,<euler>и<runge_kutta_dopri5>). Порядок зависит от данного степпера.

Булирш-Стор

<bulirsch_stoer>

Контролируемый степпер

Система

переменная

Да

Нет

Нет

Шаг за шагом и контроль за порядком. Очень хорошо, если требуется высокая точность.

Bulirsch-Stoer Dense Output

<bulirsch_stoer_dense_out>

Dense Output Stepper

Система

переменная

Да

Да

Нет

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

Имплицитный Эйлер

<implicit_euler>

Шагатель

Имплицитная система

1

Нет

Нет

Нет

Основная неявная рутина. Требуется якобиец. Работает только с векторамиBoost.uBLASв качестве типов состояний.

Розенброк 4

<rosenbrock4>

Ошибка Степпер

Имплицитная система

4

Да

Да

Нет

Подходит для жестких систем. Работает только с векторамиBoost.uBLASв качестве типов состояний.

Контролировал Розенброк 4

<rosenbrock4_controller>

Контролируемый степпер

Имплицитная система

4

Да

Да

Нет

Розенброк 4 с контролем ошибок. Работает только с векторамиBoost.uBLASв качестве типов состояний.

Dense Output Розенброк 4

<rosenbrock4_dense_output>

Dense Output Stepper

Имплицитная система

4

Да

Да

Нет

Контролировал Розенброк 4 с плотным выходом. Работает только с векторамиBoost.uBLASв качестве типов состояний.

Symplectic Euler

<symplectic_euler>

Шагатель

Простая системаПростая система

1

Нет

Нет

Нет

Базовый симплектический растворитель для разделимой гамильтоновой системы

Symplectic RKN McLachlan

<symplectic_rkn_sb3a_mclachlan>

Шагатель

Простая системаПростая система

4

Нет

Нет

Нет

Симплексический растворитель для сепарабельной гамильтоновой системы с 6 ступенями и порядком 4.

Symplectic RKN McLachlan

<symplectic_rkn_sb3a_m4_mclachlan>

Шагатель

Простая системаПростая система

4

Нет

Нет

Нет

Симплектный растворитель с 5 этапами и порядком 4, может использоваться с произвольными типами точности.

Верлет скорости

<velocity_verlet>

Шагатель

Система второго порядка

1

Нет

Нет

Да

Метод верлет скорости, подходящий для моделирования молекулярной динамики.



PrevUpHomeNext

Статья Overview раздела Chapter 1. Boost.Numeric.Odeint Getting started может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Getting started ::


реклама


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

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