"C'è qualche applicazione pratica?" Sicuramente sì, almeno per controllare il codice e gli errori associati.
"In teoria, teoria e pratica corrispondono. In pratica, non lo fanno." Quindi, matematicamente, no, come ha risposto Matt. Perché (come già risposto), (fino a un potenziale fattore di ridimensionamento). Tuttavia, può essere utile dal punto di vista computazionale, poiché l'equazione di cui sopra viene solitamente implementata tramite la trasformata discreta di Fourier e il suo avatar veloce, la FFT.F( F( x ( t ) ) ) =x(-t)
Un primo motivo deriva dalla volontà di verificare che l'implementazione di Fourier, sia essa codificata da te, da qualcun altro o da una biblioteca, faccia quello che dovrebbe fare sui tuoi dati. L'ordinamento del campione, i fattori di ridimensionamento, i limiti sul tipo di input (realtà, profondità di bit) o lunghezza sono fonti di potenziali errori successivi per implementazioni di Fourier come FFT. Quindi, come controllo di integrità, è sempre bene verificare che le versioni implementate ereditino, almeno approssimativamente, le proprietà teoriche. Come vedrai, come mostrato da Machupicchu, non recuperi esattamente un input reale invertito: spesso, la parte immaginaria non è esattamente zero, e la parte reale è quella prevista, ma all'interno di un piccolo errore relativo, dovuto a calcoli del computer imperfetti (virgola mobile) entro una tolleranza dipendente dalla macchina. Questo è reso visibile nella seguente immagine. La FFT viene applicata due volte su un segnale casuale da 32 campioni e capovolta. Come puoi vedere, l'errore è piccolo, usando float a doppia precisione.
Se l'errore non è relativamente piccolo, potrebbero esserci degli errori nel codice che usi.
Un secondo riguarda enormi volumi di dati o grandi quantità di calcoli FFT iterati, come con la tomografia. Lì, i precedenti piccoli errori relativi possono accumularsi e propagarsi, e persino indurre divergenze computazionali o errori alcuni dettagli qui . Questo è reso visibile nella seguente immagine. Per un segnale non troppo lungo ( campioni ), eseguiamo le seguenti iterazioni:
dove indica la FFT. La figura visualizzata è sottocampionata. E calcoliamo l'errore massimoad ogni iterazione.X01 e 6Xk + 1= R e ( f( f( f( f( xK) ) )))
fmax | XK- x0|
Come puoi vedere, l'ordine di grandezza dell'errore è cambiato, a causa della dimensione del segnale. Inoltre, l'errore massimo aumenta costantemente. Dopo iterazioni rimane abbastanza piccolo. Ma puoi immaginare che, con un cubo -voxel e milioni di iterazioni, questo errore potrebbe diventare non trascurabile.10001000 × 1000 × 1000
Limitare l'errore e valutare il suo comportamento rispetto alle iterazioni può aiutare a rilevare tali comportamenti e ridurli poi mediante appropriati limiti o arrotondamenti.
Informazioni aggiuntive: