1 高速フーリエ変換 (fast Fourier transform). 2 高速フーリエ変換とは? – 簡単に言うとフーリエ変換を効率よく計算 する方法 – アルゴリズムの設計技法は分割統治法に基 づいている 今回の目的は? – 多項式の積を求める問題を取り上げ、高速 フーリエ変換のアルゴリズムを用いた解法.

Slides:



Advertisements
Similar presentations
計測工学 10 データの補間 スプライン補間 1. . 復習 階差 近似多項式の次数 の決定法 等間隔階差 – 関数 y=f(x) で、 x の値 が等間隔の場合 等間隔: x 0, x 0 +h, x 0 +2h ・・・ y の値: y 0, y 1, y 2 ・・・ これらの階差は – 第1階差:
Advertisements

HBSP モデル上での 行列積を求めるアルゴリ ム 情報論理工学 吉岡健太.
論理回路 第 11 回
Ibaraki Univ. Dept of Electrical & Electronic Eng. Keiichi MIYAJIMA
1. 補間多項式 n 次の多項式 とは、単項式 の 線形結合の事である。 Definitions: ( 区間, 連続関数, abscissas (データ点、格子点、差分点), 多項 式 ) Theorem. (補間多項式の存在と一意性) 各 i = 0, …, n について、 をみたす、次数が高々 n.
ディジタル信号処理 Digital Signal Processing
プログラムのパタン演習 解説.
アルゴリズムイントロダクション第2章 主にソートに関して
Ⅰ.電卓キーの基本的機能 00 0 1 2 3 6 ⑤ 4 9 8 7 M- MR MC + × % M+ - = ÷ C √ +/- GT
プログラミング言語としてのR 情報知能学科 白井 英俊.
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
第11回 整列 ~ シェルソート,クイックソート ~
プログラミング論 I 補間
数個、数十個のデータ点から その特徴をつかむ
ファーストイヤー・セミナーⅡ 第8回 データの入力.
Microsoft Excel 2010 を利用した 2項分布の確率計算
スペクトル法による数値計算の原理 -一次元線形・非線形移流問題の場合-
Generating Functions (前半) B4 堺谷光.
2009/10/9 良いアルゴリズムとは 第2講: 平成21年10月9日 (金) 4限 E252教室 コンピュータアルゴリズム.
 Combinations(2)        古川 勇輔.
9.NP完全問題とNP困難問題.
首都大学東京 都市教養学部数理科学コース 関谷博之
電気回路学Ⅱ エネルギーインテリジェンスコース 5セメ 山田 博仁.
(ラプラス変換の復習) 教科書には相当する章はない
第11回 整列 ~ シェルソート,クイックソート ~
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
情報処理3 第5回目講義         担当 鶴貝 達政 11/8/2018.
スペクトル法の一部の基礎の初歩への はじめの一歩
第10回関数 Ⅱ (ローカル変数とスコープ).
デザイン情報学科 メディア情報設計 河原英紀
2011/06/21-24 情報知能学科「アルゴリズムとデータ構造」 担当:白井英俊
独立成分分析 5 アルゴリズムの安定性と効率 2007/10/24   名雪 勲.
6. ラプラス変換.
デザイン情報学科 メディア情報設計 河原英紀
デザイン情報学科 メディア情報設計 河原英紀
ルンゲクッタ法 となる微分方程式の解を数値的に解く方法.
他の平均値 幾何平均 調和平均 メデイアンとモード 平均値・メデイアン・モードの関係.
アルゴリズムとデータ構造 第3章 ヒープ 6月10日分
電気回路学Ⅱ コミュニケーションネットワークコース 5セメ 山田 博仁.
25. Randomized Algorithms
第5回放送授業.
ディジタル信号処理 Digital Signal Processing
Additive Combinatrics 7
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
プログラミング 4 整列アルゴリズム.
プログラミング 4 探索と計算量.
第2回課題 配布した通り.氏名・学生番号を忘れないこと.
Fourier 変換 Mellin変換 演習課題
コンパイラ 2011年10月20日
需要点,供給点,辺容量を持つ木の分割アルゴリズム
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
補講:アルゴリズムと漸近的評価.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
電気回路学Ⅱ エネルギーインテリジェンスコース 5セメ 山田 博仁.
行列式 方程式の解 Cramerの公式 余因数展開.
データ解析 静岡大学工学部 安藤和敏
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
確率論・数値解析及び演習 (第7章) 補足資料
電気回路学Ⅱ 通信工学コース 5セメ 山田 博仁.
ヒープソート.
電気回路学Ⅱ 通信工学コース 5セメ 山田 博仁.
Microsoft Excel 2010 を利用した 2項分布の確率計算
Cプログラミング演習 ニュートン法による方程式の求解.
参考:大きい要素の処理.
情報処理Ⅱ 小テスト 2005年2月1日(火).
Fourier 変換 Mellin変換 演習課題
6.2 高速フーリエ変換 (1)FFT(fast Fourier transform)とは
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
グラフの帯域幅連続多重彩色 を求めるアルゴリズム (Bandwidth Consective Multicolorings of Graphs) 西関研究室 西川和秀.
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

