Я хотел бы решить систему линейных уравнений:Решения нормальной системы уравнений в C++
Ax = b
А n x m
матрицы (не квадратные) а, б и х оба n x 1
векторов. Где A и b известны, n составляет порядка 50-100, а m равно 2 (другими словами, A может быть максимальным [100x2]).
Я знаю, что решение x
: $x = \inv(A^T A) A^T b$
Я нашел несколько способов ее решения: uBLAS (Boost), LaPack, Эйгена и т.д., но я не знаю, как быстро процессор время вычисления «х» используя эти пакеты. Я также не знаю, было ли это численно быстро, почему нужно решить «x»
Что для меня важно, так это то, что время вычисления ЦП будет коротким, насколько это возможно, и хорошей документацией, так как я новичок.
После решения нормального уравнения Ax = b
я хотел бы улучшить свое приближение с использованием регрессивного и возможно позже с применением фильтра Калмана.
Мой вопрос в том, какая библиотека C++ является роботом и быстрее для нужд, описанных выше?
Как вам несколько п х т матрицы с помощью мерного вектора-столбца п? Предположительно x на самом деле m размер. –
Кроме того, есть ли у вас какое-то требование, в котором указано минимальное количество соответствия модным словом? –
@ Eagle Я не думаю, что библиотека Boost uBLAS реализует это, но, пожалуйста, исправьте меня, если я ошибаюсь. Скорее всего, UBLAS предоставляет вам векторы, матрицы и базовые операции (умножение, добавление), но ничего подобного LU, QR, SVD или инверсии матрицы, не говоря уже о реализации OLS. Однако, вероятно, это хорошая библиотека для реализации таких алгоритмов. Опять же, скажите, пожалуйста, если я ошибаюсь, или если вы нашли хорошую версию uBLAS OLS для Boost ... – Arthur