• Register

numerično odvajanje convolve

+2 votes
190 views

ali je potrebno v funkcijo np.convolve vstaviti tudi drugi odvod dane funkcije, namreč naloga sprašuje po notranjih vrednostih kotnega pospeška. pod mode pustim privzeto 'full' ?

asked May 14 by domens (170 points)
edited May 14 by domens

2 Answers

+3 votes
 
Best answer

Predlagna funkcija np.convolve je le ena možnost aplikacije centralne diferenčne sheme. Predstavljate si jo lahko kot skalarni produkt, ki se "pomika" po numeričnem polju, katerega odvajamo. Glejte tole animacijo:

https://imgur.com/XLQYqdZ

Če se zanjo odločite, se lahko zgledujete po temle enostavnem primeru uporabe:

signal = np.arange(5)
h = 1
uteži = np.array([-0.5, 0, 0.5])
odvod = np.convolve(signal, uteži[::-1], mode='valid') / h
odvod

>>> array([1., 1., 1.])

answered May 15 by dgorjup (61,210 points)
selected May 15 by Luka Knez
+2 votes
Pozdravljeni,

vprašanje sprašuje po notranjih vrednostih kotnega pospeška (robne vrednosti so torej izpuščene). Da notranje vrednosti z uporabo konvolucije ustrezno izračunate, morate torej zagotoviti popolno prekrivanje točk vhodnih vektorjev. Poglejte še enkrat vse možnosti parametra 'mode'.

Glede drugega odvoda dane funkcije pa podam namig: central_diff_weights vrne tudi uteži za drugi odvod.
answered May 14 by Luka Knez (3,620 points)
Pozdravljeni,

sam sem podrobno pregledal dokumentacijo, ki obravnava uporabo funkcije numpy.convolve, pripravil zahtevana vektorja in uporabil parameter 'mode' v skladu z zgoraj zapisanim, posredovani rezultat pa ni pravilen...

in če predpostavim, da so posredovane funkcijske vrednosti v obliki vektorja pravilne, in da je uporabljena vrednost parametra 'mode' v skladu z navodilom za popolno prekrivanje točk vhodnih vektorjev, me zanima ali je potrebno nad numeričnim poljem, ki ga kot rezultat vrne funkcija central_diff_weights, opraviti še kakšno operacijo preden ga dejansko posredujemo kot argument v numpy.convolve?

in ali obstaja kakšna možnost da bi dodali kakršenkoli link ali pa primer uporabe funkcije numpy.convolve v povezavi z računanjem odvodov funkcij, ker vse kar sem sam uspel najti je bilo povezano z obdelavo signalov, verjetnostjo, ipd...

hvala za odgovor
Spoštovani,

sem pregledal vaš vnos v sistem in mislim, da ne razumete dobro parameter mode, prav tako sumim, da ste pozabili na "h". Za dodatno pojasnilo smo dodali še en primer. Glejte prosim spodnji odgovor.
Pozdravljeni,

prvotno izbrana vrednost za parameter mode je bila sicer pravilna, ampak sem naredil (veliko) napako pri določanju koraka h...

po ogledu spodnjega primera pa je vse delovalo brez problemov!

hvala za pomoč
...