質問編集履歴
1
変数の説明を追記しました。また、コメント文に付した①~⑤の行が穴埋めになっている形式なので、それ以外の行に間違いはありません。宜しくお願い致します。
test
CHANGED
File without changes
|
test
CHANGED
@@ -28,15 +28,15 @@
|
|
28
28
|
|
29
29
|
#define M_PI 3.14159265
|
30
30
|
|
31
|
-
#define MM 300
|
31
|
+
#define MM 300 //フーリエ級数展開の打ち切り次数
|
32
|
-
|
32
|
+
|
33
|
-
#define Tp 1.0
|
33
|
+
#define Tp 1.0 //周期波形の周期
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
-
double aa[MM+1], bb[MM+1] ;
|
37
|
+
double aa[MM+1], bb[MM+1] ; //フーリエ展開係数
|
38
|
-
|
38
|
+
|
39
|
-
int NN = 3 * MM ;
|
39
|
+
int NN = 3 * MM ; //数値積分の分割数
|
40
40
|
|
41
41
|
|
42
42
|
|
@@ -56,13 +56,13 @@
|
|
56
56
|
|
57
57
|
if( fabs( t+Tp/2.0 ) < zero || fabs( t-Tp/2.0) < zero ) return 0.5 ;
|
58
58
|
|
59
|
-
else return 0.5 - t/Tp;
|
59
|
+
else return 0.5 - t/Tp; //ここは間違っている可能性あり①
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
-
return 0.5 + 0.5 * cos((2.0 * M_PI * t) / Tp);
|
65
|
+
return 0.5 + 0.5 * cos((2.0 * M_PI * t) / Tp); //ここは間違っている可能性あり②
|
66
66
|
|
67
67
|
}
|
68
68
|
|
@@ -80,7 +80,7 @@
|
|
80
80
|
|
81
81
|
double fcoeff_ak( int k )
|
82
82
|
|
83
|
-
{
|
83
|
+
{ /* 関数f(t)のフーリエ展開級数 a_kを数値積分で求める */
|
84
84
|
|
85
85
|
double t, i, ak = 0.0, dt = Tp/(double)NN ;
|
86
86
|
|
@@ -88,7 +88,7 @@
|
|
88
88
|
|
89
89
|
t = -Tp/2.0 + (double)i * dt ;
|
90
90
|
|
91
|
-
ak = ak + sin(t) / t ; // ここがよくわかっていません。
|
91
|
+
ak = ak + sin(t) / t ; // ここがよくわかっていません。③
|
92
92
|
|
93
93
|
}
|
94
94
|
|
@@ -120,7 +120,7 @@
|
|
120
120
|
|
121
121
|
t = -Tp/2.0 + (double)i * dt ;
|
122
122
|
|
123
|
-
bk = bk + sin(t) / t ; // 同様にここがわかりません。
|
123
|
+
bk = bk + sin(t) / t ; // 同様にここがわかりません。④
|
124
124
|
|
125
125
|
}
|
126
126
|
|
@@ -136,7 +136,7 @@
|
|
136
136
|
|
137
137
|
int k ; double ff = 0.0 ;
|
138
138
|
|
139
|
-
for ( k = 0 ; k <= MM ; k++ ) ff = *aa*cos(((double)k * 2.0 * M_PI * t)/ Tp ) + *bb*sin(((double)k * 2.0 * M_PI * t)/Tp ) ;//ここは合っているのかどうかわかりません。
|
139
|
+
for ( k = 0 ; k <= MM ; k++ ) ff = *aa*cos(((double)k * 2.0 * M_PI * t)/ Tp ) + *bb*sin(((double)k * 2.0 * M_PI * t)/Tp ) ;//ここは合っているのかどうかわかりません。⑤
|
140
140
|
|
141
141
|
return ff;
|
142
142
|
|