You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 70 Next »

Læringsmål:

  • Funksjoner
  • Elementvis operasjoner

Pensum:

  • Kap 2.3
  • Kap 4.4
  • Kap 10.1-10.4


Noen funksjoner er transcendentale og kan derfor ikke integreres analytisk. Men de kan (av og til) integreres numerisk, altså tilnærmes. 
Nedenfor er Simpsons metode, som dere kanskje har lært om i matematikk 1, forklart kort.

      Hvor

Her er for en i = [0,1,2,...,n],og funksjonen du vil integrere, f(x). n må være et partall.

 

a)

Implementer simpsons(a,b,n,fn) ved gitt pseudokode:

% Ta inn a, b, n og funksjonen fn.
% Sjekk at n er partall, gi feilmelding hvis ikke.
% Gå videre:
% La variabelen y inneha alle funksjonsverdiene til fn fra a til b med steglende deltaX.
% velg odde yer: y1, y3, y5 ... y_(n-1)
	% regn ut 4*summen av disse
% velg partall yer: y2, y4, y6 ... y_(n-2)
	% regn ut 2*summen av disse
% legg sammen de to summene sammen med y_0 og y_n
% gang alt med \deltaX/3 . 

Test funksjonen ved følgende kall:

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


b) 

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.         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.

f = @(t) sin(t)
simpsons_error(0, 1, 10^-4, f) % skal returnere 0.459707744927311
% Skriv format long før du kjører koden.


c)

Matematisk bonusspørsmål:
Simpsons metode er en annenordens metode. Hva har det med det logaritmiske plottet under å gjøre?

n =200;
c = 1;
f = @(t) sin(t)
for i = [2:2:n]
	e(c) = simpsons(0,pi,i,f);
	c = c+1;
end
loglog([1:n/2], e-2)

 



Nyttig:


Du kan få bruk for følgende som ikke er pensum:

Definerer en vanlig (mattematisk) funksjon:

function y = f(x)
y = x;
end

 

Slik definerer man en funksjon som benytter seg av en annen funksjon (fn) som parameter. I dette tilfellet opphøyes fn(x) i andre.

function y = g(x, fn)
	% her kaller vi på funksjonen som er lagret i parameteren fn
	y = fn(x) * fn(x);
end

 

Nedenfor kaller vi på funksjonen g med x=2 og sender inn f som fn. Når man står utenfor funksjonen må det stå et krøllalfa foran funksjonen som skal være en parameter.

disp ( g(2, @f) ); % legg merke til krøllalfa - tegnet!
  • No labels