09/05/28 19:02:56
フーリエ級数展開をするプログラム を作ったんだけど異常値しか出ないのでどこが悪いか教えてください
↓のプログラムの場合はf(x)=x [xが0-5] , 0 [xが5-10] で波長が10でループするような式
//最初にxの値を入力してから
hani_suu = 2;//範囲の数
hani[0]=0.0; hani[1]=5.0; hani[2]=10.0; //(0~5),(5~10)という意味
double temp=0,temp_cos,temp_sin;
for(int j=0;j<hani_suu ;j++)//以下a0の計算
for(double i = hani[j];i<hani[j+1];i+=0.1)temp += 0.1 * kansuu(i,j);//積分計算 ※kansuu(i,j)はjが0のときf(x)=x,1のときf(x)=0を返す
for(int n=1;n<50;n++)//以下an,bnの計算
{
temp_cos=0; temp_sin=0;
for(int j=0;j<hani_suu;j++)
for(double i = hani[j];i<hani[j+1];i+=0.1) //積分計算
{
temp_sin+= 0.1 * kansuu(i,j)*sin((2.0*PI*i*n)/10);
temp_cos+= 0.1 * kansuu(i,j)*cos((2.0*PI*i*n)/10);
}
cos_v[n] = temp_cos; //an
sin_v[n] = temp_sin;//bn
}
temp = temp/2.0; //以下a0+Σ(ancos+bnsin)
for(int n=1;n<50;n++)
temp = temp + cos_v[n] * cos((2.0* PI * n * x )/10) + sin_v[n] * sin((2.0* PI * n * x )/10);
//最終的なtempが答え
見にくいですがお願いします