Функции | |
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. Решение
записывается на месте вектора правой части
. Матрица
не изменяется данной функцией и может быть использованы для решения системы с другой правой частью.
Используется алгоритм прямой и обратной подстановки.
Трудоемкость: операций с плавающей запятой