Jump to content

Эффективная матричная библиотека Java

Оригинальный автор(ы) Питер Абелес
Стабильная версия
0.41.1 / 4 декабря 2022 г .; 20 месяцев назад ( 04.12.2022 )
Репозиторий
Операционная система Кросс-платформенный
Тип Библиотека
Лицензия Лицензия Апач
Веб-сайт эймл .org

Efficient Java Matrix Library (EJML) — это библиотека линейной алгебры для управления вещественными/сложными/плотными/разреженными матрицами. Цели его проектирования: 1) быть максимально эффективным с точки зрения вычислений и памяти как для маленьких, так и для больших матриц, и 2) быть доступным как для новичков, так и для экспертов. Эти цели достигаются путем динамического выбора лучших алгоритмов для использования во время выполнения, чистого API и нескольких интерфейсов. EJML бесплатен, написан на 100% Java и выпущен под лицензией Apache v2.0.

EJML имеет три различных способа взаимодействия с ним: 1) процедурный, 2) SimpleMatrix и 3) уравнения. Процедурный стиль предоставляет все возможности EJML и практически полный контроль над созданием матриц, скоростью и конкретными алгоритмами. Стиль SimpleMatrix предоставляет упрощенное подмножество основных возможностей в простом в использовании объектно-ориентированном API в стиле потока, вдохновленном JAMA . Стиль Equations предоставляет символьный интерфейс, аналогичный по духу Matlab и другим CAS, который обеспечивает компактный способ написания уравнений. [1]

Возможности

[ редактировать ]

EJML предоставляет следующие возможности для плотных матриц.

  • Основные операторы (сложение, умножение,...)
  • Матричные манипуляции (извлечение, вставка, объединение...)
  • Линейные решатели (линейные, наименьшие квадраты, инкрементные,...)
  • Разложения (LU, QR, Холецкого, SVD, собственное значение, ...)
  • Характеристики матрицы (ранг, симметричность, определенность, ...)
  • Случайные матрицы (ковариантные, ортогональные, симметричные,...)
  • Различные внутренние форматы (строки, блоки)
  • Модульное тестирование

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

[ редактировать ]

Стиль уравнения

[ редактировать ]

Вычисление усиления Калмана :

eq.process("K = P*H'*inv( H*P*H' + R )");

Процедурный стиль

[ редактировать ]

Вычисление усиления Калмана:

mult(H, P, c);
multTransB(c, H, S);
addEquals(S, R);
if (!invert(S, S_inv))
    throw new RuntimeException("Invert failed");
multTransA(H, S_inv, d);
mult(P, d, K);

Стиль SimpleMatrix

[ редактировать ]

Пример разложения по сингулярным значениям (SVD):

SimpleSVD s = matA.svd();
SimpleMatrix U = s.getU();
SimpleMatrix W = s.getW();
SimpleMatrix V = s.getV();

Пример умножения матрицы:

SimpleMatrix result = matA.mult(matB);

РазложениеФабрика

[ редактировать ]

Использование DecompositionFactory для вычисления разложения по сингулярным значениям с помощью плотной двухстрочной основной матрицы (DDRM): [2]

SingularValueDecomposition_F64<DenseMatrix64F> svd = 
    DecompositionFactory_DDRM.svd(true, true, true);

if (!DecompositionFactory.decomposeSafe(svd, matA))
    throw new DetectedException("Decomposition failed.");

DenseMatrix64F U = svd.getU(null, false);
DenseMatrix64F S = svd.getW(null);
DenseMatrix64F V = svd.getV(null, false);

Пример умножения матрицы:

CommonOps_DDRM.mult(matA, matB, result);

См. также

[ редактировать ]
  1. ^ «Страница проекта EJML» . ЭЖМЛ . Питер Абелес . Проверено 21 января 2019 г.
  2. ^ «Матричное разложение — эффективная матричная библиотека Java» . ejml.org . Проверено 24 апреля 2021 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: df101faacd407e952f47aba69f6c894f__1703248200
URL1:https://arc.ask3.ru/arc/aa/df/4f/df101faacd407e952f47aba69f6c894f.html
Заголовок, (Title) документа по адресу, URL1:
Efficient Java Matrix Library - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)