Læringsmål:
...
- Funksjoner
- Plot
- Numerikk
- FOR-løkker
Pensum:
- 2.3 - Scalar and Array Operations on Vectors and Matrices
- 3.7 - User-Defined Functions That Return a Single Value
- 3.5 - Scripts to Produce and Customize Simple Plots
- 5.1 - The for loop
Deler av denne oppgaven omhandler bruk av såkalte function-handles i Matlab. Dersom du ikke vet hvordan man bruker disse finner du en forklaring nedenfor:
Include Page | ||||
---|---|---|---|---|
|
a) Lag funksjonen f gitt
...
avDenne skal også kunne ta inn lister. Bruk Matlabs innebygde funksjon, exp()
Code Block | ||
---|---|---|
| ||
Code Block | ||
| ||
f(0) % skal skrivereturnere ut 1 f (1) % skal skrivereturnere ut 0.3679 f ([-1.5:0.5:1.5]) % skal skrive utreturnere [0.1054, 0.3679, 0.7788, 1.0000, 0.7788, 0.3679, 0.1054] |
b)
...
Benytt funksjonen fra oppgave a) og plot resultatet -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:
d)
...
) Gjenta deloppgave b), men med en steglengde på 0.5. Ved å ikke lukke plottet fra b) og skrive hold on i konsollen før du gjennomfører dette steget, vil dette plottet tegnes over det forrige. Det vil da bli seende slik ut:
For å finne arealet under en graf er det vanlig å integrere funksjonen. Men det er ikke alle funksjoner som er enkle å integrere: funksjonen i denne oppgaven er et eksempel på en slik funksjon. Med litt programmering kan vi likevel tilnærme oss arealet av denne funksjonen.
Du skal nå lage en funksjon som kan integrere numerisk. Se på plottet ovenfor, og legg merke til at de to grafene nesten ligger oppå hverandre. Legg også merke til at den
...
røde linjen og bunnlinjen, sammen
...
danner trapeser med bredde 0.5. Trapes er enkelt å regne ut arealet for
d) Lag funksjonen
...
trapezoidArea(
...
a,
...
b,
...
w)
som returnerer arealet til et trapes.
...
a og b er lengden på de parallelle sidene i trapeset.
...
w (
...
width) er avstanden mellom disse.
e) Lag funksjonen
...
trapezoidMethod(start, stop, n, fn)
.
Her er start
start-punktet for arealet (-2 i eksempelet over), stop
er stopp-punktet (2 i eksempelet over), n
er antall trapeser (8 i eksempelet over) og fn
er funksjonen som arealet skal regnes ut for. Se forklaring øverst på siden for å se hvordan man tar inn funksjoner som parametre (såkalte function handles). Denne funksjonen estimerer integralet numerisk, ved bruk av trapesmetoden (Matematikk 1).
Code Block | ||
---|---|---|
| ||
trapezoidMethod (-2 |
...
Code Block | ||
---|---|---|
| ||
trapezMethod (0, 2, 108, @f) % skal skrive ut 31.58757612 trapezMethodtrapezoidMethod (0, 210, 210, @f) % skal skrive ut 40.03918863 trapezMethodtrapezoidMethod (0, pi 10, 10100, @sin @cos) % skal skrive ut 1.9835 |
Du får bruk for at:
Definerer en vanlig (mattematisk) funksjon:
Code Block | ||
---|---|---|
| ||
function y = f(x)
y = x;
end |
Slik definerer vi en funksjon som benytter seg av en annen funksjon (fn) som parameter:
Code Block | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
disp ( g ( 2, @f ) ); % legg merke til krøllalfa - tegnet!-0.5436 trapezoidMethod (0, pi , 10, @sin ) % skal skrive ut 1.9835 % Hva skjer når du øker n? |