1 高速フーリエ変換 (fast Fourier transform)

2 高速フーリエ変換とは? – 簡単に言うとフーリエ変換を効率よく計算 する方法 – アルゴリズムの設計技法は分割統治法に基 づいている 今回の目的は? – 多項式の積を求める問題を取り上げ、高速 フーリエ変換のアルゴリズムを用いた解法 を導いて、計算時間を驚くほど短縮できる ことを示す

3 多項式の積の計算の例1 以下のような 2 次多項式のp(x)とq(x)をかけ る この場合2次式のため簡単に出来たが、一般 的に N-1 次多項式の時は、このような方法で は大変時間 がかかる. どうすれば よいのか?

4 多項式の積の計算を高速化するに は? N-1 次の多項式は N 個の異なる点におけ る関数値で完全に決まるという事実を 利用する( N-1 次式の項の数は定数も含 むから N 個) ⇒2つの N-1 次多項式同士の積は2 N-1 個の点 でその多項式の値が分かっていれば、その 積を完全に決定できる

5 2つの N-1 次多項式の積を求める 基本 的な手順 評価:入力された多項式の値を2 N-1 個 の 異なる点で計算する 乗算:各点でえられた値を掛ける 補間:上で求めた2 N-1 個の値を補間す る – 補間とは、多項式の N 個の異なる点におけ る値が与えられた時、その多項式の係数を 求めること

6 2N-1 次の多項式 R(x)=P(x)Q(x) 2つの N-1 次多項式 P(x) Q(x) 乗算 フーリエ変換 逆フーリエ変換 分割統治法を用いて 効率よくしたのが高速フーリエ変 換

7 例2)

8

9 ラグランジュの公式

10 例2の場合、評価と補間それぞれで の計算時間がかかってしまう しかし、多項式の値を計算する2 N-1 個 の点はどこの点を選んでもよいことに 注目すると、多項式の積の計算を簡単 にする点集合を選べば、効率のよく計 算時間を短縮できるのでは?

11 1の複素累乗根 多項式の積の計算をする点として、1 の複素累乗根を用いると計算を高速化 できる

12

13 N-1 次多項式の値を 1の N 乗根において計 算する 1 の N 乗根における値をそのまま計算し たのではあまり意味がない 分割統治法を用いる – 低次の項から順に交互にとって2つに分け る –N- 1次多項式の値を N 個の点で計算するた めに、まず N/2 個の係数の2つの多項式に 分割する。そしてそれぞれの多項式の値を N/2 個の点で計算して全体の N 点における値 を求めればよい

