Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- # oppgave a) er å skrive innholdet i denne klassen
- class Integrator:
- # Merk: time_start skal være 0 og trengs derfor ikke som parameter
- def __init__(self, delta_time, time_end):
- # Fyll inn kode for å sette egenskapene delta_time og time_end her
- self.delta_time = delta_time
- self.time_end = time_end
- def integrate(self, function, initial_condition_vector):
- # Fyll inn kode for å gjøre selve integreringen, som beskrevet i avsnittet
- # "numerisk integrasjon" her.
- # Finn ut hvor lang vektoren er ved å sjekke hvor mange elementer som er i første element.
- dimensjoner = len(initial_condition_vector[0])
- # Finn ut hvor mange steg
- antall_steg = self.time_end / self.delta_time
- tidssteg = 0
- # Lag matrise antall_steg x dimensjoner av initial vector
- matrise = np.empty([antall_steg, dimensjoner])
- matrise[tidssteg] = initial_condition_vector
- for i in range(antall_steg):
- tidssteg += 1
- matrise[tidssteg] = function.evaluate((tidssteg*self.delta_time), matrise[tidssteg - 1])
- return matrise
- # Oppgave b) og c) er å skrive to versjoner av denne klassen. Versjonene
- # skal begge være implementasjoner av grensesnittet "Evaluate"
- # B)
- class BasisKulebane:
- # Denne skal ta flere parametere enn self, sjekk oppgave b) og c)
- # for de to ulike funksjonsklassene. De ulike funksjonsklassene tar
- # ulike parametre til konstruktøren.
- def __init__(self, tyngdekraft, starttilstand):
- # Fyll inn kode for å sette egenskapene
- self.tyngdekraft = tyngdekraft
- self.starttilstand = starttilstand # [x_posisjon, y_posisjon, x_fart, y_fart]
- # Denne funksjonen skal regne ut og returnere en endringsvektor basert på
- # tilstandsvektoren. Bruk formelen oppgitt i oppgaven.
- # Merk at parameteren "tidspunkt" egentlig er unødvendig
- # i denne oppgaven, og er med siden eksemplet er hentet fra et mer komplekst
- # eksempel.
- def evaluate(self, tidspunkt, tilstandsvektor):
- x_fart = self.starttilstand[2] # Farten er konstant (ingen luftmotstand)
- y_fart = self.starttilstand[3] * tidspunkt
- return [x_fart, y_fart, 0, self.]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement