Автор Владимир Майоров задал вопрос в разделе Образование
Кто знает что-нибудь про QR разложение? и получил лучший ответ
Ответ от Паша Перепелица[гуру]
Это из линейной алгебры и программирования.
Одним из наиболее часто применяемых способов ортогональной факторизации прямоугольной матрицы размера MxN является QR-разложение, при котором матрица представляется в виде A = QR, где Q - ортогональная квадратная матрица, R - верхнетреугольная или верхнетрапецоидальная матрица (в зависимости от размера матрицы A).
Для решения систем уравнений это разложение обычно не применяется, поскольку оно примерно в два раза медленнее, чем LU-разложение, но в ряде случаев оно оказывается полезным.
QR-разложение позволяет представить произвольную матрицу A в виде произведения ортогональной матрицы Q (не матрица перестановок) и верхней треугольной матрицы R.
--
Функции
template<typename>
void cmn::qr_decomp ( matrix< Ta > & a,
std::vector< Td > & d
)
QR разложение.
Функция выполняет QR -разложение. Матрица a на входе содержит исходную матрицу, а на выходе вместе с вектором d - результат разложения.
Аргументы:
a ссылка на исходную матрица
d ссылка на вектор QR разложения
template<typename>
Td cmn::qr_det ( const std::vector< Td > & d )
Вычисляет определитель на основе QR -матрицы.
Функция позволяет вычислить определитель матрицы на основе QR -разложения. В качестве параметра d нужно использовать вектор, полученный с помощью функции cmn::qr_decomp().
Аргументы:
d ссылка на вектор QR разложения
Возвращает:
определитель
template<typename>
void cmn::qr_extract_Q ( matrix< Tq > & q,
const matrix< Tqr > & qr
)
Рассчитать матрицу Q на основе QR-матрицы.
Функция позволяет извлечь из результатов QR -разложения ортогональную матрицу Q.
Аргументы:
q ссылка на матрицу, которая получит матрицу Q
qr ссылка на QR -матрицу
template<typename>
void cmn::qr_extract_R ( matrix< Tr > & r,
const matrix< Tqr > & qr,
const std::vector< Td > & d
)
Рассчитать матрицу R на основе QR -матрицы.
Функция позволяет извлечь из результатов QR -разложения верхнюю треугольную матрицу R.
Аргументы:
r ссылка на матрицу, которая получит матрицу R
d ссылка на вектор QR разложения
qr ссылка на QR -матрицу
template<typename>
void cmn::qr_inverse ( matrix< Tx > & x,
const matrix< Tqr > & qr,
const std::vector< Td > & d
)
Нахождение обратной матрицы на основе QR -матрицы.
Функция позволяет находить обратную матрицу на основе QR -разложения. По сути, эта процедура идентична решению системы уравнений, где в качестве свободных членов выступает единичная матрица. В качестве параметров qr и d используется QR -разложение, полученное с помощью функции cmn::qr_decomp(). Параметр x на выходе содержит обратную матрицу.
Аргументы:
x ссылка на матрицу, которая будет содержать обратную матрицу
qr ссылка на QR -матрицу
d ссылка на вектор QR разложения
template<typename>
void cmn::qr_solve ( matrix< Tbx > & bx,
const matrix< Tqr > & qr,
const std::vector< Td > & d
)
Решение СЛАУ на основе QR -матрицы.
функция позволяет решать системы линейных алгебраических уравнений вида A*X = B на основе QR -разложения. Где X и B являются матрицами. В качестве параметров qr и d используется QR -разложение, полученное с помощью функции cmn::qr_decomp(). Параметр bx на входе содержит матрицу свободных членов, а на выходе
найденное решение.
Аргументы:
bx ссылка на матрицу свободных членов
qr ссылка на QR -матрицу
d ссылка на вектор QR разложения
Источник:
QR разложение связано c яденой реакцией высшего разряда, берем еденицу нижнего, протоны смещаются в разрешенный разряд и перемещаются по орбите Гауса, в следствии чего наступает полоное QR разложение
кто знает где найти информацию по "qr алгоритм нахождения собственных значений матрицы"
прекрасное описание было в "Numerical Recipes" - книжка с практически полезными алгоритмами и
подробнее...