たとえば、連続関数 f(x) = x(π-x) を3次まで展開すると
-(π/3)(-6sin(x)+3sin(2x)-2sin(3x)+π)+4cos(x)-cos(2x)+(4/9)cos(3x) ……(#)
になるようです。wolframa で確認した限りでは、3次ではあまりいい近似になりません。wolframa のフリー版では4次以上も計算してくれるようですが、グラフまでは示してくれません。
で、この
「あまりいい近似でない3次のフーリエ級数展開」
を、Excel の FFT を使って再現するにはどうすればいいのかというのが質問です。
まずf(x)から128個切り出した
g[n](0≦n≦127)
を用意する必要がありますが、元の関数f(x)の定義域にだいたい合わせて
g[t] = g[t(n)](0 ≦ t(n) ≦ 3.175 : 0≦n≦127 : t = t(n) の刻み幅は 0.05)
t(0) = 0, t(1) = 0.05, t(127) = 3.175
とします。このg[t]に対しFFTを実行し、続けてIFFTを実行すれば当然元のg[t]が回復されます。これは元の関数でいえば f(x) = x(π-x) を128次まで展開することに相当すると思われます(違うのだろうか?)。いま、FFT で実現したいのは f(x) = x(π-x) を3次まで展開することに相当することです。
g[t]のFFTの結果からf(x)の3次に相当すると思われる
g[t(1)], g[t(2)], g[t(3)]
g[t(125)], g[t(126)], g[t(127)]
と直流成分 g[t(0)] 以外の値をすべて削除して(つまり 0 にして)IFFT を実行したのですが、これでは全然だめです。f(x) = x(π-x) の3次よりずっといい近似になってしまうのです(笑)。何か決定的な勘違いをしていると思うので、ご教示いただけたら幸いです。
参考画像
https://imepic.jp/20230703/729270
※ExcelのFFTは使いづらいので、ネットで拾ったVBAコードを利用しています。
No.5ベストアンサー
- 回答日時:
No.1へのコメントについて。
> 反応しませんでした。
FFTのcommandがどうなってるんだかはdocumentをガッツリ読まないと。
ともあれ、手直しの仕方について。もしFFTを使ってx(π-x) を0~πの区間でフーリエ級数展開したいのなら、
> これは元の関数でいえば …(違うのだろうか?)。
違うっす。刻み幅0.05、なんてやりかたではうまくいきません。
●第一に、x(π-x)というのを
f(x) = z(π-z), where z = x - [x/π]π ([t]はtを越えない最大の整数(gaussの記号))
という周期πの関数として扱う必要がある。
●第二に、N点のFFTは周期Nの周期関数だけを相手にしますので、周期がNになるように変換する必要がある。
だからこの場合には
g(n) = (πn/N)(π - (πn/N)) (n=0,1,....,N-1)
を使わなくては。
一方、wolframaの方もこれではダメみたいですね。(皆さんの回答を拝見すると、少なくともデフォルトでは) -π≦x<πを周期とする関数を展開するみたいですから、変数変換して周期を2πにする。さらにx≦0のところが正しく周期通りになるようにする。FFTに与える関数のグラフで言えば、「n=N/2〜N-1の部分を切り取って、それをn<0の部分に平行移動した形」を作るわけで、
h(x) = |x|(2π - |x|)
のフーリエ級数展開をやらせなくちゃいけません。-π≦x<πでプロットすれば x=0を中心として左右対称の「Υ」のような形になるわけです。
ところで、こういう簡単な関数なら、じかに積分して確認できるでしょう。
∫[-π〜π] h(x) e^(-2inx) dx
= 2∫[0~π] h(x) cos(2nx) dx
= 2∫[0~π] x(2π-x) cos(2nx) dx
= if n=0 then 4(π^3)/3, else -π/(n^2)
というわけで、展開の係数は実数、つまりcosine成分だけです。
なお、両者はそれぞれの変数変換に伴うヤコビアン(定数の係数)を(手抜きして)無視したせいで、互いに定数倍の違いが生じます。が、ま、ややっこしいことを考えるより、n=0での値が一致するように規格化した上で比較すれば良いですね。
No.4
- 回答日時:
を見る限り、デフォルトでは積分範囲は-πからπで、
積分区間の幅を2πから変えるにはFourierParametersを設定すれば良いようです。
積分区間の中心を0からずらすパラメータに関する記載はないので、t→t-π/2と変数変換して、積分区間をπ/2からπ/2にした式を入力するしかないかもしれませんね。wolframの関数はほぼ知らないので、他の関数で計算できるかもしれませんがそこまでは調べてません。
No.3
- 回答日時:
例から推測するに, wolframalpha では
-π~π
でフーリエ級数を計算してるんだと思う. 関数 x(π-x) をこの範囲で周期化すると x= ±π で連続しないので, 結果境界ふきんで値があばれる. Gibbs 現象の一種だね.
境界で値がつながるように
(π+x)(π-x)
とすればそこそこ見れた形になる. 境界のところは (導関数が連続じゃないので) やっぱりくるしいけど.
No.2
- 回答日時:
> -(π/3)(-6sin(x)+3sin(2x)-2sin(3x)+π)+4cos(x)-cos(2x)+(4/9)cos(3x) ……(#)
これは具体的に何を計算して出てきたのですか?
それ次第だとは思うけど、何かしらのツールを使って計算していて、デフォルトのパラメータを使っている部分があるのなら、
>0 ≦ t(n) ≦ 3.175
これに対応する部分を0 ≦ t(n) ≦ 2πまたは-π≦ t(n) ≦ πだと思えば、良いかも?
回答まことにありがとうございます。
> -(π/3)(-6sin(x)+3sin(2x)-2sin(3x)+π)+4cos(x)-cos(2x)+(4/9)cos(3x) ……(#)
> これは具体的に何を計算して出てきたのですか?
wolframa で
FourierSeries[x(π-x),x,3]
と入力しました。定義域を 0≦x≦π と指定したいのですが、できません。
FourierSeries[x(π-x),x,3], {0,π}
でもダメでした。
No.1
- 回答日時:
FFTがやってるのは、x=0〜127の範囲の波形を無限に繰り返した周期関数
f(x) = f(x+127n) (ただしnは任意の整数)
の離散フーリエ級数展開です。ご質問の場合ですと、f(x) = f(128-x)という格好をしているから、sine成分は全て0で、cosineの項だけが残るはず。(複素FFTを使ったのなら、すべての係数が実数になる。)
wolframaではおそらく、「x=0〜127の範囲以外では上記の周期関数とは似ても似つかない、何か別の関数」のフーリエ級数展開をやったんでしょう。
回答まことにありがとうございす。
> x=0~127の範囲以外では上記の周期関数とは似ても似つかない、何か
> 別の関数のフーリエ級数展開をやったんでしょう。
ああ、なるほど。であれば、wolframaでフーリエ級数展開するとき、定義域を指定するにはどうしたらいいのでしょうか?
FourierSeries[x(π-x),x,3]
では図のような結果になります。
FourierSeries[x(π-x),x,3],(0≦x≦π)
としたら、反応しませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 θ=π/2 のまわりでの f(θ)=sinθ/cosθのローラン展開に関して 以外の「」の解答を頂き 13 2022/11/11 09:45
- 数学 tan(z)をローラン展開して tan(z)=-1/(z-π/2)+(1/3)(z-π/2)+… と 14 2023/01/17 10:33
- 数学 線形代数学の問題です! Vは 4 次元ベクトル空間とし線形変換 f ∶ V→ V のある基底 v1, 1 2022/06/12 09:25
- 工学 周波数fで表現したフーリエ変換の対称性に関する質問です。 1 2022/09/14 12:27
- 数学 多変数関数の微分とテイラー展開について 5 2022/04/24 16:55
- 数学 次の関数を微分せよ y=sin^4 x cos^4 x という問題で自分は積の微分法で微分して y' 3 2023/05/17 20:38
- 工学 画像はテイラー展開の公式です。 <マクローリン展開> f(z)=Σ_{n=-∞~∞}a(n)(z-a 1 2022/09/01 22:56
- 数学 代数学 環 1 2022/10/12 17:29
- 数学 「<マクローリン展開> f(z)=Σ_{n=-∞~∞}a(n)(z-a)^n(ローラン展開の式)より 3 2022/09/01 08:19
- 大学受験 ある大学の数1,Aの過去問なのですが回答に解説がなく困っています。誰か解説をつけて欲しいです(><) 1 2022/11/05 12:57
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
中が中空の球の慣性モーメント...
-
電磁気の問題です
-
有限長ソレノイドコイルの中心...
-
なぜ、θが微小なとき、tanθ≒θと...
-
高校物理の質問です。 【問題】...
-
力のモーメントのつり合いの式...
-
-cosθがsin(θ-π/2)になる理由が...
-
物理の問題です。 図のような傾...
-
物理の磁場の問題です。 一様な...
-
(111)面を上にもってくる...
-
楕円体の慣性モーメントの式
-
くぼみの表面積
-
力学の問題について
-
空間高調波とは???
-
物理の問題なのですが、この問...
-
流体力学 台車がa=g/2の加速度...
-
図が見づらかったらすみません...
-
剛体に働く力のつりあい(斜面...
-
√3sinX−cosX≦√3 (0≦θ≦2π) のと...
-
cos2πfTの公式を使った計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
電磁気の問題です
-
高校物理の質問です。 【問題】...
-
-cosθがsin(θ-π/2)になる理由が...
-
有限長ソレノイドコイルの中心...
-
中が中空の球の慣性モーメント...
-
なぜ、θが微小なとき、tanθ≒θと...
-
【高校物理】斜方投射の問題
-
電気磁気学
-
√3sinX−cosX≦√3 (0≦θ≦2π) のと...
-
機械設計のねじ
-
空間平均について
-
なぜsinθはθに近似できるのです...
-
矩形波duty比を変えた場合のフ...
-
非保存力の経路による仕事の計算
-
くぼみの表面積
-
放物運動(初速、角度、距離、...
-
くさび状態の2物体間のすべりの...
-
トグル機構 Wikipedia
-
格子定数の求め方,近似について
-
回転体のつりあいについて
おすすめ情報