Матричный инструментарий Java
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Оригинальный автор(ы) | Бьёрн-Уве Хеймсунд |
---|---|
Первоначальный выпуск | 2003 год |
Предварительный выпуск | 0.9.14
/ 22 ноября 2011 г. |
Репозиторий | github |
Написано в | Ява |
Тип | Интерфейс прикладного программирования (API) |
Лицензия | LGPL |
Matrix Toolkit Java (MTJ) — это с открытым исходным кодом Java программная библиотека для выполнения числовой линейной алгебры . Библиотека содержит полный набор стандартных операций линейной алгебры для плотных матриц на основе кода BLAS и LAPACK . Частичный набор разреженных операций предоставляется в рамках проекта Templates. Библиотеку можно настроить для работы как чистой библиотеки Java или использовать машинно-оптимизированный код BLAS через собственный интерфейс Java .
Первоначально MTJ был разработан Бьорном-Уве Хеймсундом, который сделал шаг назад из-за других обязательств. На веб-странице проекта указано, что «(новые сопровождающие) в первую очередь озабочены поддержанием поддержки библиотеки и исправлением ошибок по мере их обнаружения. План действий для будущих выпусков отсутствует». [1]
Несколько упоминаний MTJ можно найти в научной литературе, в том числе [2] который использует свой предобуславливатель LU. Производительность MTJ сравнивалась с другими библиотеками, которые можно найти на сайте Java Matrix Benchmark. [3]
Возможности
[ редактировать ]Ниже приводится обзор возможностей MTJ, перечисленных на веб-сайте проекта:
- Структуры данных для плотных и структурированных разреженных матриц в следующих форматах:
- Плотный, столбчатый.
- Ленточные матрицы, хранящие лишь несколько диагоналей.
- Упакованные матрицы, хранящие только половину матриц (для треугольных или симметричных матриц).
- Трехдиагональные и симметричные трехдиагональные матрицы.
- Прозрачная поддержка симметричного и треугольного хранилища.
- Структуры данных для неструктурированных разреженных матриц в этих форматах:
- Сжатое хранилище строк или столбцов (CRS/CCS).
- Гибкая CRS/CCS с использованием растущих разреженных векторов.
- Сжатое диагональное хранилище (CDS).
- Плотные и структурированные разреженные матрицы создаются на основе BLAS и LAPACK и включают в себя следующие внутренние операции:
- Умножение матрицы/вектора.
- Матрица/умножение матриц.
- Ранжируйте обновления по матрицам или векторам.
- Прямые решатели матриц.
- Неструктурированные разреженные матрицы поддерживают те же операции, что и структурированные, за исключением того, что у них нет прямых решателей. Однако их методы умножения матриц/векторов оптимизированы для использования в итерационных решателях.
- Матричные разложения плотных и структурированных разреженных матриц:
- ЛУ и Холецкий.
- Разложения по собственным значениям для несимметричных плотных матриц.
- Разложения по сингулярным числам для несимметричных плотных матриц.
- Разложения по собственным значениям для симметричных матриц (трехдиагональных, полосчатых, упакованных и плотных).
- Ортогональные матричные разложения для плотных матриц (QR, RQ, LQ и QL).
- Итеративные решатели для неструктурированных разреженных матриц из проекта Templates:
- Бисопряженные градиенты.
- Градиенты BiConjugate стабилизировались.
- Сопряженные градиенты.
- Сопряженные градиенты в квадрате.
- Чебышевская итерация.
- Обобщенный минимальный остаток (GMRES).
- Итеративное уточнение (метод Ричардсона).
- Квазиминимальный остаток.
- Подборка алгебраических предобуславливателей:
- Диагональная предобусловливание.
- Симметричное последовательное перерасслабление.
- Неполный Холецкий.
- Неполный ЛУ.
- Неполный LU с заполнением с использованием пороговой обработки.
- Алгебраическая многосетка путем сглаженного агрегирования.
Примеры использования
[ редактировать ]Пример разложения по сингулярным значениям (SVD):
SVD svd = new SVD(matA.numRows(),matA.numColumns());
SVD s = svd.factor(matA);
DenseMatrix U = s.getU();
DenseMatrix S = s.getS();
DenseMatrix Vt = s.getVt();
Пример умножения матрицы:
DenseMatrix result = new DenseMatrix(matA.numRows(),matB.numColumns());
matA.mult(matB,result);
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Страница проекта MTJ» . МТДЖ . Проверено 30 ноября 2012 г.
- ^ МакМахан, HB; Гордон, Дж.Дж. (2005). «Быстрое точное планирование в процессах принятия решений Маркова» (PDF) . Учеб. 15-й Международной конференции по автоматизированному планированию и составлению графиков (ICAPS-05) .
- ^ «Бенчмарк Java-матрицы» . Проверено 6 декабря 2012 г.