"Apakah ada aplikasi praktis?" Jelas ya, setidaknya untuk memeriksa kode, dan kesalahan terikat.
"Dalam teori, teori, dan pertandingan praktik. Dalam praktik, mereka tidak." Jadi, secara matematis, tidak, seperti dijawab oleh Matt. Karena (seperti yang sudah dijawab), (hingga potensi faktor penskalaan). Namun, ini bisa bermanfaat secara komputasi, karena persamaan di atas biasanya diimplementasikan melalui transformasi Fourier diskrit, dan avatar cepatnya, FFT.F(F(x(t)))=x(−t)
Alasan pertama muncul dari keinginan untuk memeriksa bahwa implementasi Fourier, apakah dikodekan oleh Anda, orang lain atau dari perpustakaan, melakukan apa yang harus dilakukan pada data Anda. Pemesanan sampel, faktor penskalaan, batasan pada tipe input (kenyataan, kedalaman bit) atau panjang adalah sumber kesalahan potensial berikutnya untuk implementasi Fourier seperti FFT. Jadi sebagai pemeriksaan kewarasan, selalu baik untuk memeriksa bahwa versi yang diimplementasikan mewarisi, setidaknya sekitar, properti teoritis. Seperti yang akan Anda lihat, seperti yang ditunjukkan oleh Machupicchu, Anda tidak dapat memulihkan input nyata yang dibalik: sering kali, bagian imajiner tidak persis nol, dan bagian nyata adalah apa yang diharapkan, tetapi dalam kesalahan relatif kecil, karena perhitungan komputer yang tidak sempurna (titik mengambang) dalam toleransi yang bergantung pada mesin. Ini dibuat terlihat pada gambar berikut. FFT diterapkan dua kali pada sinyal 32 sampel acak, dan dibalik. Seperti yang Anda lihat, kesalahannya kecil, menggunakan pelampung presisi ganda.
Jika kesalahannya relatif tidak kecil, maka mungkin ada kesalahan dalam kode yang Anda gunakan.
Yang kedua berkaitan dengan volume data yang sangat besar atau jumlah besar perhitungan FFT iterated, seperti dengan tomografi. Di sana, kesalahan relatif kecil sebelumnya dapat menumpuk dan menyebar, dan bahkan menyebabkan perbedaan komputasi atau kesalahan beberapa detail di sini . Ini dibuat terlihat pada gambar berikut. Untuk sinyal tidak terlalu lama ( sampel ), kami melakukan iterasi berikut:
mana menunjukkan FFT. Gambar yang ditampilkan adalah subsampled. Dan kami menghitung kesalahan maksimumdi setiap iterasi.x01e6xk+1=Re(f(f(f(f(xk)))))
fmax|xk−x0|
Seperti yang Anda lihat, urutan besarnya kesalahan telah berubah, karena ukuran sinyal. Plus, kesalahan maksimum terus meningkat. Setelah iterasi tetap cukup kecil. Tetapi Anda dapat menebaknya, dengan -voxel cube, dan jutaan iterasi, kesalahan ini mungkin menjadi tidak dapat diabaikan.10001000×1000×1000
Membatasi kesalahan, dan mengevaluasi perilakunya di atas iterasi dapat membantu mendeteksi perilaku tersebut, dan mengurangi kemudian dengan ambang batas yang tepat atau pembulatan.
Informasi tambahan: