![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
State Algebra OperationsBoost , Chapter 1. Boost.Numeric.Odeint , Concepts
|
![]() |
Home | Libraries | People | FAQ | More |
![]() |
Note |
---|---|
Нижеследующее не относится к неявным степперам, таким как implicit_euler или Rosenbrock 4, поскольку там |
Государство
, Алгебра
и Операции
вместе определяют концепцию, описывающую, как выполняются математические векторные операции, необходимые для алгоритмов степпера. Типичная векторная операция, выполняемая в степперах
y = Σ αi xi.
Государство
представляет собой переменную состояния ODE, обычно обозначаемую x. Алгоритмически состояние часто реализуется как вектор< double >
или array< double , N >
, однако, родовое свойство odeint позволяет в основном использовать что угодно в качестве типа состояния. Алгоритмический аналог таких математических выражений делится на две части. Во-первых, алгебра используется для учета векторного характера уравнения. В случае вектора
в качестве типа состояния это означает, что
Алгебра
отвечает за итерацию по всем векторным элементам. Во-вторых, операции используются для представления фактической операции, применяемой к каждому из векторных элементов. Таким образом,
Алгебра
повторяется по всем элементам Государство
и вызывает операцию, взятую из Операции
для каждого элемента. Вот где Государство
, Алгебра
и Операции
должны работать вместе, чтобы запустить одеинт. Пожалуйста, посмотрите на range_algebra
и default_operations
, чтобы увидеть пример того, как это реализовано.
Ниже мы описываем, как Государство
, Алгебра
и Операции
используются вместе в рамках степперных реализаций.
Operations
Тип операций
Value1
, ... ,
ValueN
Типы, представляющие значение или тип времени степпера
Scale
Тип масштабной операции
scale
Объект типа Масштаб
ScaleSumN
Тип, представляющий общую операцию масштабирования_суммы, N
должен быть заменен числом от 1 до 14.
scale_sumN
Объект типа ScaleSumN
, N
должен быть заменен числом от 1 до 14.
ScaleSumSwap2
Тип операции масштабного свопа
scale_sum_swap2
Объект типа ScaleSumSwap2
a1,
a2,
...
Объекты типа Value1
, Value2
, ...
y,
x1,
x2,
...
Объекты Государство
Имя |
Выражение |
Тип |
Семантика |
---|---|---|---|
Получить масштаб операции |
|
|
Получить |
|
|
|
Построение объекта |
|
|
|
Расчеты |
Получить общую операцию |
|
|
Получить |
|
|
|
Построение объекта |
|
|
|
Расчеты |
Получить масштабную своп-операцию |
|
|
Получить масштабный своп от операций |
|
|
|
Конструктор |
|
|
|
Вычисляет |
State
Тип государства
Algebra
Тип алгебры
OperationN
N
-тип операции N
должен быть числом от 1 до 14.
algebra
Объект типа Алгебра
operationN
Объект типа ОперацияN
y,
x1,
x2,
...
Объекты типа Государство
Имя |
Выражение |
Тип |
Семантика |
---|---|---|---|
Векторная операция с аритмией 2 |
|
пустота |
Звонки |
Векторная операция с аритмией 3 |
|
пустота |
Звонки |
Векторная операция с подвижностью |
|
пустота |
Звонки |
В стандартной конфигурации odeint использует range_algebra
и default_operations
, которых достаточно для большинства ситуаций. Однако существует еще несколько возможностей для повышения производительности или обеспечения совместимости с другими библиотеками. Ниже мы перечислим существующие конфигурации Алгебра
/Операции
, которые можно использовать в степперах.
|
|
|
Замечания |
---|---|---|---|
Все, что поддерживает Boost.Range, например |
|
|
Стандартная реализация, применимая для большинства типичных ситуаций. |
|
|
|
Специальная реализация для повышения::массив с лучшей производительностью, чем |
Все, что определяет операторы + внутри себя и * со скалярным (с математической точки зрения, все, что является векторным пространством). |
|
|
Для использования Controlled Stepper необходимо создать шаблон |
|
|
|
Для работы odeint на устройствах CUDA с помощью Thrust |
Рандомный доступ |
|
|
Алгебра параллельного диапазона OpenMP |
|
|
|
OpenMP-параллельная алгебра для разделенных данных |
|
|
|
Использование библиотеки Intel Math Kernel Library в odeint для максимальной производительности. В настоящее время поддерживается только степпер RK4. |
Имя |
Выражение |
Тип |
Семантика |
---|---|---|---|
Эксплуатация вектора |
|
пустота |
Расчеты y = a1 x1 + a2 x2<17 |
Статья State Algebra Operations раздела Chapter 1. Boost.Numeric.Odeint Concepts может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |