function srdce_(n)
%srdce_(n)
%
% Funkce vypocte obsah srdce z obrazku.
%
% Vstupni parametr: n ... pocet dilku deleni intervalu <0,2>

h = 2 / n;     % delka dilku deleni
x = 0 : h : 2; % krajni body dilku

% ------------------------------------------------------------------------
% Aproximace pomoci obdelnikoveho pravidla

c = 0.5 * (x(1:n) + x(2:n+1));  % stredy jednotlivych dilku

f1 = sqrt(1 - (c-1).^2);   % funkcni hodnoty ve stredech dilku
S1 = h * sum(f1);   

f2 = asin(c-1) - pi/2;     % funkcni hodnoty ve stredech dilku
S2 = -h * sum(f2);

S = 2 * (S1 + S2);         % priblizny obsah srdce
err = abs(3*pi - S);       % absolutni chyba vypoctu

disp(' ')
disp(['Obdelnikove pravidlo, n = ', num2str(n)])
disp('--------------------------------------------------')
disp(['Spocteny obsah srdce: ', num2str(S,'%1.12g')])
disp(['Absolutni chyba: ', num2str(err,'%1.6e')])


% ------------------------------------------------------------------------
% Aproximace pomoci lichobeznikoveho pravidla

f1 = sqrt(1 - (x-1).^2);   % funkcni hodnoty v krajnich bodech dilku
S1 = h/2 * ( f1(1) + f1(n+1) + 2*sum(f1(2:n)) );

f2 = asin(x-1) - pi/2;     % funkcni hodnoty v krajnich bodech dilku
S2 = -h/2 * ( f2(1) + f2(n+1) + 2*sum(f2(2:n)) );

S =  2 * (S1 + S2);        % priblizny obsah srdce
err = abs(3*pi - S);       % absolutni chyba vypoctu

disp(' ')
disp(['Lichobeznikove pravidlo, n = ', num2str(n)])
disp('--------------------------------------------------')
disp(['Spocteny obsah srdce: ', num2str(S,'%1.12g')])
disp(['Absolutni chyba: ', num2str(err,'%1.6e')])

% konec