フーリエ級数展開の数値計算
フーリエ解析と信号処理の初歩的な入門書を少し読んで、得た知識をExcel で確認しようとしているですが、よくわからないことがあるので質問させてください。
64営業日分の株価を Excel でフーリエ変換し、以下のようなデータを得ました。
http://www.img5.net/src/up26440.jpg
k 終値 |Ck| arg Ck
0 679 43578 0
1 699 471.1925885 1.46434124
2 696 127.2789785 0.502316976
3 674 182.447214 2.142303271
4 668 72.28019696 0.337870389
5 662 119.8389676 -3.137168335
6 668 142.271173 -1.637414528
7 671 57.39334904 -1.574358665
…………………
64営業日を1周期とし、区間[0,2π]に対応させ
ω = 2π/64 = π/32
を用いて株価 f0~f63 を
f0 = f(0)
f1 = f(ω)
f2 = f(2ω)
……
f63 = f(63ω)
のように関連づけます。つまり t = kω(k = 0,1,2……63) のとき連続関数 f(t) から切り出したものが株価 f0 ~ f63 と見なします。このとき f(t) を 5 次まで求めるのが目的です。
k = 0, 1, 2, …… とし、Ck の偏角を ψk、Ck の共役を _Ck とすると
Ck = |Ck|e^(jψk)
なので f(t) は
f(t) = C0 + ∑ [k=1→∞]( Ck・e^(jkωt) + _Ck・e^(-jkωt) )
= C0 + ∑ [k=1→∞]|Ck|( e^j(kωt+ψk) + e^(-j(kωt+ψk)) )
= C0 + 2∑[k=1→∞]|Ck|cos(kωt+ψk)
したがって5次までの f(t) は
ω = π/32 = 3.141592/32 = 0.09817475
とすると
f_5(t) = C0 + 2∑[k=1→5]|Ck|cos(kωt+ψk)
= C0 + 2( |C1|cos(1ωt+ψ1)
+ |C2|cos(2ωt+ψ2)
+ |C3|cos(3ωt+ψ3)
+ |C4|cos(4ωt+ψ4)
+ |C5|cos(5ωt+ψ5) )
= 43578 + 2( 471.1925885*cos(0.09817475t + 1.46434124)
+ 127.2789785*cos(0.1963495t + 0.502316976)
+ 182.447214*cos(0.29452425t + 2.142303271)
+ 72.28019696*cos(0.392699t + 0.337870389)
+ 119.8389676*cos(0.49087375t -3.137168335) )
= 43578 + 942.385177*cos(0.09817475t + 1.46434124)
+ 254.557957*cos(0.1963495t + 0.502316976)
+ 364.894428*cos(0.29452425t + 2.142303271)
+ 144.56039392*cos(0.392699t + 0.337870389)
+ 239.6779352*cos(0.49087375t - 3.137168335)
となります。ところがこれで t = 0 のときを計算すると
f_5(t) = 43600.5848837014
になってしまいます。高々5次の近似ですので全体としては荒いグラフになると思うのですが、少なくとも t = 0では 679 なるとおもうのですが。どこがおかしいのでしょう?
それとも何か決定的な間違いを犯しているのでしょうか?
※Excel の逆変換を使えば正しく 679 に変換されます。
フーリエ係数 Ck は Excel の FFT で算出されたものですから、連続関数の f(t) の Ck とは正確には一致しないとは思いますが・・・・・・
お礼
詳しい解説ありがとうございます。助かりました。