„Czy jest jakieś praktyczne zastosowanie?” Zdecydowanie tak, przynajmniej aby sprawdzić kod i powiązane błędy.
fa( F.( x ( t ) ) ) =x(-t)
Pierwszy powód wynika z chęci sprawdzenia, czy implementacja Fouriera, czy to zakodowana przez ciebie, przez kogoś innego, czy z biblioteki, robi to, co powinna zrobić na twoich danych. Kolejność próbek, współczynniki skalowania, ograniczenia typu danych wejściowych (rzeczywistość, głębokość bitów) lub długości są źródłami potencjalnych kolejnych błędów dla implementacji Fouriera, takich jak FFT. Dlatego w ramach kontroli poprawności zawsze dobrze jest sprawdzić, czy zaimplementowane wersje dziedziczą, przynajmniej w przybliżeniu, właściwości teoretyczne. Jak zobaczysz, jak pokazuje Machupicchu, nie odzyskujesz dokładnie odwróconego rzeczywistego wejścia: często wyimaginowana część nie jest dokładnie zerowa, a rzeczywista część jest tym, czego oczekiwano, ale z niewielkim błędem względnym, z powodu niedokładnych obliczeń komputerowych (zmiennoprzecinkowy) w ramach tolerancji zależnej od maszyny. Widać to na poniższym obrazku. FFT jest stosowany dwukrotnie na losowym 32-próbkowym sygnale i odwracany. Jak widać, błąd jest niewielki, przy użyciu pływaków o podwójnej precyzji.
Jeśli błąd nie jest stosunkowo niewielki, mogą występować błędy w używanym kodzie.
x01 e 6xk + 1= R e ( M( f( f( f( xk) ) )))
fmax|xk−x0|
Jak widać, rząd wielkości błędu zmienił się ze względu na rozmiar sygnału. Ponadto maksymalny błąd stale rośnie. Po iteracjach pozostaje wystarczająco mały. Można jednak zgadywać, że przy kostce wokselowej i milionach iteracji ten błąd może stać się nieistotny.10001000×1000×1000
Ograniczenie błędu i ocena jego zachowania na podstawie iteracji może pomóc w wykryciu takich zachowań, a następnie zmniejszyć je poprzez odpowiednie próg lub zaokrąglenie.
Dodatkowe informacje: