Versions Compared

Key

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

...

  • 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

Denne oppgaven krever bruk av såkalte function-handles i Matlab. Dersom du ikke vet hva dette finner du en forklaring nedenfor:

 

Expand
titleFunction handles i Matlab
Du har til nå forhåpentligvis blitt godt kjent med funksjoner i matlab, og hvordan de kan ta inn forskjellige variabler som parametere. I denne oppgaven skal vi nå introdusere et nytt konsept: Funksjoner kan i tillegg til vanlig variabler også ta in andre funksjoner som et parameter. Dette gjøres på ganske lik måte som når man tar inn en variabel som parameter, og du får her et eksempel på hvordan dette gjøres:
Vi definerer først en helt vanlig funksjon f(x) som vi skal bruke i neste steg, denne tar bare inn tallet x og opphøyer det i andre:
 
Code Block
function y = f(x)
 y = x^2;
end
 
 
Her kommer det nye, vi definerer nå en ny funksjon g(x) som tar inn et parameter fn. Dette er navnet på en vilkårlig funksjon som skal tas inn, og kan brukes som en hvilken som helst annen type funksjon:
 
Code Block
function y = g(x, fn)
 y = sqrt( fn(x) ); % her kaller vi på funksjonen som er lagret i parameteren fn, sender inn x i denne og tar kvadratroten av resultatet.
end
 
 
Nedenfor kaller vi på funksjonen g(x) med x=2 og sender inn funksjonen f(x) som fn. Forskjellen fra det man er vandt til her er at nå må det stå et krøllalfa foran funksjonen som skal være en parameter.
 
Code Block
x = 2;
y = g(x, @f)) % legg merke til krøllalfa-tegnet forann f!
 
Kan du se hva resultatet av dette vil gi? Det kan kanskje være enklere å se hvis vi omformulerer det til god gammeldags matematikk:

 

a)

Lag funksjonen f gitt avDenne skal også kunne ta inn lister. Bruk Matlabs innebygde funksjon, exp(), Eksempler på kjøring:

...