Факторизация Холесского
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 для определения положительной определенности.
Функция 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 является .
L = chol(A, 'lower'); D = norm(A - L*L', 'fro');
Значение D будет отличаться несколько среди различных версий MATLAB, но будет на порядке .
Биномиальные коэффициенты, расположенные в симметричном массиве, создают положительную определенную матрицу.
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.