% A = G'*G % % % function G = cholesky(A) [m, n] = size(A); if (m ~= n), error('A matriz nao eh quadrada.'); end epsilon = 1.0e-11; for i = 1:n %Calculo do Elemento da Diagonal soma = 0.0; for k = 1:(i-1) soma = soma + G(k, i) * G(k, i); end delta = A(i, i) - soma; % Verifica se a Matriz e' Positiva Definida if( delta < 0.0 ), error('A matriz nao eh definida positiva.'); end G(i, i) = sqrt(delta); % Verifica se a Matriz e' Singular if(abs(G(i, i)) < epsilon), error('A matriz eh singular.'); end % Calculo dos Elementos da i-esima linha for j = (i + 1):n soma = 0.0; for k = 1:(i - 1) soma = soma + G(k, i) * G(k, j); end G(i, j) = (A(i, j) - soma) / G(i, i); end end