Факторизация Холесского
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.