function U=CholeskyFelbontas(A)
% Elkészíti egy pozitív definit szimmetrikus mátrix Cholesky-felbontását,
% azaz azon U felső háromszög mátrixot, melyre U^T*U=A.

if A(1,1)<0 
            error('A mátrix nem pozitív definit');
end
U=zeros(size(A));
U(1,1)=sqrt(A(1,1));

for i=1:size(A,1)
    for j=1:i-1
        U(i,j)=(A(i,j)-dot(U(i,1:j-1),U(j,1:j-1)))/U(j,j);
        s=A(i,i)-dot(U(i,1:i-1),U(i,1:i-1));
        if s<0 
            error('A mátrix nem pozitív definit');
        else
            U(i,i)=sqrt(s);
        end
    end
end
U=U';