Функции | |
void | chol_decomp (double **A, size_t n) |
Разложение Холецкого. | |
void | chol_solve (double **LL, size_t n, double *b) |
Решение системы линейных уравнений. |
Файл содержит функции, реализующие и использующие разложение Холецкого.
Произвольная квадратная положительно определенная матрица допускает разложение вида , где - нижнетреугольная матрица. Такое разложение можно использовать для решения системы линейных уравнений с положительно определенной матрицей путем сведения ее к двум треугольным системам , .
void chol_decomp | ( | double ** | A, | |
size_t | n | |||
) |
Разложение Холецкого.
Функция находит разложение Холецкого квадратной положительно определенной матрицы порядка . На выходе диагональ и нижнетреугольная часть матрицы содержат элементы матрицы . Верхнетреугольная часть матрицы содержит элементы матрицы . Диагональные элементы матриц и совпадают. Если матрица не является положительно определенной, то генерируется ошибка nl_err_matrix_is_not_positive_definite.
Для разложения используется алгоритм Холецкого (квадратных корней)
Трудоемкость: операций с плавающей запятой
void chol_solve | ( | double ** | LL, | |
size_t | n, | |||
double * | b | |||
) |
Решение системы линейных уравнений.
Функция находит решение квадратной системы линейных уравнений порядка $n$ с положительно определенной матрицей , используя ее разложение Холецкого. Разложение Холецкого матрицы должно быть представлено матрицей , возвращаемой функцией chol_decomp. Решение записывается на месте вектора правой части . Матрица не изменяется данной функцией и может быть использованы для решения системы с другой правой частью.
Используется алгоритм прямой и обратной подстановки.
Трудоемкость: операций с плавающей запятой