chol

Факторизация Холесского

Синтаксис

R = chol (A)
L = chol (A, 'ниже')
R = chol (A, 'верхний')
[R, p] = chol (A)
[L, p] = chol (A, 'ниже')
[R, p] = chol (A, 'верхний')
[R, p, S] = chol (A)
[R, p, s] = chol (A, 'вектор')
[L, p, s] = chol (A, 'ниже', 'вектор')
[R, p, s] = chol (A, 'верхний', 'векторный')

Описание

R = chol(A) производит верхнюю треугольную матрицу R из диагонального и верхнего треугольника матричного A, удовлетворяя уравнению R'*R=A. Функция chol принимает, что A (объедините Эрмитов), симметричный. Если это не, использование chol (сопряженное комплексное число) транспонирует верхнего треугольника как более низкий треугольник. Матричный A должен быть положителен определенный.

L = chol(A,'lower') производит нижний треугольный матричный L из диагонали и более низкого треугольника матричного A, удовлетворяя уравнению L*L'=A. Функция chol принимает, что A (объедините Эрмитов), симметричный. Если это не, использование chol (сопряженное комплексное число) транспонирует более низкого треугольника как верхний треугольник. Когда A разрежен, этот синтаксис chol обычно быстрее. Матричный A должен быть положителен определенный. R = chol(A,'upper') совпадает с R = chol(A).

[R,p] = chol(A) для положительного определенного A, производит верхнюю треугольную матрицу R из диагонального и верхнего треугольника матричного A, удовлетворяя уравнению, R'*R=A и p являются нулем. Если A не положителен определенный, то p является положительным целым числом, и MATLAB® не генерирует ошибку. Когда A полон, R является верхней треугольной матрицей порядка q=p-1, таким образом что R'*R=A(1:q,1:q) q. Когда A разрежен, R является верхней треугольной матрицей размера q-by-n так, чтобы L - имеющая форму область первых строк q и первых столбцов q R'*R согласилась с теми из A.

[L,p] = chol(A,'lower') для положительного определенного A, производит нижний треугольный матричный L из диагонали и более низкого треугольника матричного A, удовлетворяя уравнению, L*L'=A и p являются нулем. Если A не положителен определенный, то p является положительным целым числом, и MATLAB не генерирует ошибку. Когда A полон, L является нижней треугольной матрицей порядка q=p-1, таким образом что L*L'=A(1:q,1:q) q. Когда A разрежен, L является нижней треугольной матрицей размера q-by-n так, чтобы L - имеющая форму область первых строк q и первых столбцов q L*L' согласилась с теми из A. [R,p] = chol(A,'upper') совпадает с [R,p] = chol(A).

Следующие синтаксисы с тремя выводами требуют разреженного входного параметра A.

[R,p,S] = chol(A), когда A разрежен, возвращает матрицу перестановок S. Обратите внимание на то, что предварительное упорядоченное расположение, S может отличаться от полученного из amd начиная с chol, немного изменит упорядоченное расположение для увеличенной производительности. Когда p=0, R является верхней треугольной матрицей, таким образом что R'*R=S'*A*S. Когда p не является нулем, R является верхней треугольной матрицей размера q-by-n так, чтобы L - имеющая форму область первых строк q и первых столбцов q R'*R согласилась с теми из S'*A*S. Фактор S'*A*S имеет тенденцию быть более разреженным, чем фактор A.

[R,p,s] = chol(A,'vector'), когда A разрежен, возвращает информацию о перестановке как векторный s, таким образом что A(s,s)=R'*R, когда p=0. Можно использовать опцию 'matrix' вместо 'vector', чтобы получить поведение по умолчанию.

[L,p,s] = chol(A,'lower','vector'), когда A разрежен, использует только диагональ и более низкий треугольник A и возвращает нижний треугольный матричный L и вектор перестановки s, таким образом что A(s,s)=L*L', когда p=0. Как выше, можно использовать опцию 'matrix' вместо 'vector', чтобы получить матрицу перестановок. [R,p,s] = chol(A,'upper','vector') совпадает с [R,p,s] = chol(A,'vector').

Примечание

Используя chol предпочтительно для использования eig для определения положительной определенности.

Примеры

Пример 1

Функция gallery предоставляет несколько симметричных, положительных, определенных матриц.

A=gallery('moler',5)

A =

     1    -1    -1    -1    -1
    -1     2     0     0     0
    -1     0     3     1     1
    -1     0     1     4     2
    -1     0     1     2     5

C=chol(A)

ans =

     1    -1    -1    -1    -1
     0     1    -1    -1    -1
     0     0     1    -1    -1
     0     0     0     1    -1
     0     0     0     0     1
isequal(C'*C,A)

ans =

     1

Для разреженных входных матриц chol возвращает Фактор Холесского.

N = 100;
A = gallery('poisson', N); 

N представляет количество узлов решетки в одном направлении квадрата N-by-N сетка. Поэтому A является N2 N2.

L = chol(A, 'lower');
D = norm(A - L*L', 'fro');

Значение D будет отличаться несколько среди различных версий MATLAB, но будет на порядке 10−14.

Пример 2

Биномиальные коэффициенты, расположенные в симметричном массиве, создают положительную определенную матрицу.

n = 5;
X = pascal(n)
X =
    1    1    1    1    1
    1    2    3    4    5
    1    3    6   10   15
    1    4   10   20   35
    1    5   15   35   70

Эта матрица интересна, потому что ее Фактор Холесского состоит из тех же коэффициентов, расположенных в верхней треугольной матрице.

R = chol(X)
R =
    1    1    1    1    1
    0    1    2    3    4
    0    0    1    3    6
    0    0    0    1    4
    0    0    0    0    1

Уничтожьте положительную определенность (и на самом деле сделайте матрицу сингулярной) путем вычитания 1 от последнего элемента.

X(n,n) = X(n,n)-1

X =
    1    1    1    1    1
    1    2    3    4    5
    1    3    6   10   15
    1    4   10   20   35
    1    5   15   35   69

Теперь попытка найти факторизацию Холесского сбоев X.

chol(X)
Error using chol
Matrix must be positive definite.

Расширенные возможности

Смотрите также

|

Представлено до R2006a

Была ли эта тема полезной?