Page 1 of 1

Interpolasjon og og numerisk derivasjon (MAT-INF1100)

Posted: 09/11-2016 15:38
by motown11
Sitter her og sliter litt med oppgave 1 i MAT-INF100 innleveringen.

Man har gitte verdier (ti,vi). v angir farten ved tidspunktet t.

Jeg skal gi en algoritme for å beregne en tilnærming til objektets aksellerasjon a(t)=v'(t) ut i fra de verdiene vi har fått tildelt.

Da tenker jeg at jeg bruker interpolasjon for å finne et polynom for funksjonen v(t). Deretter bruker jeg numerisk derivasjon og finner a(t). Problemet er at jeg ikke vet hvordan jeg skal få skrevet det polynomet i python. Antar i fra oppgaven at man ikke kan bruke de verdiene man har fått tildelt, men altså skrive det på en "generell" form slik at man kan kalle funksjonen når man trenger den. Greier å regne det ut for hånd når jeg for eksempel bruker tre av verdiene jeg har fått, men det hjelper jo lite. Hvordan skal jeg skrive det slik at python regner det ut, uten å vite verdiene, eller antall verdier fra før av?

Det er altså dette jeg ikke greier, å skrive det på en generell form i python. Hadde vært fint med noen hint i riktig retning.

Re: Interpolasjon og og numerisk derivasjon (MAT-INF1100)

Posted: 09/11-2016 18:13
by Gustav
Siden du har gitt diskrete punkter $(t_i,v_i)$ vil en approksimering av den deriverte bli f.eks. at du beregner enten

$a_i=\frac{v_{i+1}-v_i}{t_{i+1}-t_i}$, eller

$a_i=\frac{v_{i}-v_{i-1}}{t_{i}-t_{i-1}}$ eller

et gjennomsnitt av disse:

$a_i=\frac12 (\frac{v_{i+1}-v_i}{t_{i+1}-t_i}+\frac{v_{i}-v_{i-1}}{t_{i}-t_{i-1}})$.

Algoritmen blir som følger (i en sløv pythonaktig pseudokode):

$t=[t_1,t_2,...,t_n]$
$v=[v_1,v_2,...,v_n]$
$a=[]$

(Eventuelt lese inn disse verdiene fra en fil(?) og lagre dem i lister som over)

a.append($\frac{v[2]-v[1]}{t[2]-t[1]}$)
for i=2 til n-1,
$a.append(\frac12 (\frac{v[i+1]-v}{t[i+1]-t}+\frac{v-v[i-1]}{t-t[i-1]})$)
a.append($\frac{v[n]-v[n-1]}{t[n]-t[n-1]}$)
plot(t,a)

Re: Interpolasjon og og numerisk derivasjon (MAT-INF1100)

Posted: 09/11-2016 18:53
by motown11
plutarco wrote:Siden du har gitt diskrete punkter $(t_i,v_i)$ vil en approksimering av den deriverte bli f.eks. at du beregner enten

$a_i=\frac{v_{i+1}-v_i}{t_{i+1}-t_i}$, eller

$a_i=\frac{v_{i}-v_{i-1}}{t_{i}-t_{i-1}}$ eller

et gjennomsnitt av disse:

$a_i=\frac12 (\frac{v_{i+1}-v_i}{t_{i+1}-t_i}+\frac{v_{i}-v_{i-1}}{t_{i}-t_{i-1}})$.

Algoritmen blir som følger (i en sløv pythonaktig pseudokode):

$t=[t_1,t_2,...,t_n]$
$v=[v_1,v_2,...,v_n]$
$a=[]$

(Eventuelt lese inn disse verdiene fra en fil(?) og lagre dem i lister som over)

a.append($\frac{v[2]-v[1]}{t[2]-t[1]}$)
for i=2 til n-1,
$a.append(\frac12 (\frac{v[i+1]-v}{t[i+1]-t}+\frac{v-v[i-1]}{t-t[i-1]})$)
a.append($\frac{v[n]-v[n-1]}{t[n]-t[n-1]}$)
plot(t,a)


Takker, nå skjønte jeg det!