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.

Сопутствующие материалы

Материалов нет.