MAT Oblig 1. Halvard Sutterud. 22. september 2016

Like dokumenter
Obligatorisk oppgavesett 1 MAT1120 H16

Oblig 2 - MAT1120. Fredrik Meyer 23. september 2009 A =

MAT 1120: Obligatorisk oppgave 1, H-09

MAT1120 Oppgaver til plenumsregningen torsdag 18/9

4.4 Koordinatsystemer

4.9 Anvendelser: Markovkjeder

Fasit til utvalgte oppgaver MAT1110, uka 13/4-16/4

Rang og Vektorrom. Magnus B. Botnan NTNU. 4. august, 2015

Øvingsforelesning 3 Python (TDT4110)

MAT1120. Obligatorisk oppgave 1 av 2. Torsdag 20. september 2018, klokken 14:30 i Devilry (devilry.ifi.uio.no).

MAT Onsdag 7. april Lineær uavhengighet (forts. 1.8 Underrom av R n, nullrom, basis MAT Våren UiO. 7.

3.9 Teori og praksis for Minste kvadraters metode.

Obligatorisk oppgave 1 MAT1120 H15

Basis, koordinatsystem og dimensjon

Til enhver m n matrise A kan vi knytte et tall, rangen til A, som gir viktig informasjon.

6.4 Gram-Schmidt prosessen

MAT1120 Plenumsregningen torsdag 26/8

Obligatorisk oppgave 1 MAT1120 HØSTEN 2014

Til enhver m n matrise A kan vi knytte et tall, rangen til A, som gir viktig informasjon.

6.5 Minste kvadraters problemer

MA2501, Vårsemestre 2019, Numeriske metoder for lineære systemer

4.1 Vektorrom og underrom

6.8 Anvendelser av indreprodukter

a) Matrisen I uv T har egenverdier 1, med multiplisitet n 1 og 1 v T u, med multiplisitet 1. Derfor er matrisen inverterbar når v T u 1.

Ikke lineære likninger

6.4 (og 6.7) Gram-Schmidt prosessen

Lineære likningssystemer og matriser

12 Lineære transformasjoner

MAT-1004 Vårsemester 2017 Prøveeksamen

MAT 1110: Bruk av redusert trappeform

MAT UiO. 10. mai Våren 2010 MAT 1012

Øvingsforelesning 5 Python (TDT4110)

Gauss-Jordan eliminasjon; redusert echelonform. Forelesning, TMA4110 Fredag 18/9. Reduserte echelonmatriser. Reduserte echelonmatriser (forts.

LP. Leksjon 8: Kapittel 13: Nettverk strøm problemer, forts.1

Kap. 5 Egenverdier og egenvektorer

1 Gauss-Jordan metode

UNIVERSITETET I OSLO

Eksamensoppgave MAT juni 2010 (med løsningsforslag)

6 Numeriske likningsløsere TMA4125 våren 2019

Mattespill Nybegynner Python PDF

Obligatorisk oppgave 1 MAT1120 HØSTEN 2008

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Løsningsforslag øving 6

MAT1120 Notat 1 Tillegg til avsnitt 4.4

4.2 Nullrom, kolonnerom og lineære transformasjoner

Øvingsforelesning 5 Python (TDT4110)

Steg 1: Regneoperasjoner på en klokke

MAT1030 Forelesning 22

Differansemetoder for to-punkts randverdiproblemer. Innledning. Anne Kværnø

MAT1120 Oppgaver til plenumsregningen torsdag 25/9

UNIVERSITETET I OSLO

Introduksjon. MAT1030 Diskret Matematikk. Introduksjon. En graf. Forelesning 22: Grafteori. Roger Antonsen

MAT-1004 Vårsemester 2017 Prøveeksamen

Introduksjon. MAT1030 Diskret matematikk. Søkealgoritmer for grafer. En graf

MAT1030 Diskret matematikk

LP. Kap. 17: indrepunktsmetoder

Lineære likningssystemer

Eksamensoppgave i TMA4115 Matematikk 3

TMA4140 Diskret Matematikk Høst 2016

MAT1120 Oppgaver til plenumsregningen torsdag 18/9

MAT1120 Notat 1 Tillegg til avsnitt 4.4

MA1201/MA6201 Høsten 2016

Korteste vei problemet (seksjon 15.3)

UNIVERSITET I BERGEN

10 Radrommet, kolonnerommet og nullrommet

LO118D Forelesning 5 (DM)

Løsningsforslag til eksamen i MA1202/MA6202 Lineær algebra med anvendelser høsten 2009.

Obligatorisk oppgave MAT-INF1100. Lars Kristian Henriksen UiO

Egenverdier og egenvektorer

Lineærtransformasjoner

Kap. 5 Egenverdier og egenvektorer

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Løse reelle problemer

7.4 Singulærverdi dekomposisjonen

4 Matriser TMA4110 høsten 2018

Finne ut om en løsning er helt riktig og korrigere ved behov

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

TMA4110 Matematikk 3 Eksamen høsten 2018 Løsning Side 1 av 9. Løsningsforslag. Vi setter opp totalmatrisen og gausseliminerer:

Homogene lineære ligningssystem, Matriseoperasjoner

Kap. 6 Ortogonalitet og minste kvadrater

Eksamensoppgave i TMA4135 Matematikk 4D

9 Lineærtransformasjoner TMA4110 høsten 2018

Kondisjonstest. Algoritmer og datastrukturer. Python-oppgaver. Onsdag 6. oktober Her er noen repetisjonsoppgaver i Python.

Markov-kjede I ("dekk-eksemplet")

Vær OBS på at svarene på mange av oppgavene kan skrives på flere ulike måter!

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

MAT1120 Repetisjon Kap. 1

Egenverdier for 2 2 matriser

Obligatorisk innleveringsoppgave, løsning Lineær algebra, Våren 2006

A 2 = PDP 1 PDP 1 = PD 2 P 1. og ved induksjon får vi. A k = PD k P 1. Kommentarer:

Matriseoperasjoner. E.Malinnikova, NTNU, Institutt for matematiske fag. September 22, 2009

(3/2)R 2+R 3 R 1 +R 2,( 2)R 1 +R 3 ( 2)R 1 +R 4 6/5R 3 +R 4 1/5R 3

Algdat - øvingsforelesning

Diagonalisering. Kapittel 10

a) Ved numerisk metode er det løst en differensiallikning av et objekt som faller mot jorden. Da, kan vi vi finne en tilnærming av akselerasjonen.

