Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Logg inn

Valgte tags:

Filtrering:

Skriv ut:

Vektoroperasjoner 1

I disse oppgavene skal du gjøre deg kjent med noen ulike vektoroperasjoner ved å skrive funksjonene i python. Skriv så mye du kan fra bunn av, men det viktige er matten, så bruk gjerne list comprehension. Kvadratrotsfunksjonen "sqrt" kan du laste inn ved å skrive:

from math import sqrt

Oppgave 1) Prikkprodukt/Skalarprodukt

Skriv en funksjon som returnerer skalarproduktet (prikkproduktet) til en vektor v.

Oppgave 2) Størrelsen til en vektor

Skriv en funksjon som returnerer størrelsen (lengden) til en vektor v.

Vi finner størrelsen av en vektor ved å ta kvadratroten av summen av kvadratene til alle elementene i vektoren.

Oppgave 3) Cosinus-likhet 1

Skriv en funksjon som returnerer cosinus-likheten til to vektorer v1 og v2.

For å regne ut kosinus-likheten tar vi prikkproduktet av vektorne og deler det på størrelsene til de to vektorne ganget med hverandre.

Oppgave 4) Normalisering

Skriv en funksjon som returnerer en normalisert vektor.

For å normalisere en vektor deler vi hvert element i vektoren på størrelsen av vektoren.

Oppgave 5) Cosinus-likhet 2

Skriv en funksjon som returnerer cosinus-likheten til to vektorer v1 og v2, der vi antar at alle vektorne er normaliserte. Hvordan kan vi gjøre denne annerledes fra funksjonen i oppgave 3?

Oppgave 6) Euklidsk avstand

Skriv en funksjon som returnerer den euklidske avstanden mellom to vektorer v1 og v2.

Oppgave 7) Cosinus og euklidsk avstand

a) Bruk vektorne under til å svare på oppgaven. Undersøk den euklidske avstanden mellom de fire u-normaliserte vektorene, og undersøk cosinus-avstanden mellom dem. Hvordan blir resultatene? Skriv en liten tabell.

v1 = [4,6,7,3]
v2 = [4,2,7,0]
v3 = [1,6,7,2]

b) Normaliser deretter vektorne, og gjenta b). Hvordan ser det ut nå? Hvilken effekt har det?

c) Gitt den nye vektoren under, ranger vektorne i a) etter hvor like de er den nye vektoren. Normaliser så vektorene som i b), og gjenta undersøkelsen. Hva ser du?

v4 = [1,5,4,1]
Vis løsningsforslag

Løsningsforslag under utvikling.

Oppgave 1

def skalarprodukt(a,b):
    summen = 0
    for i,j in zip(a,b):
        summen += i*j
    return summen

# alternativ med list comprehension
def skalarprodukt2(a,b):
    return sum([i*j for i,j in zip(a,b)])

Oppgave 2

import math

def stoerrelse(a):
    summen = 0
    for i in a:
        summen += i**2
    return sqrt(summen)

Oppgave 3

def cosinus(a,b):
    return skalarprodukt(a,b)/(stoerrelse(a)*stoerrelse(b))

Oppgave 4

def normalized(a):
    ny = []
    magn = stoerrelse(a)
    for i in a:
        ny.append(i/magn)
    return ny

Oppgave 5

def cosinus(a,b):
    return skalarprodukt(a,b)

Siden lengden av de normaliserte vektorne er 1, så er ||a||*||b|| = 1 * 1 = 1, og når vi deler på 1 så skjer det ikke noe, så da blir det å regne ut cosinus mellom dem redusert til det å regne ut skalarproduktet. Funksjonen blir derfor noe redundant; vi kunne fint brukt skalarprodukt-funksjonen alene.

Oppgave 6

import math

def avstand(a,b):
    summen = 0
    for i,j in zip(a,b):
        summen += (i - j)**2
    return sqrt(summen)

Oppgave 7
Under utvikling.