14 なぜ分割統治法がいいのか? – 根を2乗すると別の根が得られる – 特に N が偶数の時は、 1の N 乗根を2乗すると、1の N/2 乗根が 得られる 例) 実際に N=8 で考えてみる

15

16

17

18

19

20 1の累乗根の関数値の補間 1の累乗根を用いて高速で多項式の値が得られ た ⇒その値を高速で補間すれば、高速で多項式の積 が求まったことになる. 補間する点集合が1の累乗根ならば、 関数値を計算する手順で補間多項式も求まる! フーリエ変換とその逆変換を使っているから!! なぜな ら

21

22

23

24 性質41.2 1の N 乗根における値が与えられた N-1 次多項式の係 数を、約 NlgN 回の乗算で求めることが出来る. これは補間の計算は多項式の値の計算の逆であるか ら性質41.1より乗算は約 NlgN 回となる. 多項式の値の計算と補間の計算の乗算の回数は NlgN 回であるが、あくまで1の N 乗根に対してだけ あてはまる

25 eval(p, outN, 0); eval(q, outN, 0); for (i = 0; i <= outN; i++) r[i] = p[i]*q[i]; eval(r, outN, 0); for (i = 1; i <= N; i++) { t = r[i]; r[i] = r[outN+1-i]; r[outN+1-i] = t; } for (i = 0; i <= outN; i++) r[i] = r[i]/(outN+1); ・大域変数 outN に2 N-1 が与えられている. ・ p,q,r は添字の範囲が0から2 N-1 の複素数の配列 と仮定されている. ・多項式 p,q は N-1 次であり、 N 次より上位の係数は0 に 初期化されている.

26 手続き eval 1番目の引き数 – 多項式の係数を、1の累乗根における多項 式の値に書き換える 2番目の引き数 – 多項式の次数(係数の数、1の根の数より 1少ない) 手続き eval の目的 N+1 個の係数が連続して入っている配列を入力 と して、同じ配列に N+1 個の関数値を入れて返す こと

27 しかし、再帰呼出しでは連続していない偶数 番目と奇数番目の係数の配列を入れかえなけ ればならない. ⇒ここで用いられるのが、完全シャッフル 完全シャッフルをすることにより 配列の前半に連続して偶数番目の係数を入れ、 後半に奇数番目の係数を入れることが出来る.

28 完全シャッフル P[0] P[1] P[2] P[3] P[4] P[5] P[6] P[7] P[0] P[2] P[4] P[6] P[1] P[3] P[5] P[7]

29 高速フーリエ変換のプログラ ム 実際計算する時の 1 の N 乗根の値は、 配列 w に 1 の (outN+1) 乗根が入っている 上のことも考慮すると 次のような高速フーリエ変換のプログ ラムとなる.

30 eval(struct complex p[], int N, int k) { int i, j; if (N == 1) { p0 = p[k]; p1 = p[k+1]; p[k] = p0+p1; p[k+1] = p0-p1; } else { for (i = 0; i <= N/2; i++) { j = k+2*i; t[i] = p[j]; t[i+1+N/2] = p[j+1]; } for (i = 0; i <= N; i++) p[k+i] = t[i]; eval(p, N/2, k); eval(q, N/2, (k+1+N)/2); j = (outN+1)/(N+1); for (i = 0; i <= N/2; i++) { p0 = w[i*j]*p[k+(N/2)+1+i]; t[i] = p[k+i]+p0; t[i+(N/2)+1] = p[k+i]-p0; } for (i = 0; i <= N; i++) p[k+i] = t[i]; }

31 性質41.3 2 つの N-1 次多項式の積は 2NlgN+O(N) 回 の複素数の計算によって求められる. 性質41.1と性質41.2より、 N-1 次多項式を 1 の N 乗根の値への変換と補 間の乗算の回数はそれぞれ NlgN 回であ る.また 1 の N 乗根に変換した値を掛け 合わせるのに O(N) の乗算が必要だから、 積の回数は 2NlgN+O(N) 回となる.

32