Laboration 0: Del 2. Benjamin Kjellson Introduktion till matriser, vektorer, och ekvationssystem

Relevanta dokument
Egenvärden och egenvektorer

Vektorgeometri för gymnasister

SF1624 Algebra och geometri Lösningsförslag till tentamen Lördagen den 5 juni, 2010 DEL A

SF1624 Algebra och geometri Lösningsförslag till tentamen Fredagen den 23 oktober, 2009 DEL A

Matriser och vektorer i Matlab

Laboration: Vektorer och matriser

SF1624 Algebra och geometri Lösningsförslag till modelltentamen DEL A

Subtraktion. Räkneregler

Beräkningsvetenskap föreläsning 2

. (2p) 2x + 2y + z = 4 y + 2z = 2 4x + 3y = 6

MMA132: Laboration 2 Matriser i MATLAB

1. (Dugga 1.1) (a) Bestäm v (3v 2u) om v = . (1p) and u =

6. Matriser Definition av matriser 62 6 MATRISER. En matris är ett rektangulärt schema av tal: a 11 a 12 a 13 a 1n a 21 a 22 a 23 a 2n A =

19. Spektralsatsen Spektralsatsen SPEKTRALSATSEN

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

5 Linjär algebra. 5.1 Addition av matriser 5 LINJÄR ALGEBRA

Lösningsförslag till skrivningen i Vektorgeometri (MAA702) måndagen den 30 maj 2005

1 Grundläggande kalkyler med vektorer och matriser

Vi skalla främst utnyttja omskrivning av en matris för att löas ett system av differentialekvaioner. 2? Det är komplicerat att

Grafer och grannmatriser

Vektorerna är parallella med planet omm de är vinkelräta mot planets normal, dvs mot

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Lösningsförslag till skrivningen i Vektorgeometri (MAA702) Måndagen den 13 juni 2005

Egenvärden och egenvektorer. Linjär Algebra F15. Pelle

Lösningar till utvalda uppgifter i kapitel 8

Googles sidrankning - linjär algebra värt en förmögenhet

linjära ekvationssystem.

Linjär algebra/matematik. TM-Matematik Mikael Forsberg ma014a, ma031a

Föreläsningsanteckningar Linjär Algebra II Lärarlyftet

Rangordning av internetsidor - ett egenvärdesproblem för positiva matriser

Mat Grundkurs i matematik 1, del I

Linjär algebra Föreläsning 10

SF1624 Algebra och geometri

Vektorgeometri för gymnasister

Föreläsningsanteckningar Linjär Algebra II Lärarlyftet

SF1624 Algebra och geometri Lösningsförsag till modelltentamen

SKRIVNING I VEKTORGEOMETRI

Matriser och linjära ekvationssystem

Föreläsn. anteckn. TMV206-VT13. Vecka 6-7. Egenvärden och Egenvektorer. Kap. 8-9

Preliminärt lösningsförslag

Tentamen i Linjär algebra , 8 13.

Matematiska Institutionen KTH. Lösning till tentamensskrivning på kursen Linjär algebra, SF1604, den 15 mars 2012 kl

2x + y + 3z = 4 x + y = 1 x 2y z = 3

DIAGONALISERING AV EN MATRIS

Dagens program. Linjära ekvationssystem och matriser

Linjär algebra på 2 45 minuter

Moment 6.1, 6.2 Viktiga exempel Övningsuppgifter T6.1-T6.6

SF1624 Algebra och geometri Lösningsförslag till tentamen Tisdagen den 15 december, 2009 DEL A

Moment 5.5 Övningsuppgifter I 5.60a. 5.60b, 5.60.c, 61

MATRISTEORI. Pelle Pettersson MATRISER. En matris är ett rektangulärt schema med tal, reella eller komplexa, vilka kallas matrisens

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

MVE022 Urval av bevis (på svenska)

