2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 модификация фактора Холецкого
Сообщение24.06.2015, 08:37 
На викиведии (https://en.wikipedia.org/wiki/Cholesky_decomposition#Updating_the_decomposition) описана чистичная модификация фактора Холецкого при обновлении исходной матрицы. Не могу понять, как модифицировать алгоритм с учетом нормализиции.

Т.е., если есть исходная матрица J (прямоугольная, частных производных), то находим от нее симметричную положительно определенную матрицу как

Код:
H = J'*J;


Затем (с помощью матлаба) находим фактор разложения Холецкого от матрицы H

Код:
L = chol(H)';


Процедура модификации фактора описана в википедии как

Код:
function [L] = cholupdate(L,x)
    p = length(x);
    for k=1:p
        r = sqrt(L(k,k)^2 + x(k)^2);
        c = r / L(k, k);
        s = x(k) / L(k, k);
        L(k, k) = r;
        L(k+1:p,k) = (L(k+1:p,k) + s*x(k+1:p)) / c;
        x(k+1:p) = c*x(k+1:p) - s*L(k+1:p,k);
    end
end


Тогда при добавлении строки к матрице J быстро находим модифицированный фактор

Код:
L_updated = cholupdate(L, new_J_row');


Но все меняется, если мне надо провести нормализцию матрицы H. Нормализацию делаю так:

Код:
n = 1 ./ sqrt(diag(H));
Hn = diag(n) * H * diag(n);
Ln = chol(Hn)';


Как выполнить модификацию Lh фактора (добавление не-нормализованной строки к матрице J) с учетом нормализации H?

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group