Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Test funksjonen ved følgende kall:

Code Block
languagenone
g = @(t) sin(t)^t
simpsons(0, 1, 100, g) % skal returnere 0.7426
 
h = @(t) exp(-(t^2))
simpsons(0, 1, 100, h) % skal returnere 0.7423

...

Feilen for Simpsons metode er gitt som en funksjon av den fjerdederiverte til funksjonen. Ofte er det vanskelig å finne gode skranker for denne, men vi ønsker likevel å ha en viss kontroll på hvor stor feil vi gjør.                 gjør. Vi skal nå se på en mulig praktisk løsning på problemet.

 La Sn være tilnærmingen til integralet vi får når vi bruker Simpsons metode med n delintervaller. Det er rimelig å anta at S8 er mye mer nøyaktig enn S4. Det betyr at |S4 S8| kan være et rimelig estimat for feilen i tilnærmingen S4Hvis dette estimatet sier at feilen i S4 var for stor kan vi i stedet bruke S8 som tilnærming. Nå kan vi finne et estimat for feilen i S8 ved å regne ut S16 og bruke |S8 S16| som estimat. Slik kan vi fortsette i det uendelige. Vi stopper når feilestimatet blir mindre enn en oppgitt toleranse.

 Skriv funksjonen simpsons_error(start, stop, error, fn) som tar inn start og stop som integrasjonsgrenser, feiltoleransen error og funksjonen fn som skal integreres.

Regn ut integralet med en feiltoleranse på 108.

Code Block
languagenone
f = @(t) sin(t)
simpsons_error(0, 1, 10^-84, f) % skal returnere 0.459697694284088459707744927311
% Skriv format long før du kjører koden.

...