Localizzazione della funzione d’onda
Voglio studiare il comportamento nello spazio delle coordinate di funzioni d’onda di cui sia noto il comportamento nello spazio dei numeri d’onda. Denoto con ϕ(k) e ψ(x) rispettiva- mente le relative funzioni d’onda normalizzate, tra le quali c’` e la relazione
ψ(x) = 1
√ 2π
Z +∞
−∞
ϕ(k)e
ikxdk
Un esempio tipico ` e la distribuzione gaussiana
ϕ(k) = 1
π
1/4exp
µ
− 1 2 k
2¶
il cui corrispondente ` e ψ(x) = 1
π
1/4√ 1 2π
Z +∞
−∞
e
−12k2+ikxdk = 1
π
1/4e
−x2/2Si pu` o facilmente verificare che
Z +∞
−∞
|ϕ(k)|
2dk =
Z +∞
−∞
|ψ(x)|
2dx = 1
Test
Un possibile esercizio ` e quello di ottenere ψ(x) a partire da ϕ(k) mediante trasformata di Fourier numerica. Per verificare l’esattezza del proce- dimento conviene considerare il caso speciale in cui
ϕ(k) = 1
π
1/4exp(−k
2/2) dato che in questo caso
ψ(x) = 1
π
1/4exp(−x
2/2)
e quindi si pu` o usare come test della cor- rettezza della subroutine per la trasformata.
Vanno anche scelti oculatamente i punti k
1, k
2, . . . , k
Nin cui valutare ϕ(k
i) e i corrispondenti x
1, x
2, . . . , x
N.
Fast Fourier Transform secondo le librerie gsl
Per fare la trasformata di Fourier si pu` o usare la routine fornita con le gsl (anche una rou- tine per l’integrazione numerica funziona, ma ` e molto pi` u lenta e poco educativa). Le routine preconfezionate per la FFT hanno un modo particolare di immagazzinare dati in entrata e risultati in uscita. Considero un esempio parti- colare (maggiori informazioni con info gsl-ref):
i dati in entrata devono essere impacchettati secondo la seguente logica in un array D di di- mensione 2N se faccio la FFT di una funzione f (x)
D
0= <(f
0) D
1= =(f
0) D
2= <(f
1) D
3= =(f
1)
D
4= <(f
2) D
5= =(f
2) D
6= <(f
3) D
7= =(f
3) . . . dove f
i= f (i∆). In entrata quindi i valori della funzione consecutivi corrispondono a
f (0), f (∆), f (2∆), f (3∆) . . .
In uscita nello stesso array si trovano i valori della trasformata nella sequenza (per N pari)
F (0), F (1/(N ∆)), . . . , F ((N/2)/(N ∆) = 1/(2∆))
seguiti da
F (−1/(2∆)), . . . , F (−1/(N ∆))
L’array ` e di 2N elementi, ogni intero indica la parte reale subito seguita da quella immagina- ria.
Per usare la FFT nelle gsl bisogna includere il file hgsl/gsl fft complex.hi o simile (esistono pi` u file diversi da includere a seconda della trasformata che si vuole fare) e poi usare la funzione gsl fft complex radix2 transform(array, 1, size t N,±1) dove il segno positivo o negati- vo dipende dalla trasformata, diretta o inversa, che si vuole fare; attenzione al fattore di nor- malizzazione 1/N che c’` e solo in uno dei due casi!
Un altro test consigliabile ` e fare la trasformata
diretta seguita da quella inversa e vedere se si
ottiene la funzione di partenza.
Pacchetto d’onde
con numero d’onda in un intervallo
Ora si pu` o procedere a fare la trasformata di Fourier del problema che interessa, cio` e un pacchetto d’onda definito da
ϕ(k) = 1
√ k
2− k
1k
1≤ k ≤ k
2e zero altrove. In questo modo il pacchetto ` e normalizzato in modo appropriato. Calcolo la trasformata di Fourier analiticamente
ψ(x) = 1
q
2π(k
2− k
1)
Z k
2
k1
exp(ikx)dk
= 1
q
2π(k
2− k
1)
(exp(ik
2x) − exp(ik
1x)) ix
Ponendo
K = k
1+ k
22 q = k
2− k
1Ottengo
ψ(x) =
s