Linjär Algebra M/TD Läsvecka 2

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Självkoll: Ser du att de två uttrycken är ekvivalenta?

Avsnitt 2. Matriser. Matriser. Vad är en matris? De enkla räknesätten

SKRIVNING I VEKTORGEOMETRI

SKRIVNING I VEKTORGEOMETRI

Multiplicera 7med A λ 1 I från vänster: c 1 (Av 1 λ 1 v 1 )+c 2 (Av 2 λ 1 v 2 )+c 3 (Av 3 λ 1 v 3 ) = 0

SF1624 Algebra och geometri Lösningsförslag till modelltentamen DEL A

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

y z 3 = 0 z i )

Linjär algebra på några minuter

Basbyten och linjära avbildningar

12. SINGULÄRA VÄRDEN. (u Av) u v

Mat Grundkurs i matematik 3-II

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

M = c c M = 1 3 1

A = (3 p) (b) Bestäm alla lösningar till Ax = [ 5 3 ] T.. (3 p)

Matriser och vektorer i Matlab

15 september, Föreläsning 5. Tillämpad linjär algebra

TMV166 Linjär Algebra för M. Tentamen

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A. (1 p) (c) Bestäm avståndet mellan A och linjen l.

1 Positivt definita och positivt semidefinita matriser

Del 1: Godkäntdelen. TMV142 Linjär algebra Z

Diagonalisering och linjära system ODE med konstanta koe cienter.

Linjära ekvationssystem i Matlab

Föreläsn. anteckn. HT13. Vecka 6-7. Egenvärden och Egenvektorer. Slumpvandringar på Grafer. Kap. 8-9

DEL I. Matematiska Institutionen KTH. Lösning till tentamensskrivning på kursen Linjär algebra II, SF1604, den 17 april 2010 kl

Chalmers tekniska högskola Datum: kl Telefonvakt: Linnea Hietala MVE480 Linjär algebra S

Frågorna 1 till 6 ska svaras med ett kryss för varje korrekt påstående. Varje uppgift ger 1 poäng. Använd bifogat formulär för dessa 6 frågor.

Instruktion för laboration 1

14 september, Föreläsning 5. Tillämpad linjär algebra

MAM283 Introduktion till Matlab

Moment Viktiga exempel Övningsuppgifter

Lösningsforslag till tentamen i SF1624 den 22/ e x e y e z = 5e x 10e z = 5(1, 0, 2). 1 1 a a + 2 2a 4

Mat Grundkurs i matematik 3-II

TMV206: Linjär algebra

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Matriser. En m n-matris A har följande form. Vi skriver också A = (a ij ) m n. m n kallas för A:s storlek. 0 1, 0 0. Exempel 1

1 Linjära ekvationssystem. 2 Vektorer

November 24, Egenvärde och egenvektor. (en likformig expansion med faktor 2) (en rotation 30 grader moturs)

Linjära ekvationssystem

Mat Grundkurs i matematik 1, del I

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

SF1624 Algebra och geometri Tentamen Torsdag, 9 juni 2016

Lösningar till MVE021 Linjär algebra för I

1 som går genom punkten (1, 3) och är parallell med vektorn.

Preliminärt lösningsförslag

Linjär Algebra M/TD Läsvecka 1

Transkript:

