function [A,b,x] = mkd(tau,f,u0,h)

% [A,b] = mkd(tau,f,u0,h)
%         funkce sestavi matici soustavy a vektor pravych stran
%         pro nasledujici okrajovou ulohu:
%          -tau * u''(x) = f(x)  v (0,1)
%                   u(0) = u0
%           -tau * u'(1) = 0 ,
%         pricemz pouzijeme metodu konecnych diferenci

n = floor(1/h);
x = 0:h:1;

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

% 1. okrajova rovnice: u(0) = u0
A(1,1) = h^2/tau;
b(1) = u0;

% diferencialni rovnice: -tau*u''(x) = f(x)
for i=1:n-1
    A(i+1,i:i+2) = [-1 2 -1];
    xi = i*h;
    b(i+1) = feval(f,xi);
end

% 2. okrajova rovnice: -tau*u'(1) = 0
A(n+1,n:n+1) = [-h h];

A = (tau/h^2)*A;
