www.gusucode.com > SAE RBM 程序MATLAB源码代码实现的一个关于sae的例子 > minFunc/mcholinc.m
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