質問: 1/2 シグマ[x=0..3]f(x)sin(n*π*x/2) ...5式 4,5式を用いて、実フーリエ係数an,bnを求めるプログラムを作成する。 (今回は表示はanのみとする) ----------------------------------------------------------------------------- #include #include #define pi 3.1414926434897//円周率 int main(){ int i,j; int num=4;//データ数 double an[4],bn[4];//フーリエ実係数an,bn double data[4]={1,0,-1,0};//扱うデータ //初期化 for(i=0; i
回答: まず、プログラムは一切見ないで、離散化された「係数を求める式」の性質だけを検討しましょう。三角関数の基本を思い出してみれば、恒等式 cos(-n*2π*x/n)=cos(n*2π*x/n) sin(-n*2π*x/n)=-sin(n*2π*x/n) が成り立つ。だから、f(x)が何であれ a[-n]=a[n] b[-n]=-b[n] であることが分かります。 また、xは整数なのだから、任意の整数kについて、恒等式 cos((n+kn)*2π*x/n)=cos(n*2π*x/n) sin((n+kn)*2π*x/n)=sin(n*2π*x/n) が成り立つ。だからf(x)が何であれ a[n+kn]=a[n] b[n+kn]=b[n] であることも分かります。 以上から、 a[n-n]=a[-n]=a[n] b[n-n]=b[-n]=-b[n] になるのが正しい。 以上から、お困りの原因は > 他の成分a0,a2,a3は0になると思う という思い込みにあるんです。見てませんけど、おそらくプログラムは正しいんじゃないでしょうか。