WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
Iterative Template Library
Тип Библиотека
Разработчик Open Systems Lab
Написана на C++
Операционная система Кроссплатформенное программное обеспечение
Последняя версия 4.0.0 (26 октября 2001 года)
Лицензия Полусвободное ПО[1]
Сайт osl.iu.edu/research/itl/

Iterative Template Library (ITL) — библиотека компонентов, предназначенных для применения итеративных численных методов в манипуляциях с объектами линейной алгебры.

Особенности

ITL состоит из двух функциональных групп. Первая группа представляет собой коллекцию сложных итеративных методов, использующих алгоритмы базовых операций линейной алгебры, реализованные в специализированных пакетах типа Matrix Template Library (MTL) или Blitz++. Вторая группа — это набор алгоритмов предобуславливания, разработанный специально для работы с MTL.

Библиотека ITL использует абстрактные интерфейсы для операций вида матрица-вектор, вектор-вектор и вектор-скаляр, что позволяет прозрачно использовать их реализацию в сторонних библиотеках.

История развития

Данная библиотека была создана в Open Systems Lab — исследовательской лаборатории Индианского университета, как часть MTL.

Впервые была опубликована отдельно от MTL 25 июля 2000 года. Новый релиз включал в себя, кроме всего прочего, несколько интерфейсов для BLAS и Blitz++.

В последнем релизе (4.0.0) была произведена декомпозиция библиотеки на три функциональные области: методы для работы с подпространством Крылова; предобуславливания и интерфейсы. Методы для работы с подпространством Крылова являются базовыми, и не ограничены в использовании стандартными библиотеками, реализующими объекты линейной алгебры. Интерфейсы предназначены для использования в итеративных алгоритмах подпространства Крылова основных операций линейной алгебры, реализованных в сторонних библиотеках, таких как: MTL, Blitz++. Предобуславливания реализованы только для работы с библиотекой MTL.

Также, в этот релиз были включены экспериментальные интерфейсы для поддержки параллельных вычислений.

Идеи, заложенные в ITL, были продолжены и развиты в проекте Iterative Eigensolver Template Library (IETL)[2].

Примеры использования

Принципы обобщённого программирования, в рамках которых создана библиотека,[3] предполагают упрощение интерфейсов. Это привело к тому, что алгоритмы ITL напоминают некий псевдокод. Как минимум, по сравнению с другими реализациями тех же алгоритмов. К примеру, реализация метода сопряжённых градиентов будет выглядеть следующим образом:

/* необходимые операции: mult,copy,dot_conj,add,scaled */
template < class Matrix, class VectorX, class VectorB, 
           class Preconditioner, class Iteration >
int cg(const Matrix& A, VectorX& x, const VectorB& b, 
       const Preconditioner& M, Iteration& iter)
{
    typedef VectorX TmpVec;
    typename itl_traits<VectorX>::value_type rho(0), rho_1(0), alpha(0), beta(0);
    TmpVec p(size(x)), q(size(x)), r(size(x)), z(size(x));
 
    itl::mult(A, itl::scaled(x, -1.0), b, r);	  
 
    while (! iter.finished(r))
    {
        itl::solve(M, r, z);
        rho = itl::dot_conj(r, z);
        if (iter.first())
            itl::copy(z, p);		  
        else 
        {
            beta = rho / rho_1;
            itl::add(z, itl::scaled(p, beta), p); 
        } 
 
        itl::mult(A, p, q);		  
 
        alpha = rho / itl::dot_conj(p, q);
 
        itl::add(x, itl::scaled(p, alpha), x);  
        itl::add(r, itl::scaled(q, -alpha), r); 
 
        rho_1 = rho;
 
        ++iter;
    }
 
    return iter.error_code();
}

Примечания

  1. Пользовательское соглашение ITL (недоступная ссылка). Проверено 24 сентября 2013. Архивировано 1 октября 2013 года.
  2. Проект IETL Архивировано 3 октября 2013 года.
  3. Тимофеев А. В., Сырцев А. В., Колотаев А. В. Библиотека имитационного моделирования телекоммуникационных сетей TKSYM. gpss.ru (2005). Проверено 27 сентября 2013.

См. также

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.ru - проект по пересортировке и дополнению контента Википедии