Laboration 0: Del 2 Benjamin Kjellson 2016 03 21 Introduktion till matriser, vektorer, och ekvationssystem I den här filen får ni en kort introduktion till hur man hanterar och räknar med matriser i R, vilket ni kommer att ha nytta av i kursens laborationsuppgifter. I kursen Statistisk analys har ni stött på datastrukturen data.frame, vilket är en sorts tabell där kolumnerna kan vara av olika typer heltal (integer) i en, decimaltal (numeric) i en annan, textsträngar (character) i en tredje, och kanske faktorer (factor) i en fjärde. Matriser är lite annorlunda: i dem måste alla kolumner och rader vara av samma typ, t.ex. numeric. Definiera matriser Ibland måste vi skapa en matris för hand, t.ex. när ni tvingas mata in en som är definierad i en bok eller en labbinstruktion. Låt säga att ni ska definiera matrisen ( ) 1 2 3 A = 4 5 6 i R. Det kan ni göra på följande vis: A <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3, byrow = TRUE) A # visa matrisen [1,] 1 2 3 [2,] 4 5 6 Som första argument till funktionen matrix ger jag datan jag vill ha i matrisen; här skriver jag in vektorn c(1, 2, 3, 4, 5, 6) (som jag också kan få genom att skriva 1:6) på ett sådant sätt att man enkelt ser hur matrisen bör se ut. Jag säger att matrisen ska ha två rader med nrow och tre kolumner med ncol. Dock kommer matrisen inte se ut som jag vill om jag inte också säger till funktionen matrix att data ska fylla ut matrisen radvis (default är att fylla ut kolumnvis). Jämför med matrix(1:6, nrow = 2, ncol = 3) [1,] 1 3 5 [2,] 2 4 6 Ibland vill man ha en matris fylld av t.ex. ettor. En sån kan man enkelt skapa utan att behöva ange varje element var för sig. Iställer skriver man bara 1

ettor <- matrix(1, nrow = m, ncol = n) om man vill ha en m n-matris fylld med ettor, kallad ettor. Vill man skapa en diagonalmatris kan man göra det med funktionen diag, som i följande exempel: diag(1:3, nrow = 5, ncol = 3) [1,] 1 0 0 [2,] 0 2 0 [3,] 0 0 3 [4,] 0 0 0 [5,] 0 0 0 Vanligare är att man skapar en kvadratisk diagonalmatris, kanske med samma värde längs hela diagonalen. Ett exempel är enhetsmatrisen: diag(1, nrow = 3, ncol = 3) [1,] 1 0 0 [2,] 0 1 0 [3,] 0 0 1 Vektorer Vi är vana vid att skapa vektorer genom att t.ex. skriva c(1, 2, 3) eller 1:3. När vi skriver ut en sådan vektor ser det ut på följande vis: 1:3 [1] 1 2 3 Om vi vill kan vi göra om en sådan vektor specifikt till en radvektor eller en kolumnvektor, genom att använda funktionen matrix. Vektorerna räknas då som matriser med en rad eller kolumn, respektive. En radvektor kan skapas genom matrix(1:3, nrow = 1) [1,] 1 2 3 och en kolumnvektor genom matrix(1:3, ncol = 1) [,1] [1,] 1 [2,] 2 [3,] 3 2

Transponera matriser och vektorer Vill man transponera en matris eller vektor i R så kan man använda funktionen t, som följande exempel illustrerar: A <- matrix(1:6, nrow = 3, ncol = 2, byrow = TRUE) # 3 rader, 2 kolumner t(a) # 2 rader, 3 kolumner [1,] 1 3 5 [2,] 2 4 6 Detsamma gäller vektorer: radvektor <- matrix(1:3, nrow = 1) t(radvektor) [,1] [1,] 1 [2,] 2 [3,] 3 och en kolumnvektor genom kolumnvektor <- matrix(1:3, ncol = 1) t(kolumnvektor) [1,] 1 2 3 För vektorer definierade på vanligt vis, genom t.ex. funktionen c eller :, så ser vi att transponaten av dem blir radvektorer: t(1:5) [,4] [,5] [1,] 1 2 3 4 5 Transponerar vi dem två gånger, vilket bör ge oss det vi startade med, får vi alltså en kolumnvektor: t(t(1:5)) [,1] [1,] 1 [2,] 2 [3,] 3 [4,] 4 [5,] 5 3

