• Register

Centralna diferenčna metoda s šumom

+12 votes
122 views

Torej pred to nalogo sem imel primer, kjer je bilo potrebno:

S centralno diferenčno shema reda napake O(h^2), določite numerični odvod x'(t) v časovnem intervalu [0,t_2] z n ekvidistantnimi odseki. Kot rešitev podajte numerično polje vrednosti odvoda v teh točkah.

To smo potem rešili pri spodnjem vprašanju.

Naslednja naloga je zelo podobna, menim da naredim pravilno a vrne mi napačno:

Ponovno določite numerični odvod x'(t) v časovnem intervalu [0,t_2] z n ekvidistantnimi odseki še z dodanim šumom x(t)=a\,t^2+b\,t+c+sum. Kot rešitev podajte numerično polje vrednosti odvoda v teh točkah.

Array šuma imam pravilen, saj to od mene zahteva pri eni izmed prejšnjih nalog. Enako ga skrajšam za prvo in zadnjo točko v intervalu, zaradi narave centralne diferenčne metode. 

def funk_sum(t):

       f = a*tj**2 + b*tj + c
       return f + polje_suma_krajsi

in nato enako kot pri prejšnji preko enačbe iz predavanj rešim in dobim polje odvodov. S tem da sem preveril kako mi funkcija izračuna same y-ne za prejšnjo in sedaj.

funk(interval2) == funk_sum(interval2) - polje_suma_krajsi      ---> vrne True

Polja odvodov sta med seboj skoraj popolnoma enaka.

 

Kakšen namig kje sem se zmotil? je mogoče potrebno tokrat po drugi metodi in izračunati tudi na robovih, mogoče z uporabo numpy.gradient?

 

Najlepša hvala in upam da nisem preveč specifičen...

Tilen Mlinarič

 

 

asked Dec 13, 2016 by tilen.mlinaric (7,770 points)

1 Answer

+4 votes
 
Best answer

Uporabiti morate isto metodo kot pri zgornji nalogi. Bodite pozorni, da je polje šuma točno tisto, po katerem vas je spraševala ena od prejšnjih nalog, in po tem niste več klicali funkcije random

Sicer pa je zelo težko reči, kaj točno je narobe. Če mislite, da je napaka na naši strani, oddajte pravilno rešen notebook skupaj z individualnim seminarjem.

answered Dec 13, 2016 by dgorjup (60,170 points)
selected Dec 13, 2016 by janko.slavic
Random pa ne bi smelo vplivati zaradi np.random.seed(i) če se ne motim.
Poskusite enkrat poklicati np.random.seed(i) in nato večkrat zapored np.random.rand.
...