質問編集履歴

1

変数の説明を追記しました。また、コメント文に付した①~⑤の行が穴埋めになっている形式なので、それ以外の行に間違いはありません。宜しくお願い致します。

2020/07/02 23:40

投稿

ty59rhgaeraoih
ty59rhgaeraoih

スコア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