1

y(10^6)=y(0) の周期信号を表す配列 y[x], x=0,1,2,...,10^6 があり、その導関数 dy/ を計算したい速い方法でdx。

私はスペクトル差法を試しました。

dy/dx = inverse_fourier_transform ( i*k fourier_transform(y)[k] ) .................(1)

結果は (y[x+1]-y[x-1])/2 とは異なります。つまり、有限差分法によって示唆されます。

どちらがより正確で、どちらがより高速ですか? 他の同等の方法はありますか?

以下は、結果の違いを理解するための努力です。

(1) の fourier_transform と inverse_fourier_transform の両方の合計を展開すると、dy/dx を y[x] と係数 a[x] の線形結合として表すことができます。これらの係数を計算したところ、(配列の長さが無限大になると) 1/n になるように見えます。n は導関数が調べられる場所までの距離です。隣接する 2 点のみを使用する有限差分法と比較すると、スペクトルの違いは非常に局所的ではありません。

4

1 に答える 1

2

ナイキスト周波数を超える信号をサンプリングしている場合、フーリエ法は正確な答えを提供します。これは、データが信号を完全に記述しているためです (ノイズがないと仮定します)。

有限差分法は一次近似であるため、正確ではありません。それでも、2 つをプロットすると、基本的な傾向は同じになるはずです。それらが完全に異なって見える場合は、おそらくどこかにエラーがあります。

ただし、高速 ft は O(nlog(n)) であるのに対し、有限差分は O(n) であるため、後者の方が高速です (ただし、自動的に優先されるほど高速ではありません)。

フーリエ アプローチは、信号全体を正確に構築するという意味で非局所的です (したがって、すべての波長を使用します)。

于 2012-04-18T21:53:59.160 に答える