Mathematica には、積分を計算する Integrate[] があるので、 Fourier係数の計算に利用できる。
Simplify[Integrate[f[x]Cos[n x],{x,-Pi,Pi}]/Pi,Assumptions->Element[n,Integers]]
Simplify[Integrate[f[x],{x,-Pi,Pi}]/Pi]
Simplify[Integrate[f[x]Sin[n x],{x,-Pi,Pi}]/Pi,Assumptions->Element[n,Integers]]
|
は整数) をして簡単化すること、
の場合は別扱いで計算すること (正直に言うと、
私は Mathematica の仕様が理解できないわけではないけれど納得できない)、
以上2つが小さなノウハウである。
ところで、Mathrematica には Fourier変換専用の関数が色々用意されている。 特にFourier級数を求めるためには
を計算する。
に対して
を計算する。
に対して
を計算する。
は、FourierCoefficient[] ですぐに求められる。
関数
が偶関数あるいは奇関数である場合は、
,
もすぐ求められる。
が偶関数でも奇関数でもない場合に、
と
をどうやって求めるかが問題となる。
| 方法1 |
は の偶関数部分
のFourier余弦係数,
は の奇関数部分
のFourier正弦係数であるので、
FourierCosCoefficient[(f[x]+f[-x])/2,x,n] FourierCosCoefficient[(f[x]+f[-x])/2,x,0] FourierSinCoefficient[(f[x]-f[-x])/2,x,n]とすれば求められる (順に に対する , , )。
|
| 方法2 |
|
公式
(
) ( )
,
)。
例えば
c[n_] := FourierCoefficient[f[x], x, n] Simplify[c[n] + c[-n], Assumptions -> n > 0] 2c[0] Simplify[I(c[n]-c[-n]), Assumptions -> n > 0]とすれば求められる。 |
Mathematica が、
一般の場合の
,
を計算する関数を用意してくれれば良いのに、
と思うが、なぜこのような仕様になっているのだろう。
偶関数でも奇関数でもない場合には実際上使われないと考えているのだろうか?
(私には謎だ。)