Versions Compared

Key

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

Læringsmål:

  •  Kap løkker PLACEHOLDER

 

 


Noen funksjoner er sure og kan derfor ikke integreres analytisk. Derfor kan dette gjøres nummerisk, altså tilnærmes. 

Image Added


a)

Lag funksjonen f gitt av; f(x)=e^{-x^2}
Denne skal kunne regne på lister.

Fordi n må være partall, må funksjonen . isEven(n) lages. Returvariabelen er 1 eller 0 om n er partall eller ikke. 

b)


Skriv funksjonen calcDeltaX(a,b,n) som returnerer steglengden deltaX.

c)

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

Code Block
languagenone
f(0) % skal skrive ut 1
 
f (1) % skal skrive ut 0.3679
 
f ([-1.5:0.5:1.5]) % skal skrive ut [0.1054, 0.3679, 0.7788, 1.0000, 0.7788, 0.3679, 0.1054]

b) 

Plott funksjonen fra -2 til 2 med steglengde 0.01

c)

Plott funksjonen fra -2 til 2 med steglengde 0.1 . 
Bruk hold on før plot funksjonen kjøres. Da vil neste plot tegnes på det forrige. Resultatet blir ca: 

Image Removed

d)

Noen funksjoner er sure og kan derfor ikke integreres analytisk. Derfor kan dette gjøres nummerisk, altså tilnærmes. 
Se på plottet ovenfor, og legg merke til at de to grafene nesten ligger oppå hverandre. Legg også merke til at den blå linjen, sammen med bunnlinjen og de vertikale grå linjene, danner trapeser. Trapes er enkelt å regne ut arealet for (smile)

Lag funksjonen trapezArea(r, s, h) som returnerer arealet til et trapes. A = \frac{r+s}{2}*h
r og s er lengden på de parallelle sidene i trapeset. h (eller dx) er avstanden mellom disse.

e)

Lag funksjonen trapezMethod. Prameterene er start, stop, n og fn. 

...

languagenone

...

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

 

d)

Test funksjonen med simpsons(0,pi, 14, @sin).

e)

Lag funksjonen deviation(a,b,n, fn, int). int er det analytiske svaret 

 

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




c = 1;

 n = 2000
for i = [2:2:n]
e(c) = simpsons(0,1000,i,@exp2);
c = c+1;
end
loglog([1:n/2], e-2)


Du får bruk for at:  

Definerer en vanlig (mattematisk) funksjon:

Code Block
languagenone
function y = f(x)
y = x;
end

 

Slik definerer vi en funksjon som benytter seg av en annen funksjon (fn) som parameter:

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

 

Kaller på funksjonen g og sender inn f. Når man står utenfor funksjonen må det stå et krøllalfa foran funksjonen som skal være en parameter.

Code Block
languagenone
disp ( g ( 2, @f ) ); % legg merke til krøllalfa - tegnet!