4.1 Vektorrom og underrom

TMA4110 Eksamen høsten 2018 EKSEMPEL 1 Løsning Side 1 av 8. Løsningsforslag. Vi setter opp totalmatrisen og gausseliminerer: x 1 7x 4 = 0

Newtons metode. Gitt f(x) slik at f(a)f(b) < 0, Newtons metode genererer en følge {x k }, hvor. (Newton Raphson) x k+1 = x k f(x k) f (x k )

Øvingsforelesning i Python (TDT4110)

Transkript:

MAT1110 - Oblig 1 Halvard Sutterud 22. september 2016 Sammendrag I dette prosjektet skal vi se på anvendelsen av lineær algebra til å generere rangeringer av nettsider i et web basert på antall hyperlinker mellom dem. Introduksjon Definisjon 1: For hver j 1, 2,..., n definerer vi n j til å være antall dokumenter som dokumentet nj refererer til ved hjelp av hyperlenker Definisjon 2: Vi definerer n n link-matrisen A = [a ij ] ved at a ij = 1 n j hvis dokument nr. j har hyperlenke til dokument nr i, og a ij = 0 ellers. Vi er ute etter å bestemme fornuftig score x 1, x 2,..., x n der x i skal være score til dokument nr. i. En score skal være et ikke-negativt tall mindre eller lik 1, og en høy verdi skal indikere stor relevans. Hvis tallene x 1, x 2,..., x n har sum 1, så vil vi kalle vektoren x = (x 1, x 2,..., x n ) for score-vektor. Dette kalles også for en sannsynlighetsvektor. En måte å regne ut en score-vektor x for en web med link-matrise A er å kreve at x er en løsning av likningen eller alternativt av det homogene systemet Ax = x (1) (A I)x = 0 (2) der I betegner identitetsmatrisen. Det er ikke sikkert at det finnes en unik score-vektor. Gitt en score-vektor så kan vi liste opp dokumentene etter avtagende score. En slik opplisting kalles en rangering. Vi vil si at rangeringen er unik hvis score-vektoren er unik. (2) sier at en vektor x tilhører nullrommet for matrisen 1 Diverse ikke-verdensomspennede web 1.1 Et enkelt web Gitt webet i figur 1, vil vi finne link-matrisen A. Vi ser at dokument 1 peker på alle andre dokumenter, så første kolonne i A blir (0, 1/3, 1/3, 1/3). Andre dokument peker på dokument 3 1

