• ベストアンサー

フーリエ展開を微分すると振動する。

前回の質問では、回答を頂きありがとうございました。 また、質問があるのですが。 実測値の波形データの処理をしています。 フーリエ展開し関数には出来ました。 しかし、フーリエ展開して得られた式を微分したところ、 両端で細かく振動が起こりました。 原因は何が考えられるでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • inara1
  • ベストアンサー率78% (652/834)
回答No.2

「FFTの結果からフーリエ係数は求められるものでしょうか」でお答えした者です。 ソルバーを使った方法はうまくいったでしょうか。こちらでも、回答に示した係数の関数でやってみましたがうまく収束しました(f が大きくはずれているとダメです)。 Fourier級数を微分したものが振動する原因として    (1) 元の関数がそういう性質を持っている    (2) Fourie級数の項数が不足している    (2) 本質的に収束しない が考えられます。(1)かどうかは元の測定データのグラフから想像がつきますが、確かめる方法の1つとして、元の測定データを数値微分してみて、Fourier級数を微分したのと比較するというのはどうでしょうか。ほぼ同じであれば(1)ですし、数値微分したもののほうが滑らかならば(2)の可能性があります(数値微分の方法は末尾を参考にしてください)。(3)は不思議なことかもしれませんが、元の関数形によっては本質的に収束しない場合があります。例えば、関数 f(t) が     f(t) = A ( 2*n*π < t < (2*n+1)*π )       = -A ( (2*n+1)*π < t < 2*(n+1)*π ) という周期 2*π の矩形波の場合、そのFourier級数展開は     f(t) = 4*A/π*Σ [k=1~∞] sin { (2*k-1)*t }/(2*k-1) --- (1) となります。これは、分子の sin { (2*k-1)*t } の大きさが 1以下であるのに対して、分母の 2*k-1 は大きくなっていくので、項数を大きくすればいずれ収束します。しかし、これを t で微分すると     f ' (t) = 4*A/π*Σ [k=1~∞] cos { (2*k-1)*t } となって、分母がなくなってしまい、項数を増やしても振動するばかりで収束しません。逆に、f(t) を t で積分すると     ∫f(t) dt = -4*A/π*Σ [k=1~∞] cos { (2*k-1)*t }/(2*k-1)^2 となりますが、これは分子の cos { (2*k-1)*t } の大きさが 1以下であるのに対して、分母は式(1)よりも速く大きくなっていくので、式(1)よりも少ない項数で収束します。これは微分すると本質的に収束しない例ですが、Fourier級数展開が存在しても収束することが保障されているわけではないようです(私は数学が専門でないので、そうなのかという感じですが)。一般にFourier級数を微分したものは項数を増やさないと収束しにくく、積分したものは少ない項数で収束します。 【数値微分の方法】 資料 [1] は以前このサイトでの質問ですが、数値微分の方法が書かれています。他にも [2] のPDFファイル67ページに、ノイズを取り除いて微分する方法(平滑化微分)が出ています。 ノイズが重畳している元のデータを直接数値微分するとノイズが増えてしまうので、平滑化微分が良いと思います。[2] の平滑化微分は    f ' ( t[n] ) = Δt*{ - A( t[n-3] - A( t[n-2] - A( t[n-1] ) + A( t[n+1] + A( t[n+2] + A( t[n+3] }/12 で表わされます。Δt はデータの時間間隔 t[n] - t[n-1] です。この方法ではデータの両端から3点の微分はデータがないので計算できません。       A          B        C      時間 [s]    データ      数値微分値 11   0.00001    0.021173203    12   0.00002    0.042339618 13   0.00003    0.063492462 14   0.00003    0.021173203 = 0.00001*( -A11 - A12 - A13 + A15 + A16 + A17)/12 ← このセルをコピーして、C16 ~ C1008 まで貼り付ける   ・・・ 1010 0.00999   -0.021173203 1011 0.01     -8.2575E-16 [1] 1階微分の5点以降の係数の求め方  http://okwave.jp/qa1371554.html [2] 平滑化微分(PDFファイル67ページ) http://teils.eng.shizuoka.ac.jp/di2.pdf

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

#2 に補足: Fourier 級数展開は, 「差の 2乗積分が 0 に収束する」という意味で収束します. 一様収束するとか各点収束するとかいうことではないので注意が必要です. 実際, (ある種の) 不連続な関数を Fourier 展開すると, 不連続点の前後でオーバーシュート/アンダーシュートしますが, これは本質的な現象 (Gibbs現象) であって「展開の項数が足りない」とかいう理由ではありません. この辺を誤解してる人がいるんだよな~. 項数を大きくすると, オーバーシュート (やアンダーシュート) は有限の値で残ったままその範囲が狭くなっていきます (項数∞の極限で範囲の幅は 0 になる). ということは, 微分すると (傾きが大きいわけだから) 絶対値は発散することを意味します.

すると、全ての回答が全文表示されます。
  • inara1
  • ベストアンサー率78% (652/834)
回答No.3

ANo.2 です。 間違が2箇所ありました。以下のように訂正してください。    f ' ( t[n] ) = ( - A[n-3] - A[n-2] - A[n-1] + A[n+1] + A[n+2] + A[n+3] )/( 12*Δt )    = ( -A11 - A12 - A13 + A15 + A16 + A17 )/12/0.00001 ← このセルをコピーして、C15 ~ C1008 まで貼り付ける

sillabub03
質問者

お礼

今回も詳しい解説をありがとうございます。 結局、関数の不連続性が原因だったようで。 観測区間を色々弄ってみると把握できました。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • info22
  • ベストアンサー率55% (2225/4034)
回答No.1

フーリエ級数展開前の時間波形f(t)が急に折れ曲がったり不連続になる所では、f'(t)は不連続に変化したりδ関数のような大きな±無限大の振幅が発生します。 フーリエ変換した波形でも無限項まで加え合わせれば時間波形の微分と同じ波形になります。すなわちf(t)の不連続点付近ではf'(t)のフーリエ級数展開の微分でも、非常に短い区間で非常に大きな振幅が発生します。 これが、 >両端で細かく振動が起こりました。 という減少として現れるわけです。無限項まで加えれば非常に鋭いf(t)の微分波形f'(t)に近づくかと思います。

すると、全ての回答が全文表示されます。

関連するQ&A