Versions Compared

Key

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

Læringsmål:

  • FunksjonerElementvis operasjoner
  • Plot
  • Numerikk
  • FOR-løkker

Pensum:

  • Kap 2.3 - Scalar and Array Operations on Vectors and Matrices
  • 3.7 - User-Defined Functions That Return a Single Value
  • 3
  • Kap 4.4

Image Removed

a)

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

...

  • .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
Function handles i Matlab - forklaring
Function handles i Matlab - forklaring

 

a) Lag funksjonen f gitt avDenne skal også kunne ta inn lister. Bruk Matlabs innebygde funksjon, exp()

 

Code Block
titleEksempel på kjøring
f(0) % skal returnere 1
 
f (1) % skal returnere 0.3679
 
f ([-1.5:0.5:1.5]) % skal returnere [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) Gjenta deloppgave b), men med en steglengde0.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:

 

Image Added

 

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 (smile)



d) Lag funksjonen

...

trapezoidArea(

...

a,

...

b,

...

w) som returnerer arealet til et trapes.

...

og

...

b er lengden på de parallelle sidene i trapeset.

...

w (

...

widther avstanden mellom disse.



be) 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
titleEksempel på kjøring
trapezoidMethod (-2, 2, 8, @f) % skal skrive ut 1.7612
trapezoidMethod
Code Block
languagenone
f = @(t) exp(-x.^2);
g = @(t) sin(x)
%Funksjonen er definert som: trapezMethod (start,stop,n,f)
trapezMethod (0, 10, 10, f@f) % skal skrive ut 0.88688863
trapezMethodtrapezoidMethod (0, 10, 100, f@cos) % skal skrive ut -0.88625436
trapezMethodtrapezoidMethod (0, pi , 10, g@sin ) % skal skrive ut 1.9200

Vær oppmerksom på at små feil i programmet ditt kan føre til små avrundingsfeil, slik at svarene kan avvike fra svarene gitt over. Dette er akseptabelt.

...

  • Definerer en vanlig (mattematisk) funksjon:

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

 

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

    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.

...

languagenone

...

9835
% Hva skjer når du øker n?