lu

Функция вычисления LU-разложения матрицы.

Синтаксис

B = lu(A);
B = lu(A, p);
B = lu(A, L, U);
B = lu(A, L, U, Pv);

Аргументы

Имя Тип данных Описание
A array2 Входная квадратная матрица
p intarray Выходной целочисленный массив перестановок
L array2 Выходная нижнетреугольная матрица с единичной диагональю
U array2 Выходная верхнетреугольная матрица
Pv array2 Выходная квадратная матрица перестановок

Описание

lu(A) – функция вычисляет LU-разложение матрицы A, результат - смешанная форма представления матриц L и U в следующем виде:

lu(A,p) – функция вычисляет LU-разложение матрицы A, результат - смешанная форма представления матриц L и U и массив перестановок p. Данная компактная смешанная форма функции является основой для решения СЛАУ. Рекомендуется использовать данный вариант разложения.

lu(A, L, U) – функция вычисляет LU-разложение матрицы A, результат - матрица L с учетом перестановок и матрица U такие, что A = L*U

lu(A, L, U, P) – функция вычисляет LU-разложение матрицы A, результат - матрица L без учета перестановок, матрица U и матрица перестановок P такие, что A = P*L*U

Входная матрица A может задаваться:

  • как переменная типа матрица, определенная ранее:

    B = lu(A);

  • как матрица, состоящая из переменных, определенных ранее:

    B = lu([[a1, a2],[a3, a4]]);

  • как постоянный массив:

    B = lu([[1, 2],[5, 7]]);

Результат

Имя Тип данных Описание
B array2 Выходная матрица, содержащая смешанное представление L и U

Пример 1

const A = [[10, -7,  0],
            [-3,  2,  6],
            [5,  -1,  5]];
var p: intarray;

// Компактная смешанная форма
B = lu(A, p);
В скрипте примера производится LU-разложение матрицы A с выводом L и U в компактной смешанной форме, в виде матрицы B, и выводом массива перестановок p. В результате выполнения скрипта переменным будут присвоены значения:
B = [[  10,   -7,   0];
     [ 0.5,  2.5,   5];
     [-0.3, -0.04, 6.2]]
p =  [0, 2, 2]

Пример 2

const A = [[10, -7,  0],
            [-3,  2,  6],
            [5,  -1,  5]];

var L: array2, U: array2;

{Форма с раздельным выводом матриц L,U, при этом перестановка
 автоматически применена к матрице L}
B = lu(A,L,U);
//Проверка разложения		 
D = L*U; 		 

В скрипте примера производится LU-разложение матрицы A с раздельным выводом матриц L и U, при этом к матрице L уже применена матрица перестановок. В результате выполнения скрипта переменным будут присвоены следующие значения:

L = [[  1,     0, 0];
    [-0.3, -0.04, 1];
    [ 0.5,     1, 0]];

U = [[10,  -7,   0];
     [ 0, 2.5,   5];
     [ 0,   0, 6.2]]

Переменной D будет присвоено значение [[10 , -7 , 0];[-3 , 2 , 6];[5 , -1 , 5]], равное исходной матрице A.

Пример 3

const A = [[10, -7,  0],
            [-3,  2,  6],
            [5,  -1,  5]];
var L: array2, U: array2, Pv: array2;

// Форма с раздельным выводом матриц L,U и матрицей перестановок Pv
B = lu(A, L, U,Pv);
//Проверка разложения
D = Pv*L*U;

В скрипте примера производится LU-разложение матрицы A с раздельным выводом матриц L, U и матрицы перестановок P. В результате выполнения скрипта переменным будут присвоены следующие значения:

L = [[  1,     0,  0];
     [0.5,     1,  0];
     [-0.3, -0.04, 1]]

U = [[10,  -7,   0];
     [ 0, 2.5,   5];
     [ 0,   0, 6.2]]

Pv = [[1, 0, 0];
      [0, 0, 1];
      [0, 1, 0]]

Переменной D будет присвоено значение, равное исходной матрице A.

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

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