Hämta element ur matriser och vektorer (slicing) Vektorer Ibland vill man hämta ut ett eller flera element ur en vektor eller matris. Låt säga att vi har vektorn v <- 11:15 v # visa vektorn [1] 11 12 13 14 15 Säg att vi nu vill hämta ut det första elementet i vektorn. Det kan vi göra genom att skriva v[1] [1] 11 Index för vektorer, matriser osv. börjar på 1 i R, så v[1] är det första elementet i v, v[2], är det andra, osv. Ett sätt att få det sista elementet är att skriva v[length(v)]. Vill vi hämta alla element förutom det första i v så ger vi ett negativt index: v[-1] [1] 12 13 14 15 Detsamma gäller om vi vill hämta t.ex. alla förutom det första och det andra: v[-c(1, 2)] [1] 13 14 15 Vektorn -c(1, 2) är densamma som c(-1, -2) eftersom minustecknet multipliceras in som -1 i vektorn. Akta er dock för att skriva v[-1:2] eftersom vektorn som skapas av -1:2 inte är densamma som c(-1, -2), som man kanske kan tro, utan är istället c(-1, 0, 1, 2), och att försöka köra v[-1:2] kommer att resultera i ett fel (Error). Matriser Vi kan hämta element ut matriser på liknande sätt. Har vi en matris A och skriver A[i, j] så kommer elementet på rad i och kolumn j att hämtas. Skriver vi A[c(i, k), j] så hämtas elementen på rad i och rad k, i kolumn j, som en vektor. Skriver vi A[c(i, k), c(j, m)] så får vi stället en 2 2-matris, och det går givetvis att generalisera detta till indexvektorer (som t.ex. c(i, k) ovan) av större längd än 2. Ibland vill man hämta ut en hel rad eller kolumn ur en matris som en vektor. Det kan man göra genom att lämna ett tomt index, som följande exempel illustrerar 4

A <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3, byrow = TRUE) A # visa matrisen [1,] 1 2 3 [2,] 4 5 6 Hämta ut rad 2 som en vektor: A[2, ] # notera det tomma indexet för kolumner [1] 4 5 6 Hämta ut kolumn 3 som en vektor: A[, 3] # notera det tomma indexet för rader [1] 3 6 Matrismultiplikation För att multiplicera en m n-matris A med en n k matris B så använder vi matrismultiplikationsoperatorn %*% i R, som följande exempel demonstrerar: A <- matrix(1:6, nrow = 3, ncol = 2, byrow = TRUE) B <- matrix(0:3, nrow = 2, ncol = 2, byrow = TRUE) A %*% B [,1] [,2] [1,] 4 7 [2,] 8 15 [3,] 12 23 Att multiplicera med vektorer fungerar på samma vis. skriver vi t.ex. Vill vi multiplicera med en vektor på höger sida v <- 1:2 A %*% v [,1] [1,] 5 [2,] 11 [3,] 17 Vi hade fått samma resultat om vi hade definierat v <- matrix(1:2, ncol = 1). Multiplikation på vänster sida fungerar likadant: 5

v <- matrix(1:3, nrow = 1) # radvektor v %*% A [,1] [,2] [1,] 22 28 Här hade vi alltså fått samma resultat om vi hade skrivit v <- 1:3. Ekvationssystem Vill vi lösa ekvationssystemet Ax = y, där A är en m m-matris, x är en m 1-vektor (kolumnvektor) och y är en m 1-vektor, så använder vi funktionen solve i R, som följande exempel visar: A <- matrix(1:4, nrow = 2, ncol = 2, byrow = TRUE) y <- c(-1, 3) x <- solve(a, y) x # visa lösningen [1] 5-3 Prova att lösa systemet för hand och se om du får samma lösning x. Egenvärden och egenvektorer Om A är en kvadratisk matris så kallas (det möjligen komplexa) talet λ för ett egenvärde till A om det finns en vektor v av passande längd sådan att Av = λv. Vektorn v är egenvektorn som svarar mot egenvärdet λ. Detta kanske ni minns från linjär algebra. Vi kan enkelt räkna ut egenvärden och motsvarande egenvektorer i R, genom att använda funktionen eigen. Följande exempel demonstrerar: A <- matrix(c(1, 2, 0, 3), nrow = 2, ncol = 2, byrow = TRUE) egen_lista <- eigen(a) # Funktionen returnerar en lista egen_varden <- egen_lista$values egen_vektorer <- egen_lista$vectors Det första egenvärdet är alltså egen_varden[1] [1] 3 och motsvarande egenvektor hittas i den första kolumnen av matrisen egen_vektorer: egenvektor1 <- egen_vektorer[, 1] egenvektor1 [1] 0.7071068 0.7071068 6

