Læringsmål:
- Funksjoner
- Elementvis operasjoner
Pensum:
- Kap 2.3
- Kap 4.4
- Kap 10.1-10.4
Noen funksjoner er sure og kan derfor ikke integreres analytisk på en enkel måte. Derfor kan dette gjøres nummerisk, altså tilnærmes.
Areal: Hvor
Her er for en i,og funksjonen du vil integrere, f(x).
a)
Fordi n må være partall, må funksjonen isEven(n)
lages. Returvariabelen er 1 eller 0 om n er partall eller ikke.
Digresjon: Er det egentlig nødvendig å lage en egen funksjon for dette?
b)
Skriv funksjonen calcDeltaX(a,b,n)
som returnerer steglengden.
c)
Lag simpsons(a,b,n)
ved gitt pseudokode:
% Ta inn a, b, n og funksjonen fn. % Definere y(x) % 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 .
Linje 2 kan evt fjernes om man mestrer dette for bruk av funksjoner som parametere i andre funksjoner. Dette er ikke pensum, men ellers nyttig, som man vil se. Følg "evt" om man får til dette.
d)
Test funksjonen med simpsons(0,pi, 14)
på funksjonen sin(x).
(Evt
)simpsons(0,pi, 14)
@(x)sin(x)
e)
Lag funksjonen deviation(a,b,n, corr)
. corr er det analytiske svaret som man finner for hånd. Funksjonen skal returnere feilen mellom det korrekte svaret, og svaret funnet ved hjelp av simpsons metode.
(Evt deviation(a,b,n, fn, corr)
)
f)
I simpsons, definer y = sin(x).
(Evt bytt ut linje 4 under med "e(c) = simpsons(0,pi,i,@sin);
)
Mattematisk bonusspørsmål:
Simpsons metode er en annenordens metode. Hva har det med det logaritmiske plottet under å gjøre?
n =200; c = 1; for i = [2:2:n] e(c) = simpsons(0,pi,i,@sin); c = c+1; end loglog([1:n/2], e-2)
Nyttig:
Du kan få bruk for at:
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
Kaller 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!