% ENM 6.2a
% Denna kod skrevs på övningen 2017-10-05 i SF1545

close all; clear; clc
format long

% Funktion att integrera
f = @(x) exp(x)./(1+2*x.^3);

% x-intervall
xmin = 0;
xmax = 3;

% Approximera integral för stegländ h=0.5
h = 0.04;
Th = mytrapz(f,h,xmin,xmax)

% Halvera steglängd
h = h/2;
Th2  = mytrapz(f,h,xmin,xmax)

% Skillnad mellan Th och Th2
skillnad = abs(Th2-Th)

% Richardson
Rh = (4*Th2 - Th)/3
skillnadRh = abs(Rh-Th2)

% Räkna ut integral med matlab's inbyggda funktion
I = integral(f,xmin,xmax)


function Th = mytrapz(f,h,xmin,xmax)

% Diskretisera x-axel
x = (xmin:h:xmax)';

% Beräkna y=f(x)
y = f(x);

% Approximera integral med trapetsregeln
Th = h/2*y(1) + sum(h*y(2:end-1)) +h/2*y(end);

end
