%-----------------------------------------------------------------------
%             -------------                             ----------
%             function file                             solvespd.m
%             -------------                             ----------
%-----------------------------------------------------------------------
%
%	--------------------------------------------       -------
%	Sistema Linear Simetrico e Definido Positivo   -   A.x = b
%---------------------------------------------------       -------
%                    ------------------------       --------
%	    	     Decomposicao de Cholesky   -   A = G'.G
%		     ------------------------       --------
%
%
%	Resolucao dos Sistemas Triangulares
%------------------------------------------
%
%	A.x = b  ====>  G'.G.x = b   ,   fazendo  G.x = y  temos
%
%       Sistema Triangular Inferior  :  G'.y  =  b
%
%	Sistema Triangular Supeior   :   G.x  =  y
%
%
%
%	Chamada do procedimento  solvespd
%----------------------------------------
%       [x]  =  solvespd(G,b)
%
%
%	Variaveis de Entrada
%---------------------------
%
%	G  :  Fator de Cholesky da matriz A, isto e',  A = G'.G
%       b  :  Vetor do lado direito do sistema linear    A.x = b
%
%	Variaveis de Saida
%-------------------------
%
%	x  :  Solucao do sistema linear simetrico e positivo-definido
%	
%
	function [x] = solvespd(G,b)
%===================================
%
%
%	--------------------------------------------
%	Sistema Linear Simetrico e Definido Positivo
%---------------------------------------------------
%               ------------------------
%		Decomposicao de Cholesky
%		------------------------
%
%
%	
%	Dimensoes da Matriz G
%----------------------------
	[mlin,ncol] = size(G);
%
%       Inicializacao da variavel  x  como vetor coluna
%------------------------------------------------------
	x = zeros(mlin,1);
%
%
%
%
%	Resolucao do Sistema Triangular Inferior     G'.y = b
%------------------------------------------------------------
%
	for i = 1:mlin
%
	soma = 0.0;
%
	for j = 1:(i-1)
%
	soma = soma + G(j,i)*y(j);
%
	end
%
	y(i) = ( b(i) - soma ) / G(i,i);
%
	end
%
%
%
%	Resolucao do Sistema Triangular Superior    G.x = y
%----------------------------------------------------------
%
	for i = mlin:-1:1
%
	soma = 0.0;
%
	for j = (i+1):mlin
%
	soma = soma + G(i,j)*x(j);
%
	end
%
	x(i) = ( y(i) - soma ) / G(i,i);
%
	end

%
%-----------------------------------------------------------------------
%-----------------------------------------------------------------------
%
%	Petronio Pulino
%	Departamento de Matemática Aplicada - D.M.A
%	IMECC - UNICAMP
%	e-mail: pulino@ime.unicamp.br
%	http://www.ime.unicamp.br/~pulino/MS211
%
%-----------------------------------------------------------------------
