chol
Функция вычисления разложения Холецкого.
Синтаксис
U = chol(A);
L = chol(A,"L");
Аргументы
| Имя | Тип данных | Описание |
|---|---|---|
| A | array2 | Квадратная симметричная положительно определенная матрица. Если матрица
A несимметрична, то рассматривается матрица как симметричная и
для расчета используется диагональ и верхний треугольник A, или,
если указан параметр "L", то диагональ и нижний
треугольник |
| "L" | string | Параметр, указывающий на способ расчета по нижней треугольной части матрицы
A |
Описание
chol(A) – функция
вычисляет разложение Холецкого матрицы A по ее верхнетреугольной форме,
результат - верхнетреугольная матрица такая, что A = UT * U
chol(A,
"L") – функция вычисляет разложение Холецкого матрицы A
по ее нижнетреугольной форме, результат - нижнетреугольная матрица такая, что A = L *
LT
Входная матрица A может задаваться:
- как переменная типа матрица, определенная ранее:
U = chol(A); - как матрица, состоящая из переменных, определенных ранее:
U = chol([[a1, a2],[a3, a4]]); - как постоянный массив:
U = chol([[1, 2],[5, 7]]);
Результат
| Имя | Тип данных | Описание |
|---|---|---|
| U | array2 | Выходная верхнетреугольная матрица |
| L | array2 | Выходная нижнетреугольная матрица, если указан аргумент
"L" |
Пример
const A = [[13, 7, 4],
[7, 9, -3],
[4, -3, 9]];
//Верхнетреугольное разложение
U = chol(A);
//Нижнетреугольное разложение
L = chol(A,"L");
// Проверка разложения
D1 = transp(U) * U;
D2 = L * transp(L);
В скрипте примера производится разложение Холецкого матрицы A. В
результате выполнения скрипта переменным U и L будут
присвоены значения:
U = [[3.605551275, 1.941450687, 1.109400392];
[ 0, 2.2870875, -2.25345386];
[ 0, 0, 1.640480561]]
L = [[3.605551275, 0, 0];
[1.941450687, 2.2870875, 0];
[1.109400392, -2.25345386, 1.640480561]]
Переменным D1 и D2 будут присвоены значения [[13, 7, 4],
[7, 9, -3], [4, -3, 9]], равные исходной матрице A.
Сопутствующие материалы
Материалов нет.