opgaver:Uge1mandag
Pia Jensen (Talk | contribs) |
Pia Jensen (Talk | contribs) |
||
Line 8: | Line 8: | ||
=== Opgave 1 === | === Opgave 1 === | ||
Lav en vektor bestående af de lige heltal mellem 31 og 75. | Lav en vektor bestående af de lige heltal mellem 31 og 75. | ||
+ | {{hidden begin|toggle=right|title=Hint|titlestyle=background:#ccccff|bg2=#eeeeee}} | ||
+ | Gå ind i MATLAB hjælp og søg på <code>colon</code>, og læs så ''<nowiki>Colon (:)</nowiki>'' artiklen. Du kan evt. også se på side 3-7 i ''Getting Started with MATLAB'' bogen, der ligger på Absalon. | ||
+ | |||
+ | Her vil du se at man kan lave en liste ved hjælp af koden <code>j:i:k</code>. Denne liste vil starte i <code>j</code> og lægge <code>i</code> til for hvert element, indtil den kommer til <code>k</code>. Hvis den ikke rammer <code>k</code> præcist, så vil den stoppe før den kommer over. | ||
+ | {{hidden end}} | ||
{{hidden begin|toggle=right|title=Løsning|titlestyle=background:#ccccff|bg2=#eeeeee}} | {{hidden begin|toggle=right|title=Løsning|titlestyle=background:#ccccff|bg2=#eeeeee}} | ||
Dette gøres med kolon-operatoren, der kan lave lister: | Dette gøres med kolon-operatoren, der kan lave lister: | ||
+ | |||
:<code>x = 32:2:75</code> | :<code>x = 32:2:75</code> | ||
+ | |||
Med denne kode starter listen ved 32 (det første af de lige tal vi gerne vil have), og stiger 2 hver gang, indtil den når til 75. Den når faktisk til 74, og ser så at 76 er over 75, og stopper derfor ved 74. | Med denne kode starter listen ved 32 (det første af de lige tal vi gerne vil have), og stiger 2 hver gang, indtil den når til 75. Den når faktisk til 74, og ser så at 76 er over 75, og stopper derfor ved 74. | ||
{{hidden end}} | {{hidden end}} | ||
Line 21: | Line 28: | ||
# Udregn kvadratroden af hvert element. | # Udregn kvadratroden af hvert element. | ||
# Udregn kvadratet af hvert element. | # Udregn kvadratet af hvert element. | ||
+ | {{hidden begin|toggle=right|title=Hint|titlestyle=background:#ccccff|bg2=#eeeeee}} | ||
+ | For at løse disse opgaver kan det være en god idé at se på ''Getting Started with MATLAB'' bogen, der ligger på Absalon. Læs om arrays fra side 3-21. | ||
+ | {{hidden end}} | ||
{{hidden begin|toggle=right|title=Løsning|titlestyle=background:#ccccff|bg2=#eeeeee}} | {{hidden begin|toggle=right|title=Løsning|titlestyle=background:#ccccff|bg2=#eeeeee}} | ||
+ | For at lægge et tal til alle elementerne i et array skal man simpelthen skrive | ||
+ | |||
+ | :<code>x + 16</code> | ||
+ | |||
+ | For at lægge et tal til kun nogle bestemte elementer i et array skal man lægge det til array'et med indekserne man gerne vil have - skrevet her som en liste: | ||
+ | |||
+ | :<code>x(1:2:end) + 3</code> | ||
+ | |||
+ | Kvadratroden er en funktion i MATLAB, og funktioner der fungerer på skalarer fungerer automatisk element-vist. Derfor fås kvadratroden af hvert element i <code>x</code> ved | ||
+ | |||
+ | :<code>sqrt(x)</code> | ||
+ | |||
+ | Kvadratet af en vektor er ikke det samme som kvadratet af alle elementerne hver for sig, og derfor skal man huske et punktum her: | ||
+ | :<code>x.^2</code> | ||
{{hidden end}} | {{hidden end}} | ||
Revision as of 11:51, 5 March 2012
Disse simple øvelser skal laves som en warm-up til MATLAB. Dem der allerede er trygge ved at bruge MATLAB kan nøjes med at skimme dem igennem - men det anbefales at I går igennem dem alle for at være sikre på at I ved hvad I laver!
Opgaverne er taget fra [1] (Basic syntax and command-line exercises 1-6 og 8, samt Basic array exercises 1-3).
Contents |
Simpel syntaks og kommando-linie
Opgave 1
Lav en vektor bestående af de lige heltal mellem 31 og 75.
Gå ind i MATLAB hjælp og søg på colon
, og læs så
Her vil du se at man kan lave en liste ved hjælp af koden j:i:k
. Denne liste vil starte i j
og lægge i
til for hvert element, indtil den kommer til k
. Hvis den ikke rammer k
præcist, så vil den stoppe før den kommer over.
Dette gøres med kolon-operatoren, der kan lave lister:
x = 32:2:75
Med denne kode starter listen ved 32 (det første af de lige tal vi gerne vil have), og stiger 2 hver gang, indtil den når til 75. Den når faktisk til 74, og ser så at 76 er over 75, og stopper derfor ved 74.
Opgave 2
Lad x = [2 5 1 6]
.
- Addér 16 til hvert element.
- Addér 3 til alle ulige-indeks elementerne.
- Udregn kvadratroden af hvert element.
- Udregn kvadratet af hvert element.
For at løse disse opgaver kan det være en god idé at se på Getting Started with MATLAB bogen, der ligger på Absalon. Læs om arrays fra side 3-21.
For at lægge et tal til alle elementerne i et array skal man simpelthen skrive
x + 16
For at lægge et tal til kun nogle bestemte elementer i et array skal man lægge det til array'et med indekserne man gerne vil have - skrevet her som en liste:
x(1:2:end) + 3
Kvadratroden er en funktion i MATLAB, og funktioner der fungerer på skalarer fungerer automatisk element-vist. Derfor fås kvadratroden af hvert element i x
ved
sqrt(x)
Kvadratet af en vektor er ikke det samme som kvadratet af alle elementerne hver for sig, og derfor skal man huske et punktum her:
x.^2
Opgave 3
Lad x = [3 2 6 8]'
og y = [4 1 3 5]'
. (NB. x
og y
bør være søjlevektorer).
- Addér summen af elementerne i
x
tily
. - Hæv hvert element af
x
i potensen specificeret af det tilsvarende element iy
. - Dividér hvert element i
y
med det tilsvarende element ix
. - Gang hvert element i
x
med det tilsvarende element iy
, og gem resultatet i den ny variabelz
. - Addér elementerne i
z
og gem resultatet i den ny variabelw
. - Udregn
x'*y - w
og fortolk resultatet.
Opgave 4
Udregn de følgende MATLAB udtryk i hånden, og brug så MATLAB til at tjekke resultaterne:
-
2 / 2 * 3
-
6 - 2 / 5 + 7 ^ 2 - 1
-
10 / 2 \ 5 - 3 + 2 * 4
-
3 ^ 2 / 4
-
3 ^ 2 ^ 2
-
2 + round(6 / 9 + 3 * 2) / 2 - 3
-
2 + floor(6 / 9 + 3 * 2) / 2 - 3
-
2 + ceil(6 / 9 + 3 * 2) / 2 - 3
Opgave 5
Lav en vektor x
med elementerne...
-
2, 4, 6, 8, ...
-
10, 8, 6, 4, 2, 0, -2, -4
-
1, 1/2, 1/3, 1/4, 1/5, ...
-
0, 1/2, 2/3, 3/4, 4/5, ...
Opgave 6
Lav en vektor x
med elementerne
- xn = (-1)n+1/(2n-1)
Summér elementerne i versionen af denne vektor med 100 elementer.
Opgave 8
Givet en vektor, t
, med længde n
, lav MATLAB udtryk der vil udregne de følgende udtryk. Test at de virker for t = 1:0.2:2
.
- ln(2 + t + t2)
- et(1 + cos(3t))
- cos2(t) + sin2(t)
- tan-1(1) (dette er den inverse tangentfunktion)
- cot(t)
- sec2(t) + cot(t) - 1
Simple arrays
Opgave 1
Givet x = [3 1 5 7 9 2 6]
, forklar hvad de følgende kommandoer "betyder":
-
x(3)
-
x(1:7)
-
x(1:end)
-
x(1:end-1)
-
x(6:-2:1)
-
x([1 6 2 1 1])
-
sum(x)
Opgave 2
Givet array'et A = [ 2 4 1 ; 6 7 2 ; 3 5 9]
, find kommandoerne der behøves for at...
- definere en vektor
x1
der indholder den første række afA
. - definere et array
y
der indeholder de sidste 2 rækker afA
. - udregne summen over kolonnerne i
A
. - udregne summen over rækkerne i
A
. - udregne standardafvigelsen af gennemsnittet for hver kolonne i
A
(NB. standardafvigelsen af gennemsnittet er defineret som standardafvigelsen divideret med kvadratroden af antallet af elementer der bruges til at udregne gennemsnittet).
Opgave 3
Givet arrays'ene x = [1 4 8]
, y = [2 1 5]
og A = [3 1 6 ; 5 2 7]
, find ud af hvilke udtryk der kan udføres korrekt, og giv resultaterne. Hvis udtrykket ikke kan udføres, så find ud af hvorfor. Kommandoen whos
kan være smart at bruge her.
-
x + y
-
x + A
-
x' + y
-
A - [x' y']
-
[x ; y']
-
[x ; y]
-
A - 3