% EX 6.2a

% Både Simpsons formel (boken) och quadl
% Beräkna integralen från 0 till 3 över denna funktion med minst 4 siffrors 
% noggrannhet
f = @(x) exp(x)./(1+2*x.^3);

% Grövsta indelningen av intervallet [0 3]
h = 0.1;
x = 0:h:3;

% Plotta f
figure(1)
clf
hold on
patch([x x(end) x(1)], [f(x) 0 0], [0.8 0.8 0.8])
plot(x, f(x), 'ko')
xlabel('x');
ylabel('f(x)');

% Beräkna med olika stora steg h för att uppskatta felet
disp('    h         T      trunkfel');
for steg = 1:5
	T(steg) = h*(0.5*f(x(1)) + sum(f(x(2:(end-1)))) + 0.5*f(x(end)));
	if steg == 1
		trunkfel = 1;
	else
		trunkfel = (T(steg) - T(steg - 1))/3;
	end
	disp(sprintf('%0.6f  %0.6f   %0.6f   %0.8f', ...
		h, T(steg), trunkfel))
	h = h/2;
	x = 0:h:3;
end

% Körning:
%    h         T      trunkfel
%0.100000  2.169490   1.000000   
%0.050000  2.170112   0.000207   
%0.025000  2.170267   0.000052   
%0.012500  2.170306   0.000013   
%0.006250  2.170316   0.000003   
% dvs integralen = 2.1703 +- 0.00005 vilket fås med h = 0.025

% Testa med quadl också, ta till lite i osäkerhetskraven
Q = quadl(f, 0, 3, 0.5e-5)

% Körning:
%Q = 2.170318889732158
% dvs Q = 2.1703 med fyra decimalers noggrannhet
	
	