Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Mas135 forelesning 3
1. MAS135: MATLAB for Mechanical
Engineers
Forelesning 3 : Mer om Vektorer. Matriser.
Operasjoner med vektorer og matriser.
Enkle plot
Victoria Popsueva
Bergen, C208
27 august 2018
2. Matriser og vektorer (arrays)
• Alle variabler i MATLAB er «egentlig» vektorer eller
matriser.
• Skalarer er spesialtilfeller av matriser – dvs 1 × 1
matriser.
• Størrelsen til en vektor elle en matrise blir bestemt
når den defineres. (NB! Kilde til feil!)
• Man også forandre dimensjonene til
vektoren/matrisen underveis. (som verdien til en
variabel) -> også en viktig kilde til feil…
• Derfor – hold øye med dem i workspace…
3. Hvordan lage en vektor
• En vektor (one-dimensional array): en rekke med tall
arrangert i en rekke eller søyle (row or column vector)
• I MatLab kan de lages på flere måter, bl.a.:
• Man lager en (rekke)vektor ved å skrive
Navnet_til_vektoren = [elementene i vektoren]
• En kolonnevektor får man ved å skrive Kolonnevektor =
[element1; element2; ... elementN]
• Det er en matematisk forskjell på rekke- og
kolonnevektorer, så det er viktig å være oppmerksom
• Transponeringsoperator ‘ gjør søyler om til rekker
4. Vektorer: enkelt eksempel
• >> a = [1 2 3]
• a =
• 1 2 3
• >> a = [1 2 3]'
• a =
• 1
• 2
• 3
• >> a = [1; 2; 3]
• a =
• 1
• 2
• 3
5. Flere måter å lage en vektor på
• Vi kan lage vektorer som inneholder tall med en gitt differanse mellom tallene:
Navnet_til_vektoren = [start:differanse:slutt]
parenteser kan droppes. Hvis man dropper differansen, blir den satt til 1
Hvis man «bommer» s.a. den gitte differansen i går opp til siste element, så droppes
det siste elementet og erstattes med det nærmeste tallet som passer med den gitte
differansen
• Eller
Navnet_til_vektoren = linspace(start, slutt, antall_elementer)
• F.eks. vektor = [2:2:10]
vektor =
2 4 6 8 10
6. Matriser (two-dimensional arrays)
• I likhet med en vektor, kan vi lage en matrise på denne måten:
Matrise = [elementer i 1 rekke; … ; elementer i Nte rekke]
• F.eks. >> a = [1 2 3; 4 5 6; 7 8 9]
a = 1 2 3
4 5 6
7 8 9
7. Matriser og vektorer-forts.
• Alle rekkevektorene må ha samme lengde!
• Hvis noen matriseelementer er null, så må man skrive 0
• Elementene i matriser/vektorer har samme indeksering som i
matematisk notasjon:
• Vektor(n) = Vektor(element nummer n) = gir n-te element i vektoren
• A(m,n) = A(rekke, søyle) = gir matriseelement i rekke m, søyle n
8. Bruk av (:)
• Kolon-tegnet (:) er svært nyttig når vi trenger å få tak i flere elementer
på en gang. Denne notasjonen virker på både vektorer og matriser.
• For vektorer:
v(:) alle elementene i vektor v
v(m:n) alle elementene fra og med element m og til og med element n
9. Bruk av (:)
• A(:,n) alle elementene i søyle nummer n
• A(n,:) alle elementene i rekke nummer n
• A(:,m:n) alle elementene fra søyle nummer m og til søyle nummer n
• A(m:n,:) alle elementene fra rekke nummer m og til rekke nummer n
• A(m:n,p:q) alle elementene fra rekke nummer m til rekke nummer n og fra
søyle nummer p og til søyle nummer q
12. Manipulasjoner med vektorer
• Man kan legge flere elementer til en vektor :
>> v = [1 2 3 4];
>> v(7) = 2
v =
1 2 3 4 0 0 2
Legg merke til at her vil MATLAB sette inn nuller foran det siste
elementet!
13. Manipulasjoner med matriser
• Å legge til en ekstra rekke til en matrise:
>> b = [10 11 12];
>> c = [a;b]
c = 1 2 3
4 5 6
7 8 9
10 11 12
14. Manipulasjoner med matriser
• Man kan utvide en matrise ved å legge til et element ”som det ikke er
plass til” – da vil matrisen utvides ved at det fylles inn nuller der det
ikke er tall (se eksempel)
• Det blir ikke gitt noen feilmelding – man må passe på selv!
15. Tips
• Viktig å holde styr på hvor store matrisene/vektorene er!
• MATLAB gir feilmeldinger dersom dimensjonene ikke matcher, men
forteller ikke hvor det er mismatch.
• Derfor:
length(v) gir antall elementer i vektoren v
size(a) gir dimensjonene til matrisen a
16. Operasjoner med vektorer og matriser
• Addisjon og subtraksjon av vektorer og matriser
fungerer ”rett fram”
• Operasjonene *, / og ^ kan fungere på to forskjellige
måter:
• 1) som i lineær algebra
• 2) ”element-for-element”, dvs. at det å gange
sammen to matriser ikke er det samme som å gange
sammen elementene i matrisene!
17. Addisjon og subtraksjon
• Vi kan legge sammen/ subtrahere to vektorer /matriser
med samme dimensjon
• A+B legger sammen et element i A med tilsvarende
element i B. A-B trekker et element i B fra tilsvarende
element i A
• Hvis vi legger et skalar til en matrise blir verdien til
skalaren lagt til i alle elementene i matrisen
18. Matrisemultiplikasjon
• Multiplikasjonsoperatoren * fungerer som i lineær
algebra: Hvis A er en m × n matrise og B ei n × k
matrise, vil produktet av A*B bli en m × k matrise.
• NB! Det motsatte produktet (B*A) er ikke definert
med mindre matrisen er kvadratisk!
• Generelt er matrisemultiplikasjon er ikke-
kommutativ, dvs. A*B er ikke likt B*A, selv når begge
er kvadratiske.
19. Matriseegenskaper
• Lag 3 matriser A, B og C. Finn A+B og B+A for å vise at
matriseaddisjon er kommutativ ( kommutativ: A+B=B+A)
• Regn ut A+(B+C) og (A+B)+C for å vise at matriseaddisjon
er assosiativ (assosiativ: A+(B+C) = (A+B)+C)
• Regn ut 5(A+C) og 5A+5C for å visa at
matrisemultiplikasjon er distributiv ( distributiv: 5A + 5B =
5(A+B))
• Regn ut A(B+C) og AB+AC for å vise at
matrisemultiplikasjon er distributiv
20. Multiplikasjon av vektorer
• Multiplikasjon * fungerer på same måte for vektorer som
for matriser, forutsatt at den første vektoren i produktet er
en rekkevektor, og den andre en søylevektor
• Innebygd funksjon dot(a,b) regner ut ”prikkproduktet” av
vektorene a og b, begge kan være rekkevektorer eller
søylevektorer (må ha same dimensjon)
21. Divisjon med matriser
• Den inverse av matrisen A er matrisen inv(A) som er
slik at inv(A) * A = I (identitetsmatrisen)
• Løser ligningen Ax = b
inv(A)*A*x = inv(A)*b dvs.
x = inv(A)*b,
der x og b er søylevektorer (x=A-1*b)
• Dette tilsvarer «matrisedivisjon» Ab (venstredivisjon)
22. Divisjon med matriser
Løsing av ligningen x*C=d vha
høyredivisjonsoperatoren ”/”:
• x*C=d der x og d er vektorer. C en matrise.
• x*C*inv(C) = d*inv(C)
• x = d*inv(C)
• x=d/C
23. Eksempel med en matriselikning
• Vi har Ax = b der A og b er definert som
>> A = [4 -2 6; 2 8 2; 6 10 3];
>> b = [8 4 0]';
>> x=Ab eller x=inv(A)*b gir
Venstredivisjon!
x =
-1.8049
0.2927
2.6341
24. Eksempel med en matriselikning
• Gitt de same A og B:
>> A = [4 -2 6; 2 8 2; 6 10 3];
>> b = [8 4 0];
• Kan også løses som
>> x=b/A’ eller x=b*inv(A’)
x = Høyredivisjon!
-1.8049 0.2927 2.6341
25. Elementvise operasjoner
• Ofte er det nødvendig å utføre matriseoperasjonene
element for element.
• Alle operasjonene kan utføres elementvis ved å skrive
”.” foran operatoren
• F.eks. hvis hvert element i A skal multipliseres med
hvert element i C, skriv:
>> A.*C
26. Elementvise operasjoner
• Elementvise operasjoner er nyttige når vi skal finne
verdien av en funksjon for veldig mange forskjelllige
argumenter. F.eks.:
>> x = [1:7]
x = 1 2 3 4 5 6 7
>> y = x.^2-4*x
y = -3 -4 -3 0 5 12 21
27. Plotting i MatLab
• MatLab har mange funksjoner for å plotte data, og alle
krever input som vektorer eller matriser
• Den enkleste funksjonen er plot, som kan plotte en
funksjon y = f(x) der x og y er vektorer (som i
eksempelet på forrige side)
• Skriv ”help plot” for å få opp en liste med alle mulige
måter å plotte på