• Register

Centralna diferenčna shema - napačna rešitev [closed]

+15 votes
848 views

Naloga od mene zahteva naj izračunam prvi odvod --> x'(t) v nekem časovnem intervalu. Shema naj ima red napake O(h^2).

Do rešitve pridem preko odštevka Taylorjevih vrst nazaj in naprej, kjer je n=2, tako da dobim:

odvod = (f(h + x) - f(-h + x) + O(h**2))/(2*h)
, kar je tudi zapisano na predavanjih.
Na predavanjih se napako zanemari. Ali jo moramo tudi mi v nalogi? Če ne, kako jo izračunati?
Jaz sem napako zanemaril in izračunal vrednosti odvodov, a so napačne! Ni mi jasno zakaj.
 
Hvala in lep pozdrav, Tilen Mlinarič
 
UPDATE:
 

Torej, 

Preden se poglobimo me zanima ali je v predavanjih mogoče napaka pri primerjavi teoretičnih in numeričnih odvodov v poglavju Centralna diferenčna shema, kjer je za prvi odvod pri napaki O(h^2) uporabljeno:

num_od_O2 = (np.exp(-(xx+hh)) - np.exp(-xx))/(hh)

namesto

num_od_O2 = (np.exp(-(xx+hh)) - np.exp(hh-xx))/(2*0hh)

ker prvi spada pod razvoj vrste naprej? (samo opažanje, mogoče je mišljen prikaz razlike)

 

1. Glede računanja v zadnji in prvi točki nisem bil pozoren, sedaj sem še enkrat natančno pregledal celotno predavanje in načeloma razumem zakaj ne moremo,
     - če je navodilo naslednje:
S centralno diferenčno shemo reda napake O(h2) , določite numerični odvod  x′(t)  v časovnem intervalu [t1,t2]  z  n  ekvidistančnimi odseki. Kot rešitev podajte numerično polje vrednosti odvoda v teh točkah.

Torej pomeni, interval razbijemo na n odsekov med n+1 točk.

Ker ne moremo računati s centralno diferencialno shemo samo zadnje in prve točke (ker, bi potrebovali točko več in točko manj) lahko izračunamo samo odvode v n-1 točkah? 

Moti me tudi, da v formuli za prvi odvod:

(-f(-h + x) + f(h + x))/(2*h)
Se ne pojavi dejanska vrednost f(x) v točki pred in po intervalu, ampak je definirana s korakom h npr. x+h za točko naprej. Glede na to, da je korak konstanten in naslednja točka odvisna od prejšnje in koraka zakaj dejansko ni mogoče izračunati vrednosti v zadnji točki?
Lp. Tilen Mlinarič
closed with the note: Problem rešen, pojasnilo v komentarjih
asked Dec 10, 2016 by tilen.mlinaric (7,770 points)
closed Dec 12, 2016 by tilen.mlinaric
Živjo!

Domen je omenil, da s centralno shemo ni mogoče izračunati "krajnih" ali "začetnih" točk. To popolnoma drži tudi v tem primeru, razen če imate takšen nabor točk, in ne nameravate izračunati odvoda za prvo in zadnjo točko funkcije f.

Torej, iz opisa ki ste ga podali, ne vidim kje je napak. A lahko prilepite kakšna navodila naloge, podatke, shemo/skico?

Hvala
LP!
Sem dopisal k prvotnemu vprašanju

1 Answer

+8 votes
 
Best answer

S centralno diferenčno shemo reda napake O(h^2) ni mogoče izračunati odvoda v prvi in zadnji točki časovne vrste (potrebujemo podatek o vrednosti odvajane funkcije v točki pred, f(x-h), in točki po, f(x+h), trenutnem času, v prvi in zadnji točki časovne vrste enega od teh nimamo). 

Numerično polje odvodov s centralno diferenčno shemo bo tako za dve točki krajše od polja f(t), na podlagi kaerega računamo odvod.

Podobno bi veljalo tudi za shemi naprej iali nazaj - z uporabo sheme naprej za red napake O(h^2)  ne moremo izračunati odvoda v zadnjih dveh točkah, pri shemi nazaj v prvih dveh točkah niza...

Komentar na dodano:

Pri grafu, ki ga omenjate, je seveda mišljen prikaz razlike med različnimi numeričnimi shemami, metoda naprej je uporabljena namenoma.

Glede tega zakaj s centralno diferenčno shemo ne moremo izračunati odvoda v robnih točkah:

Običano odvajamo numerično takrat, kadar ne poznamo "simbolnega" izraza odvajane funkcije (torej poznamo pare točk (x, y), ne pa tudi zveze y = f(x)). Pri domači nalogi je podan izraz f(x), da lahko pridete do parov točk (x, y), na podlagi katerih nato numerično odvajate. Ko torej dobite vrednosti vaše funkcije na pripravljenem intervalu, lahko "pozabite", da dejanjsko poznate zvezo f(x).

Odvod f'(x) lahko torej določimo le na polagi znanih vrednosti y pri podanih točkah x, točno to naredi metoda končnih razlik. Za izračun odvoda po centralni diferenčni shemi moramo poznati vrednost y v vsaj eni točki pred in vsaj eni točki po x-u v katerem računamo odvod, pri robnih točkah pa tega podatka nimamo.

answered Dec 11, 2016 by dgorjup (61,010 points)
edited Dec 12, 2016 by dgorjup
Ok. Sedaj razumem. Torej, da dokoncamo vse skupaj.
Torej ker "ne poznamo" funkcije ne vemo tocke naprej in nazaj od intervala in dejansko lahko izracunamo pri n+1 tockah samo n-1 odvodov. Torej za krajni dve tocki s centralno ne moremo izracunati odvoda po centr. Dif. Metodi.
...