Jump to content

Адепт (библиотека C++)

Библиотека Adept C++
Разработчик(и) Робин Хоган
Стабильная версия
2.1 / 5 февраля 2021 г. (3 года назад) ( 2021-02-05 )
Репозиторий
Написано в С++
Операционная система Кросс-платформенный
Тип Библиотека
Лицензия Apache 2.0 ( с открытым исходным кодом )
Веб-сайт www .из .чтение .uk /облака /адепт /

Adept — это комбинированная программная библиотека автоматического дифференцирования и массивов для языка программирования C++ . Возможность автоматического дифференцирования облегчает разработку приложений, включающих математическую оптимизацию . Адепт примечателен тем, что применил шаблонного метапрограммирования технику шаблонов выражений для ускорения дифференциации математических утверждений. [ 1 ] [ 2 ] Помимо эффективного способа хранения дифференциальной информации, это делает его значительно быстрее, чем большинство других инструментов C++, обеспечивающих аналогичную функциональность (например, ADOL-C, CppAD и FADBAD). [ 1 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] хотя о сопоставимых результатах сообщалось для Стэна и в некоторых случаях Сакадо. [ 3 ] Дифференцирование может осуществляться в прямом режиме, обратном режиме (для использования со схемой минимизации квазиньютона ) или полная матрица Якобиана может быть вычислена (для использования со схемами минимизации Левенберга-Марквардта или Гаусса-Ньютона ).

Приложения Adept включают финансовое моделирование , [ 6 ] [ 7 ] вычислительная гидродинамика , [ 8 ] физическая химия , [ 9 ] оценка параметров [ 10 ] и метеорология . [ 11 ] Adept — бесплатное программное обеспечение , распространяемое по лицензии Apache .

Adept реализует автоматическое дифференцирование, используя подход перегрузки операторов , при котором дифференцируемые скаляры записываются как adouble, указывая на «активную» версию обычного double, а дифференцируемые векторы записываются как aVector. В следующем простом примере эти типы используются для дифференциации вычислений по 3 нормам на небольшом векторе:

#include <iostream>
#include <adept_arrays.h>

int main(int argc, const char** argv) {
  using namespace adept;
  Stack stack;                           // Object to store differential statements
  aVector x(3);                          // Independent variables: active vector with 3 elements
  x << 1.0, 2.0, 3.0;                    // Fill vector x
  stack.new_recording();                 // Clear any existing differential statements
  adouble J = cbrt(sum(abs(x * x * x))); // Compute dependent variable: 3-norm in this case
  J.set_gradient(1.0);                   // Seed the dependent variable
  stack.reverse();                       // Reverse-mode differentiation
  std::cout << "dJ/dx = "
            << x.get_gradient() << "\n"; // Print the vector of partial derivatives dJ/dx

  return 0;
}

После компиляции и выполнения эта программа сообщает производную как:

dJ/dx = {0.0917202, 0.366881, 0.825482}

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б Хоган, Робин Дж. (2014). «Быстрое автоматическое дифференцирование в обратном режиме с использованием шаблонов выражений на C++» (PDF) . АКМ Транс. Математика. Программное обеспечение . 40 (4): 26:1–26:16. дои : 10.1145/2560359 . S2CID   9047237 .
  2. ^ Гриванк, Андреас (2014). «Об автоматическом дифференцировании и алгоритмической линеаризации» (PDF) . Пескиза Операциональ . 34 (3): 621–645. дои : 10.1590/0101-7438.2014.034.03.0621 .
  3. ^ Перейти обратно: а б Карпентер, Боб (2015). «Математическая библиотека Стэна: автоматическое дифференцирование в обратном режиме в C ++». arXiv : 1509.07164 [ cs.MS ].
  4. ^ «Чувствительность количественного финансирования: ценообразование портфеля свопов Libor (Монте-Карло)» . 2016-12-02 . Проверено 21 октября 2017 г.
  5. ^ Рик, Матиас. Дискретное управление и ограничения в задачах оптимального управления (PDF) (кандидатская диссертация). Технический университет Мюнхена . Проверено 21 октября 2017 г.
  6. ^ Перейти обратно: а б Чжао, Цзе. Стохастические модели волатильности с применением в финансах (Диссертация). Университет Айовы. Архивировано из оригинала 18 июля 2017 года . Проверено 27 октября 2017 г.
  7. ^ Пажес, Жиль; Пироно, Оливье; Салл, Гийом (2016). «Вибрато и автоматическая дифференциация для деривативов высокого порядка и чувствительности финансовых опционов». arXiv : 1606.06143 [ q-fin.CP ].
  8. ^ Альбринг, Т.; Сейджбаум, М.; Гогер, НР (2016). Диллманн, А.; Хеллер, Г.; Кремер, Э.; Вагнер, К.; Брайтамтер, К. (ред.). Согласованный и надежный дискретно-сопряженный решатель для платформы SU2 — проверка и применение . Новые результаты в числовой и экспериментальной механике жидкости X. Заметки по числовой механике жидкости и междисциплинарному проектированию. Том. 132. Спрингер, Чам. дои : 10.1007/978-3-319-27279-5_7 .
  9. ^ Нимейер, Кайл Э.; Кертис, Николас Дж.; Сун, Чи-Джен (2017). «pyJac: Аналитический генератор Якобиана для химической кинетики». Вычислить. Физ. Коммун . 215 : 188–203. arXiv : 1605.03262 . Бибкод : 2017CoPhC.215..188N . дои : 10.1016/j.cpc.2017.02.004 . S2CID   19675513 .
  10. ^ Альберт, Карло; Ульзега, Симона; Ступ, Руди (2016). «Усиление вывода байесовских параметров моделей нелинейных стохастических дифференциальных уравнений путем разделения гамильтоновой шкалы». Физ. Преподобный Е. 93 (43313): 043313. arXiv : 1509.05305 . Бибкод : 2016PhRvE..93d3313A . дои : 10.1103/PhysRevE.93.043313 . ПМИД   27176434 . S2CID   4479221 .
  11. ^ Мейсон, С.; Чиу, Ж.-К.; Хоган, Р.Дж.; Моисеев Д.; Кнайфель, С. (2018). «Измерение наледи и плотности частиц снега с помощью вертикально направленных доплеровских радаров» (PDF) . Дж. Геофиз. Рез . 123 . дои : 10.1029/2018JD028603 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 551a8ace9afa3222a92248fb7b76832e__1705162380
URL1:https://arc.ask3.ru/arc/aa/55/2e/551a8ace9afa3222a92248fb7b76832e.html
Заголовок, (Title) документа по адресу, URL1:
Adept (C++ library) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)