Разложение Холецкого разреженных матриц
- cholinc(X,'0') – возвращает неполное разложение Холецкого для действительной симметрической положительно определенной разреженной матрицы [nrm = norm(S) занимает слишком много времени. Эта функция изначально предназначена для работы с разреженными матрицами, хотя она работает корректно и с большими полными матрицами;]. Результат представляет собой верхнюю треугольную матрицу;
- R = cholinc(X,'0') – возвращает верхнюю треугольную матрицу, которая имеет такую же разреженную структуру, как и верхний треугольник матрицы действительной положительно определенной матрицы X. Результат умножения R' *R соответствует X по своей разреженной структуре. Положительной определенности матрицы X недостаточно, чтобы гарантировать существование неполного разложения Холецкого, и в этом случае выдается сообщение об ошибке;
- [R,p] = cholinc(X, '0') – никогда не выдает сообщение об ошибке в ходе разложения. Если X – положительно определенная матрица, то р=0 и матрица R – верхняя треугольная, в противном случае р – положительное целое число, R – верхняя треугольная матрица размера qxn, где q=p-l. Разреженная структура матрицы R такая же, как и у верхнего треугольника размера qxn матрицы X, и произведение R' *R размера nxn соответствует структуре разреженности матрицы X по ее первым q строкам и столбцам X(l:q,:) и Х(:,l:q).
- R = cholinc(X,droptol) – возвращает неполное разложение Холецкого любой квадратной разреженной матрицы, используя положительный числовой параметр droptol. Функция cholinc(X,droptol) возвращает приближение к полному разложению Холецкого, вычисленному с помощью функции chol (X). При меньших значениях droptol аппроксимация улучшается, пока значение droptol не станет равным 0. В этом случае cholinc задает полное преобразование Холецкого (chol(X));
- R = cholinc(X.options) – использует структуру с тремя переменными, которые могут быть использованы в любой из комбинаций: droptol, mi chol, rdi ag. Дополнительные поля игнорируются. Если mi chol =1, cholinc возвращает модифицированное разложение Холецкого. Если rdiag=l, то все нули на диагонали верхней треугольной матрицы заменяются квадратным корнем от произведения droptol и нормы соответствующего столбца матрицы X – sqrt(droptol*norm(X(:,j))). По умолчанию rdiag=0;
- R = cholinc(X,droptol) и R = cholinc(X.options) – возвращают верхнюю треугольную матрицу R. Результат R'*R – это аппроксимация матрицы;
- R = cholinc(X, 'inf') – возвращает разложение Холецкого в неопределенности, когда не удается получить обычное разложение. Матрица X может быть действительной квадратной положительно полуопределенной.
Пример:
>
>
S
=
delsq(numgnd(
''
.
4
))
S
=
(
1.1
)
4
(
2.1
)
-
1
(
1.2
)
-
1
(
2.2
)
4
(
3.2
)
-
1
(
2.3
)
-
1
(
3.3
)
4
>
>
R0
=
cholinc(S,
'0'
)
R0
=
(
1.1
)
2.0000
(
1.2
)
-
0.5000
(
2.2
)
1.9365
(
2.3
)
-
0.5164
(
3.3
)
1.9322