Egenvektorerna som funktionen eigen ger är normaliserade på sådant sätt att deras längd är lika med 1. Som ni kanske minns från linjär algebra så är en egenvektorer inte unika. Om v 1 är en egenvektor som motsvarar egenvärdet λ 1 till matrisen A, så är också cv 1 en egenvektor motsvarande samma egenvärde, för c 0. Som vi såg ovan var elementen i egenvektorn egenvektor1 identiska. Kanske det vore snyggare om vi multiplicerade/delade egenvektor1 med ett tal som gör att båda elementen tar värdet 1 istället: egenvektor1 <- egenvektor1 / egenvektor1[1] egenvektor1 [1] 1 1 Ett annat alternativ vore att låta summan av elementen i egenvektor1 vara t.ex. lika med 1. Detta kan vi åstadkomma på följande sätt: egenvektor1 <- egenvektor1 / sum(egenvektor1) egenvektor1 [1] 0.5 0.5 Skriva matriser i LaTeX Följande exempel visar hur man skriver en matris i LaTeX. Du kan alltså kopiera koden nedan till ett R Markdown-dokument och sedan knitta. $$ \mathbf{p} = \begin{pmatrix} 0 & 0.25 & 0.75 \\ 0.16 & 0.01 & 0.83 \\ 0.24 & 0.47 & 0.29 \end{pmatrix} $$ Detta kommer synas som 0 0.25 0.75 P = 0.16 0.01 0.83 0.24 0.47 0.29 Vill man ha matriser med hakparenteser, dvs [ ], istället, så kan man skriva bmatrix istället för pmatrix. Övningsuppgifter Uppgift 1 Med kod, definiera matrisen A = ( 1 ) 2 1 1 7

genom att använda funktionen matrix och matrisen ( ) 1 0 D = 0 1 genom att använda funktionen diag, och bilda sedan matrisen C = A D, där A är transponatet av A. Dubbelkolla resultatet genom att utföra uträkningen för hand. Uppgift 2 Lös följande ekvationssystem genom att definiera en matris A och en vektor y, och använda funktionen solve för att hitta lösningen (vektorn) x = (x 1, x 2, x 3 ) : 2x 1 + x 2 + 3x 3 = 1 2x 1 + 6x 2 + 8x 3 = 3 6x 1 + 8x 2 + 18x 3 = 5 Jämför med lösningen du får när du löser systemet för hand. Uppgift 3 Om A är en kvadratisk matris, så kan vi definiera potenser av A rekursivt genom A 1 = A och A n+1 = AA n för n > 1. Vi skulle också kunna definiera A 0 = I, där I är enhetsmatrisen. Skapa nu en funktion mpower <- function(a, n) {... } som tar som argument en (kvadratisk) matris A och ett heltal n större än (eller lika med ditt val) 0, och returnerar A upphöjt till n i överensstämmelse med definitionen ovan. OBS! Din funktion behöver dock inte vara rekursiv, som i definitionen som gavs ovan. Den kan lika gärna vara iterativ, i vilket fall du kanske behöver använda dig av någon slags loop. Prova gärna att skriva både en rekursiv och en iterativ funktion. 8