Ymmärrän Fourier-muunnoksen perusperiaatteen, ja muistaakseni joskus tällaisia jatkuvia muunnoksia laskenutkin. Voisiko joku selventää minulle, että kuinka tämän funktion ( http://docs.scipy.org/doc/numpy/reference/generated/numpy.fft.fft.html ) palautetta tulisi käyttää kun haluan konstruktoida alkuperäisen funktion?
>>> np.fft.fft(np.exp(2j * np.pi * np.arange(8) / 8))
array([ -3.44505240e-16 1.14383329e-17j,
8.00000000e 00 -5.71092652e-15j,
2.33482938e-16 1.22460635e-16j,
1.64863782e-15 1.77635684e-15j,
9.95839695e-17 2.33482938e-16j,
0.00000000e 00 1.66837030e-15j,
1.14383329e-17 1.22460635e-16j,
-1.64863782e-15 1.77635684e-15j])
Eli jos haluaisin määrittää vaikkapa funktion (π-x)^2 0
>>> np.fft.fft(np.exp(2j * np.pi * np.arange(8) / 8))
array([ -3.44505240e-16 1.14383329e-17j,
8.00000000e 00 -5.71092652e-15j,
2.33482938e-16 1.22460635e-16j,
1.64863782e-15 1.77635684e-15j,
9.95839695e-17 2.33482938e-16j,
0.00000000e 00 1.66837030e-15j,
1.14383329e-17 1.22460635e-16j,
-1.64863782e-15 1.77635684e-15j])
Eli jos haluaisin määrittää vaikkapa funktion (π-x)^2 0
Vastaukset 3
Vanhimmat
Pistät jonon takaisin fft-ohjelmaan ja pyöräytät uudestaan takaperin.
Tai sitten ihan käsipelillä lasket nuo kosini- ja sinitermit.
Näemmä tällä suomi24-palstalla on joku merkistöongelma, koska keskustelut katkeavat hallitsemattomasti jonkinlaisesta erikoismerkistä. Alkuperäinen viestini jatkui vielä että jos haluaisin esimerkkinä määrittää funktion (pi-x)**2, kun 0 < x < 2*pi Fourier-sarjan, niin kuinka tuo tulisi tehdä. Kun lasketut kertoimet sijoitetaan Fourier-kehitelmään, saadaan S(x) = pi**2/3 sigma 4/k**2*cos(kx) josta riittävästi termejä ottamalla saadaan piirtämällä alkuperäisen näköinen kuvaaja, eli homma siis pelaa. Jos nyt sitten käytän tuota edellä mainittua diskreettiä algoritmiä, eli
>>> x = np.linspace(0,2*pi,10)
>>> np.fft.fft((pi-x)**2)
array([ 4.021e 01 0.000e 00j, 2.308e 01 7.500e 00j,
4.617e 00 3.354e 00j, 1.286e 00 1.771e 00j,
2.573e-01 7.918e-01j, 6.883e-15 6.661e-15j,
2.573e-01 -7.918e-01j, 1.286e 00 -1.771e 00j,
4.617e 00 -3.354e 00j, 2.308e 01 -7.500e 00j])
saan kyllä kertoimia, mutta tässä vaiheessa loppuu tietämys että kuinka ja millä kaikilla tavoilla voin näitä kertoimia käyttää. Kuten jo tulikin vastaus, näitä ja sini- ja kosinitermejä yhdistämällä pitäisi päästä approksimaatioon lähtötilanteesta mutta kaipaisin nyt hieman rautalankaisempaa vastausta koska aihealue on minulle melko vieras.
Se mitä minä nyt yritän oikeasti tehdä, on määrittää aaltoyhtälön ominaismuotojen kertoimia. Alkutila tulisi kehittää Fourier-sarjaksi ja kantafunktioina käyttää ominaismuotoja. Olen ilmeisesti aivan oikeilla jäljillä mutta koska Fourier-muunnokset eivät ole ennen tulleet vastaan niin olen rehellisesti sanottuna melko pihalla aiheesta.
Käyttämääsi FFT-ohjelmaa en tunne, mutta minulla on omatekemä, joka laskee muunnoksen ja käänteismuunnoksen. Itse asiassa FFT:llä on semmoinen ominaisuus, että sama ohjelma pienellä säädöllä laskee molemmat muunnokset samallla algoritmillä. FFT:llä voi veivata edestakaisin aika- ja taajuusavaruuden välillä. Tietysti laskentatarkkuuden rajoissa.
Ei FFT-ohjelman teko kauan kestä, jos ei mitään hienouksia halua.Varmaankin löytyy valmiita listauksia, joista voi ottaa mallia.
Suosittelen jotain matikan oppikirjaa. Täällä on hiukan hankalaa lähteä paneutumaan FFT-ohjelmien yksityiskohtiin.