Функции | |
void | qr_decomp (double **A, size_t m, size_t n, double *t) |
-разложение матрицы. | |
void | qr_decomp_t (double **At, size_t m, size_t n, double *t) |
-разложение матрицы, в отличие от qr_decomp работает с транспонированной матрицей. | |
void | qr_solve (double **QR, size_t n, double *t, double *b) |
Решение системы линейных уравнений. | |
void | qr_solve_t (double **QRt, size_t n, double *t, double *b) |
Решение системы линейных уравнений, в отличие от qr_solve работает с транспонированной матрицей. | |
void | qr_least_squares (double **QR, size_t m, size_t n, double *t, double *b, double *r) |
`Решение' переопределенной системы методом наименьших квадратов. | |
void | qr_least_squares_t (double **QRt, size_t m, size_t n, double *t, double *b, double *r) |
`Решение' переопределенной системы методом наименьших квадратов, в отличие от qr_least_squares работает с транспонированной матрицей. | |
void | qr_least_unpack (double **QR, size_t m, size_t n, double *t, double **Q, double **R) |
Полное представление -разложения. | |
void | qr_least_unpack_t (double **QRt, size_t m, size_t n, double *t, double **Q, double **R) |
Полное представление -разложения, в отличие от qr_least_unpack работает с транспонированной матрицей. |
Файл содержит функции, реализующие и использующие -разложение матрицы.
Произвольная матрица ранга допускает разложение вида , где - матрица с ортогональными столбцами, - верхнетреугольная матрица. Такое разложение можно использовать для решения системы линейных уравнений , сводя ее к треугольной системе . Данная треугольная система позволяет также найти псевдорешение (в смысле метода наименьших квадратов) переопределенной системы. -разложение используется также для нахождения ортонормированного базиса подпространства. Если имеет полный столбцовый ранг, то столбцы матрицы составляют ортонормированный базис подпространства, натянутого на столбцы матрицы .
void qr_decomp | ( | double ** | A, | |
size_t | m, | |||
size_t | n, | |||
double * | t | |||
) |
-разложение матрицы.
Функция находит -разложение матрицы A ранга . На выходе диагональ и верхнетреугольная часть матрицы содержат элементы матрицы . Матрица представлена элементами ниже диагонали и вектором . Вектор имеет длину . Матрица определяется произведением матриц отражений Хаусхолдера: , где и . Такая же схема используется в библиотеках LAPACK, GSL и др.
Для разложения используется алгоритм вращений Хаусхолдера (См. [GolubVanLoan], алгоритм 5.2.1).
Трудоемкость:
void qr_decomp_t | ( | double ** | At, | |
size_t | m, | |||
size_t | n, | |||
double * | t | |||
) |
-разложение матрицы, в отличие от qr_decomp работает с транспонированной матрицей.
Трудоемкость:
void qr_least_squares | ( | double ** | QR, | |
size_t | m, | |||
size_t | n, | |||
double * | t, | |||
double * | b, | |||
double * | r | |||
) |
`Решение' переопределенной системы методом наименьших квадратов.
Функция находит псевдорешение переопределенной системы линейных уравнений ранга , используя предварительно найденное -разложение матрицы . -разложение должно быть представлено матрицей и вектором , возвращаемыми функцией qr_decomp. Псевдорешение минимизирует евклидову норму невязки . Псевдорешение записывается на месте вектора правой части . Невязка возвращается в векторе .
Трудоемкость:
void qr_least_squares_t | ( | double ** | QRt, | |
size_t | m, | |||
size_t | n, | |||
double * | t, | |||
double * | b, | |||
double * | r | |||
) |
`Решение' переопределенной системы методом наименьших квадратов, в отличие от qr_least_squares работает с транспонированной матрицей.
Функция находит псевдорешение переопределенной системы линейных уравнений , используя предварительно найденное -разложение матрицы . -разложение должно быть представлено матрицей и вектором , возвращаемыми функцией qr_decomp_t. Псевдорешение минимизирует евклидову норму невязки . Псевдорешение записывается на месте вектора правой части . Невязка возвращается в векторе .
Трудоемкость:
void qr_least_unpack | ( | double ** | QR, | |
size_t | m, | |||
size_t | n, | |||
double * | t, | |||
double ** | Q, | |||
double ** | R | |||
) |
Полное представление -разложения.
Функция находит матрицы , размеров и соответственно, представленные в запакованном формате , .
Трудоемкость:
void qr_least_unpack_t | ( | double ** | QRt, | |
size_t | m, | |||
size_t | n, | |||
double * | t, | |||
double ** | Q, | |||
double ** | R | |||
) |
Полное представление -разложения, в отличие от qr_least_unpack работает с транспонированной матрицей.
Функция находит матрицы Q, R размеров и соответственно, представленные в запакованном формате , .
Трудоемкость:
void qr_solve | ( | double ** | QR, | |
size_t | n, | |||
double * | t, | |||
double * | b | |||
) |
Решение системы линейных уравнений.
Функция находит решение квадратной системы линейных уравнений порядка . Функция использует предварительно найденное -разложение матрицы , представленное матрицей и вектором , которые возвращаются функцией qr_decomp. Решение записывается на месте вектора правой части . Матрица и вектор не меняются данной функцией и могут быть использованы для решения системы с другой правой частью.
Используется алгоритм прямой и обратной подстановки.
Трудоемкость:
void qr_solve_t | ( | double ** | QRt, | |
size_t | n, | |||
double * | t, | |||
double * | b | |||
) |
Решение системы линейных уравнений, в отличие от qr_solve работает с транспонированной матрицей.
Функция находит решение квадратной системы линейных уравнений порядка . Функция использует предварительно найденное -разложение матрицы , представленное матрицей и вектором , которые возвращаются функцией qr_decomp_t. Решение записывается на месте вектора правой части . Матрица и вектор не меняются данной функцией и могут быть использованы для решения системы с другой правой частью.
Используется алгоритм прямой и обратной подстановки.
Трудоемкость: