• Non ci sono risultati.

23marzo2015 AlviseSommariva FFT

N/A
N/A
Protected

Academic year: 2021

Condividi "23marzo2015 AlviseSommariva FFT"

Copied!
17
0
0

Testo completo

(1)

Alvise Sommariva

Universit`a degli Studi di Padova Dipartimento di Matematica

23 marzo 2015

(2)

Si supponga che la funzione f ∈ L2

C([0, 2π]) sia in realt`a continua

in [0, 2π] e periodica cio`e f (0) = f (2π). Dalla teoria `e noto che

possiamo scrivere formalmente f (x ) = ∞ X k=−∞ 1 2π Z 2π 0 f (x ) exp (−ikx ) dx  exp (ikx ). (1)

Usualmente non si calcola tutta la sommatoria ma si considera una sua approssimazione N−1 X k=−(N−1) 1 2π Z 2π 0 f (x ) exp (−ikx ) dx  exp (ikx )

(3)

Osserviamo che differentemente dalla classica interpolazione

polinomiale in nodi generici, l’approssimante trigonometrica `e

disponibile se siamo in grado di calcolare numericamente la quantit`a ξk := 1 2π Z 2π 0 f (x ) exp (−ikx ) dx per k = −(N − 1), . . . , (N − 1).

Per funzioni continue e periodiche, si prova che `e una buona scelta

utilizzare la formula deitrapezi composta([1, p.285-288]).

(4)

Supponiamo f : [0, 2π] → R sia continua. Utilizzando la formula composta dei trapezi basata su N intervalli equispaziati (N determina pure il numero di

coefficienti di Fourier da calcolare!) e ricordando la periodicit`a abbiamo dopo

qualche conto, posto τ = 2π/N, che il coefficiente di Fourier ck(f ) `e tale che

(5)

La funzione Matlab fft mappa il generico vettore u = (u1, . . . , uN) in un vettore U = (U1, . . . , UN) tale che

Uk = N X n=1 un· exp  −i (k − 1)2π(n − 1) N  Da ξk−1(f ) = 1 2π Z 2π 0 f (x ) exp (−i (k − 1)x ) dx ≈ N X n=1 Xn· exp −i (k − 1)2π(n − 1) N  = σk

si ha che fft mappa X = (X1, . . . , XN), dove Xj = N1f (τ (j − 1)),

in σ = (σ1, . . . , σN) che approssima ξ = (ξ0, . . . , ξN−1).

(6)

Quindi, noto N e definita f , se scriviamo >>n =1: N ;

>>X_n =(1/ N )*f (2*p i*n/N ) ; >>s i g m a _ n=f f t( X_n ) ;

abbiamo che il k-simo integrale di indice (non negativo!) corrisponde al (k + 1)-simo elemento del vettore σ n (per k = 0, . . . , N − 1).

Nota.

Risulta importante osservare che fft permette di approssimare

(7)

Purtroppo si pu`o mostrare che il (k + 1)-simo elemento calcolato

da FFT in realt`a per problemi legati alla periodicit`a

dell’esponenziale in C `e tale che

σk+1≈ . . . + ξk−N+ ξk+ ξk+N+ . . . .

Questo suggerisce che se sono rilevanti solo i termini di Fourier ξ−(M−1), . . . , ξM−1 mentre gli altri sono di grandezza trascurabile,

allora per N = 2M − 1

applichiamo l’algoritmo FFT per calcolare ξ0, . . . , ξN,

osservare che essendo rilevanti solo ξ−(M−1), . . . , ξM−1

(8)

Per vederlo meglio, supponiamo che sia per semplicit`a f (x ) = N−1 X −(N−1) ξkexp (ikx )

e calcoliamo con fft il vettore Y = (Y1, . . . , Y2N) (attenzione,

con 2N coefficienti!).

Se 1 ≤ k ≤ N, allora ricordando che per j < −(N − 1) e

j > (N − 1) si ha ξj = 0

σk+1= . . . + ξk−2N + ξk + ξk+2N + . . . = ξk.

Se N < k ≤ 2N abbiamo con ragionamenti analoghi

(9)

Nota.

Risulta importante osservare che se N = 2r, allora i coefficienti di

Fourier c0, . . . , cN−1 possono essere calcolati

con un classico algoritmo in O(N2)operazioni aritmetiche,

con l’algoritmo noto come Fast Fourier Transform in sole

O(Nlog2N) operazioni aritmetiche (cf. [1, p.181]),

con un notevole risparmio in termini di complessit`a

computazionale.

La funzione fft implementa la Fast Fourier Transform ed `e

considerata una delle pi`u rilevanti scoperte in ambito numerico per

le sue molteplici applicazioni scientifiche.

(10)

Calcoliamo l’approssimazione f (x ) = ∞ X k=−∞ 1 2π Z 2π 0 f (x ) exp (−ikx ) dx  exp (ikx ). (3)

(11)

La funzione Matlab f u n c t i o n s i g m a=f f t _ c o e f f s ( f , N ) n = ( 1 : N ) ’ ; X =(1/ N )*f (2*( n−1)*p i/ N ) ; s i g m a=f f t( X ) ; calcola il vettore σk+1 ≈ . . . + ξk−N+ ξk + ξk+N+ . . . con ξk := 1 2π Z 2π 0 f (x ) exp (−ikx ) dx .

Se N `e sufficientemente grande e σ = (σ1, . . . , σN) allora

supponendo che circa met`a di questi siano relativi a coefficienti di

Fourier con indici positivi e met`a a indici negativi

(12)

Per valutare l’approssimazione, noti i coefficienti, useremo quindi f u n c t i o n y=f f t _ e v a l ( sigma , x )

i f s i z e( x , 1 ) == 1 , x=x ’ ; end

(13)

Esempio

Approssimiamo la funzione

f (x ) = 3 · exp (−ix ) + 8 · exp (+7ix ) + sin (x )

che `e ovviamente periodica. Ricordiamo che

sin (x ) = (exp (ix )) − exp (−ix ))

2i .

Evidentemente sono tutti nulli i coefficienti di Fourier il cui indice `

e strettamente inferiore a −1, `

e strettamente maggiore di 7.

Quindi una buona scelta `e N = 16, in quanto potenza di 2 e tutti i

coefficienti interessanti hanno indice nell’intervallo [−bN/2c + 1, bN/2c].

(14)