1 4 2 3 Figur 1: Et nett bestående av fire noder, koblet sammen på spennende vis og 4, så andre kolonne blir (0, 0, 1/2, 1/2). Tilsvarende finner vi at tredje og fjerde kolonne blir henholdsvis (1, 0, 0, 0) og (1/2, 0, 1/2, 0). Matrisen blir da 0 0 1 1/2 1/3 0 0 0 1/3 1/2 0 1/2 (3) 1/3 1/2 0 0 Vi vil løse likningssystemet oppgitt i likning (2). For å finne en basis for nullrommet til A I, radreduserer vi matrisen. Vi radreduserer(radreduksjonen ble gjort for hånd, og beviset overlates som en oppgave til leseren), og får 1 0 0 2 rref(a I) = 0 1 0 2/3 0 0 1 3/2, (4) 0 0 0 0 som korresponderer til en løsning på formen x = (2u, 2/3u, 3/2u, u), der u er et fritt valgt reelt tall. For at vektoren vår skal være en stokastisk vektor, krever vi at den har sum 1. Vi ser ved inspeksjon at vår ettertraktede score-vektor da er x = (12/31, 4/31, 9/31, 6/31). 1.2 Usammenhengende web Figur 2 viser det vi kaller et usammenhengdende web, det vil si at weben kan deles opp i deler som ikke refererer til hverandre. Linkmatrisen for dette webet er gitt ved 2

1 3 5 2 4 Figur 2: Et usammenhengende nett. I tillegg er det ingen noder som peker på node 5, stakar 0 1 0 0 0 1 0 0 0 0 A = 0 0 0 1 0.5 0 0 1 0 0.5. (5) 0 0 0 0 0 Vi finner igjen en basis for nullrommet til A ved å radredusere A I(overlates til leseren å vise), og får 1 1 0 0 0 0 0 0 0 0 rref(a I) = 0 0 1 1 0 0 0 0 0 0. (6) 0 0 0 0 1 1.3 Stokastiske link-matriser De to forrige matrisene er begge stokastiske, da alle elementene er større eller lik null, og summen av hver kolonne er 1. En link-matrise kan derimot være ikke-stokastisk dersom en av dokumentene ikke lenker til noen andre dokumenter. 1.4 Google-matriser Det er lettere å finne unik rangering dersom link-matrisen er stokastisk. HviseA er link-matrisen til en web med n dokumenter, og m er et valgt tall slik at 0 < m < 1, definerer vi en ny n n matrise M ved M = (1 m)a + ms, (7) der S er n n matrisen der alle koeffisientene er 1 2. M kalles ofte Google-matrisen til weben (for den valgte m). Legg merke til at M kan betraktes som link-matrisen til en sammenhengende web, selv om A representerer link-matrisen til en usammenhengende web. 3

Vi antar at A er stokastisk. Da vil alle kolonnene i (1 m)a ha sum 1 m, siden kolonnene i A har sum 1. Samtidig vil kolonnene i ms ha sum m n n = m, og kolonnene i M har dermed sum 1 m + m = 1. Siden A er stokastisk, vil ikke elementene i M ha større verdi enn maximalt (1 m) + m 1 n < 1. Vi har også at alle elementene i M er større enn null, og matrisen er derfor regulær (første potens av matrisen har bare ekte positive tall). Teorem 4.18 sier at den dermed har en unik score-vektor. 1.5 En spesifikk Google-matrise Vi finner Google-matrisen til det usammenhengende webet vi så på tidligere til å være 0.03 0.88 0.03 0.03 0.03 0.88 0.03 0.03 0.03 0.03 0.03 0.03 0.03 0.88 0.455 0.03 0.03 0.88 0.03 0.455. (8) 0.03 0.03 0.03 0.03 0.03 Vi bruker python til å finne nullrommet til denne matrisen(koden brukt til å finne både matrisen og nullrommet er vist nedenfor i figur 3), og finner at nullrommet er gitt ved 0.405 0.405 u 0.578 0.578. (9) 0.061 1 import numpy as np 2 from mat1120lib import null 3 4 m = 0.15 5 n = 5 6 S = 1/ float (n) * np. ones ((5,5) ) 7 A = np. array (((0,1,0,0,0), 8 (1,0,0,0,0), 9 (0,0,0,1,0.5), 10 (0,0,1,0,0.5), 11 (0,0,0,0,0) )) 12 13 M = (1 -m)*a + m*s 14 n = null (M- np. eye (5) ) # normalized 15 solution = n/ np. sum (n) 16 solution Figur 3: Python script for å finne nullrommet til en Google-matrrisen for et gitt web, med m = 0.15 Deler vi denne vektoren på summen av elementene sine, får vi den unike score-vektoren til M: 4

