a)
function result = simpsons(a,b,n,f)
h = (b-a)/n;
y= [a : h : b];
result = f(y(1)) + f(y(end));
result = result + 2*sum(f(y(3:2:end-2))); % Regner for de odde y-ene
result = result + 4*sum(f(y(2:2:end))); % Regner for de pare y-ene
result = h/3 * result;
end
b)
function result = simpsons_error(start, stop, error, fn)
N = 1;
Si = simpsons(start, stop, N, fn);
S2i = simpsons(start, stop, 2*N, fn);
while abs(Si-S2i) >= error
N = 2 * N;
Si = simpsons(start, stop, N, fn);
S2i = simpsons(start, stop, 2*N, fn);
end
result = Si;
end
c) Simpsons metode er en andre ordens funksjon, noe som vil si at stigningen på plottet under skal være 2, altså; feilen blir 2 størrelsesordner mindre hvor hver størrelsesorden n øker(se bilder under). Det at Simpsons metode er en andre ordens metode betyr at feilen vil være avhengig av O(h2), dette kan vises ved å utlede metoden, men det vil ikke gjennomgås her.