Cos`ı salviamo in fft example.m f u n c t i o n f f t _ e x a m p l e N =16; f=i n l i n e (’ e x p(− i*x )+exp (7* i *x )+s i n ( x ) ’) ; s i g m a=f f t _ c o e f f s ( f , N ) ; f o r ii =1:l e n g t h( sigma ) f p r i n t f(’ \n \ t i i : %3.0 f s i g m a ( i i ) : ( % 1 . 1 5 e , % 1 . 1 5 e * i ) ’, ? ii ,r e a l( sigma ( ii ) ) ,imag( sigma ( ii ) ) ) ;

(15)

Abbiamo come risultato >> f f t _ e x a m p l e ii : 1 sigma ( ii ) : ( 1 . 6 0 2 8 8 4 4 9 1 8 0 2 5 7 0 e −15 , −2.188361991340898 e−16 *i ) ii : 2 sigma ( ii ) : ( 8 . 8 8 1 7 8 4 1 9 7 0 0 1 2 5 2 e −16 , −4.999999999999974 e−01 *i ) ii : 3 sigma ( ii ) : ( 3 . 5 3 9 0 4 1 1 8 4 6 1 0 2 2 8 e − 1 6 , 7 . 1 3 5 9 9 1 3 1 8 6 1 7 3 5 8 e−15 *i ) ii : 4 sigma ( ii ) : ( − 9 . 0 4 8 3 1 7 6 5 0 6 9 5 0 2 6 e − 1 5 , 2 . 7 7 9 0 1 3 6 9 6 0 8 5 3 8 9 e−15 *i ) ii : 5 sigma ( ii ) : ( − 4 . 8 2 2 5 3 1 2 6 3 2 1 5 5 2 4 e −15 , −4.895650690367562 e−15 *i ) ii : 6 sigma ( ii ) : ( − 9 . 9 9 2 0 0 7 2 2 1 6 2 6 4 0 9 e −16 , −3.493746393046745 e−15 *i ) ii : 7 sigma ( ii ) : ( − 1 . 6 9 2 5 9 6 9 8 0 5 4 6 8 4 6 e −15 , −7.115822743877410 e−16 *i ) ii : 8 sigma ( ii ) : ( 8 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e +00 , −7.670411816017961 e−15 *i ) ii : 9 sigma ( ii ) : ( 1 . 7 6 9 4 1 7 9 4 5 4 9 6 3 4 3 e −15 , −7.461921358310391 e−16 *i ) ii : 10 sigma ( ii ) : ( 4 . 4 4 0 8 9 2 0 9 8 5 0 0 6 2 6 e −16 , −3.507075473673624 e−15 *i ) ii : 11 sigma ( ii ) : ( 5 . 0 4 4 5 5 5 3 3 8 7 7 8 8 0 1 e −15 , −4.659328277244503 e−15 *i ) ii : 12 sigma ( ii ) : ( 9 . 0 4 8 3 1 7 6 5 0 6 9 5 0 2 6 e − 1 5 , 2 . 5 5 6 9 6 9 0 9 1 1 6 0 3 5 8 e−15 *i ) ii : 13 sigma ( ii ) : ( − 4 . 6 4 9 0 5 8 9 1 5 6 1 7 8 4 3 e − 1 6 , 7 . 4 8 3 3 3 6 0 3 4 2 0 2 9 3 3 e−15*i ) ii : 14 sigma ( ii ) : ( − 7 . 7 7 1 5 6 1 1 7 2 3 7 6 0 9 6 e − 1 6 , 2 . 5 0 1 4 5 7 9 3 9 9 2 9 1 0 0 e−15*i ) ii : 15 sigma ( ii ) : ( − 1 . 7 9 0 7 2 7 7 5 9 2 1 4 5 8 2 e −15 , −1.424237581148731 e−16*i ) ii : 16 sigma ( ii ) : ( 3 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e + 0 0 , 5 . 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 e−01 *i ) [ err , inf norm] : 5 . 7 5 e−14

Cos`ı , a meno di piccoli errori,

ξ1 ≈ σ2= −0.5i ;

ξ7 ≈ σ8= 8;

ξ−1 ≈ σ16= 3 + 0.5i .

(16)

Esercizio

Cosa succede se in fft example.m si usa N = 13 invece di N = 16? Darne una spiegazione, controllando i valori assunti dal vettore Y.

Esercizio

(17)

K. Atkinson, An Introduction to Numerical Analysis, Wiley, 1989.

Riferimenti

Documenti correlati

[r]

Nelle colonne B e C costruiamo una serie di N campioni (in questo caso 256) con il valore del tempo, campionato a passo costante con frequenza di campionamento

Eseguire sulla stessa figura il grafico di f in [0, 2π] come pure della sua approssimazione con polinomi trigonometrici complessi per N = 16.. Nota: in caso di warning, utilizzare

Definizione 1.4 Un sottoinsieme S di uno spazio metrico X si dice compatto se e solo se ogni successione di punti possiede una sottosuccessione che converge ad un punto di S...

Questo teorema `e utile, perch`e fa capire che se la costante di Lebesgue `e piccola allora l’errore compiuto dall’interpolante polinomiale `e poco pi`u grande dell’errore di

Si osservi che nel precedente teorema si dice che se la funzione f `e intera allora la miglior approssimante ha asintoticamente un errore inferiore rispetto al caso in cui f

[r]

Questo teorema ` e gi` a stato implicitamente dimostrato. Convergenza puntuale delle seie di Fourier. Nella rassegna sui ri- sultati classici manca qualche osservazione