Files
matlab/RBM/UFLDL/common/minFunc_2012/minFunc/mcholinc.m
T
jens 7b34529b24 imported RBM
git-svn-id: http://moon:8086/svn/matlab/trunk@91 801c6759-fa7c-4059-a304-17956f83a07c
2016-07-12 11:24:12 +00:00

26 lines
564 B
Matlab

function [R,tau] = mcholinc(H,verbose)
% Computes Cholesky of H+tau*I, for suitably large tau that matrix is pd
p = size(H,1);
beta = norm(H,'fro');
if min(diag(H)) > 1e-12
tau = 0;
else
if verbose
fprintf('Small Value on Diagonal, Adjusting Hessian\n');
end
tau = max(beta/2,1e-12);
end
while 1
[R,posDef] = chol(H+tau*eye(p));
if posDef == 0
break;
else
if verbose
fprintf('Cholesky Failed, Adjusting Hessian\n');
end
tau = max(2*tau,beta/2);
end
end