0.200 0.200 x = 0.285 0.285. (10) 0.030 1.6 En metode for å generere link-matriser Vi skal nå se nærmere på python-funksjonen randlinkmatrix i figur 4. Koden starter med en n n matrise, der alle elementene er enten null eller en. Deretter går den gjennom indexene fra 0 til 1 og gjør to ting: den setter diagonalen lik null, setter siste element lik en dersom summen av en kolonne er lik null, og sørger for at alle kolonnene har sum lik 1 ved å dele hver kolonne på summen av elementene. 1 def randlinkmatrix (n): 2 A = np. round ( np. random. random ((n,n))) # gives float array 3 for k in range (n): 4 A[k,k] = 0 5 if np. sum (A.T[k]) == 0: 6 if k!= n -1: 7 A[n -1,k] = 1 8 else : 9 A[0,n -1] = 1 10 s = np. sum (A.T[k]) 11 A.T[k] = A.T[k] *1./ s 12 return A Figur 4: En pythonfunksjon som genererer nesten tilfeldige stokastiske link-matriser 1.7 Et spesifikt tilfeldig generert web En kjøring av den oppgitte funksjonen med n = 5, gir 0.000 0.250 0.000 1.000 0.000 0.500 0.000 0.500 0.000 0.000 0.500 0.250 0.000 0.000 0.500 0.000 0.250 0.500 0.000 0.500, (11) 0.000 0.250 0.000 0.000 0.000 som representerer et web som vil se ut som vist i figur 5 5

4 5 3 1 2 Figur 5: Et web som generert av en tilfeldig link-generator for n = 5 noder. Tilfeldigheten er likevel ikke helt uniform, da elementer langs diagonalen i link-matrisen (noder som peker på seg selv) blir erstattet med en link til den siste noden (evt første hvis den siste er utgangspunktet) i de kolonnene der diagonalelementet er eneste ikke-null element 1.8 Finne rangering Vi lager nå en funksjon ranking.py som kan sees i figur 6. 1 def ranking (A): 2 import numpy as np 3 from mat1120lib import null 4 5 if A. shape [0] == A. shape [1] and len (A. shape ) == 2: 6 n = A. shape [0] 7 8 else : 9 n=0 10 print "A is not a square matrix, aborting!" 11 import sys 12 sys. exit (1) 13 tol = 1e -12 14 for i in range (n): 15 if ( np. sum (A.T[i]) -1) > tol : 16 print "A is not a stochastic matrix, aborting!" 17 import sys 18 sys. exit (1) 19 S = 1/ float (n) * np. ones ((n,n)) 20 m = 0.15 21 22 M = (1 -m)*a + m*s 23 n = null (M- np. eye (n)) # normalized 24 return n/ np. sum (n) Figur 6: Funksjonen tar inn en n n stokastisk matrise og finner den unike score-vektoren for en Google-matrise M produsert fra matrisen. 6

1.9 Approksimere rangering Siden det er vanskelig (mange regneoperasjoner) å regne ut nullrommet til veldig store matriser, skal vi finne en måte å finne en approksimasjon til score-vektoren. Måten vi finner vil kunne utnytte at A vil inneholde veldig mange 0-ere. Vi setter x 0 = ( 1 n,..., 1 n ) og definerer x 1 = Mx 0, x 2 = Mx 1, osv. Med andre ord x k = Mx k 1 for k 1. (12) Sekvensen x 1, x 2, x 3,... er da en Markov-kjede assosiert med M. Vi skriver et program for å generere konvergensen av disse kjedene. Det er en del copy paste fra tidligere program. Den relevante delen av pgrorammet sees i figur re 7. Vi kjører programmet på matrisen i likning (8), og ser at vi har konvergens mot en tilfredsstillende løsning etter bare to iterasjoner! Konge! 1 2 def rankingapprox (A, delta = 0.0001) : 3... 4... # error checking and setting up M 5... 6 7 x = 1./ n* np. ones (n) 8 xnew = np. dot (M, x) 9 10 iterations = 1 11 while np. max ( np. abs ( xnew -x)) > delta and iterations < 100: 12 x = xnew 13 xnew = np. dot (M, xnew ) 14 iterations += 1 15 return xnew, iterations Figur 7: Funksjonen rankingapprox.py tar inn en n n stokastisk matrise og finner en approximasjon til den unike score-vektoren ved Markov-kjede iterasjoner i en for-løkke 1.10 En sammenlikning Vi anvender begge python funksjonene, både ranking.py og rankingapprox.py, på den første link-matrisen vi så på, nemlig 0 0 1 1/2 A = 1/3 0 0 0 1/3 1/2 0 1/2. 1/3 1/2 0 0 Dette resulterte i at de to vektorene x 1 = ranking(a) og x 2 = rankingapprox(a) fikk verdiene 0.368151 0.366395 x 1 = 0.141809 0.287962 x 2 = 0.142239 0.288397 0.202078 0.202969 etter 6 iterasjoner. 7

Konklusjon Lineær algebra har nyttige konsekvenser for søkemotorer, som baserer mye av sin forretningsmodell på å rangere nettsider etter relevans. Vi har sett på noen implementasjoner av enkle algoritmer for å finne score-vektorer fra stokastiske, regulære matriser. 8