タグ

fftに関するslay-tのブックマーク (3)

  • [数学・numpy] 高速フーリエ変換(FFT)による畳み込み | maspyのHP

    概要 「Python競技プログラミングをやる」の文脈で、高速フーリエ変換を使うための基礎知識を整理します。 高速フーリエ変換自体は競技プログラミング以外の文脈でも重要なアルゴリズムですが、そうした需要に応えることは、記事では想定していません。 高速フーリエ変換の詳しいアルゴリズムにはこの記事では触れません(既存の解説が多数ありますし)。代わりにフーリエ変換についての基礎知識について、少し整理しました。ここは、使用言語に関係しない部分です。 最低限、Python での実装だけ見たい人は大部分を飛ばしてよいと思います。 フーリエ変換の性質 フーリエ変換の定義 詳しくは、記事では扱いません。 $K$ を $1$ の $n$ 乗根を $n$ 個持つ体とします(競プロの文脈だと、$K=\C$ および $K=\F_p$ が重要です)。 $K$ に値を持つ数列 $A = (a_0,a_1,\ld

    [数学・numpy] 高速フーリエ変換(FFT)による畳み込み | maspyのHP
  • 高速フーリエ変換の実装を難しそうかなと思っている方が、なんだ簡単じゃないですか!! となるための実装講座です - CADDi Tech Blog

    対象読者さんはどのような方ですか? FFT(高速フーリエ変換)の定義を知っているものの、その実装が難しそうだと感じて困っている方々です。逆に原理や有用性、理論的な子細にご興味のある方のご期待には応えられないと思います。 目標 FFT に苦手意識のあった方が、最低限動くコードを書くだけなら簡単かも? と感じてくださるまでになれたら、私はとっても嬉しいです。 離散フーリエ変換とは 定義はウィキペディアにあります。(責任放棄) wikipedia: 離散フーリエ変換 今回採用する定義 最速で実装までたどり着きたいですから、理論的なところはスキップです。 $N = 2 ^ n$ としましょう。$N$ 次多項式を入れると $N$ 次多項式を返してくれる何かがフーリエ変換です。多項式と言いましたが、コンピュータープログラムですから、係数を並べたものだと思ってくださると嬉しいです。 複素係数 $N$ 次

    高速フーリエ変換の実装を難しそうかなと思っている方が、なんだ簡単じゃないですか!! となるための実装講座です - CADDi Tech Blog
  • FFT(高速フーリエ変換)を完全に理解する話 - Qiita

    となります。 この $C_i$ を、$0\leq i\leq 2N$ を満たすすべての $i$ について求めるのが今回の目標です。 それぞれ愚直に求めると、$f,g$ の全項を組み合わせて参照することになるので、 $O(N^2)$ です。これをどうにかして高速化します。 多項式補間 愚直な乗算は難しそうなので、$C_i$ の値を、多項式補間を用いて算出することを考えます。 多項式補間とは、多項式の変数に実際にいくつかの値を代入し、多項式を計算した値から、多項式の係数を決定する手法です。 たとえば、$f(x)=ax+b$ という $1$ 次関数があるとします。 $a$ と $b$ の値は分かりませんが、$f(3)=5,f(7)=-3$ がわかっているものとします。 実際に $3,7$ を代入してみると、 $3a+b=5$ $7a+b=-3$ と、連立方程式が立ち、$a,b$ の値が求められま

    FFT(高速フーリエ変換)を完全に理解する話 - Qiita
  • 1