function [A,b] = mkp_1d(uzly,prvky,tau,f,l,ID,uD)

% [A,b] = mkp_1d(uzly,prvky,tau,f,l,ID,dataD)
%           sestavi MKP-soustavu A*u = b, kde
%           uzly ... souradnice diskretizacnich uzlu,
%           prvky ... dvojice indexu uzlu,
%           tau ... vektor hodnot tau(x) pro kazdy prvek,
%           f ... vektor hodnot f(x) pro kazdy prvek,
%           l ... delka intervalu Omega = <0,l>,
%           ID ... vektor indexu Dirichletovych uzlu,
%           uD ... vektor hodnot reseni uD(x) (Dirichlet. podminka)

n = length(uzly);
m = size(prvky,2);

A = sparse(n,n);
b = zeros(n,1);

for i=1:m
    prvek_lok = prvky(:,i);
    uzly_lok = uzly(prvek_lok);
    tau_lok = tau(i);
    f_lok = f(i);
    uD_lok = uD(prvek_lok);
    
    A_lok = alok_derder(uzly_lok,tau_lok);
    b_lok = blok_id(uzly_lok,f_lok);
    
    for j=1:2
        for k=1:2
            if j==k || ( ~max(prvek_lok(j)==ID) && ~max(prvek_lok(k)==ID) )
                A(prvek_lok(j),prvek_lok(k)) = A(prvek_lok(j),prvek_lok(k)) + A_lok(j,k);
            end
        end
        if ~max(prvek_lok(j)==ID)
            b(prvek_lok(j)) = b(prvek_lok(j)) + b_lok(j) - A_lok(j,:)*uD_lok;
        end
    end
    
end
