読者です 読者をやめる 読者になる 読者になる

【画像45枚あり】フーリエ変換を宇宙一わかりやすく解説してみる

f:id:McG:20170501223517p:plain

こんにちは,大学の授業でフーリエ変換を勉強中の学生です.

工学系の大学生なら絶対に触れるはずのフーリエ変換ですが,「イマイチなにをしているのかよくわからずに終わってしまった」という方も多いのではないでしょうか?

難しいのに加えて,教科書もちょっと不親切で,いきなり論理が飛躍したりするんですよね(僕の理解力の問題かもしれませんが)

僕がフーリエ変換について学んだ時に,以下のような疑問を抱きました.

f:id:McG:20170501222336p:plain

出来る限り難しい式変形は使わずにこれらの疑問を解決できるようにフーリエ変換についてまとめてみました!!

多少厳密性を欠いても,とりあえず理解するという目的の記事なので,これを読んだあとに教科書と付き合わせてみることをおすすめします!!

それでは,いってみましょう!! 今回の記事は結構本気で書きました.

フーリエ変換の公式

今回のゴールを確認するべく,まずはフーリエ変換及びフーリエ逆変換の公式を見てみましょう.

f:id:McG:20170501220829p:plain

一見するとすごく複雑な形をしていて,とりあえず暗記に走ってしまいたい気持ちもわかります.

数式のままだとなんか嫌になっちゃう人も多いと思うので,1回日本語で書いてみましょう.

f:id:McG:20170424115622p:plain

簡単に言ってしまうと,時間tの関数(信号)になんかかけたり積分したりって処理をすることで角周波数ωの関数に変換しているということになります.

f:id:McG:20170424130021p:plain

フーリエ変換って結局何なの?

さて,時間tの関数から角周波数ωの関数に変換していることがわかりました.

次に出てくるのが以下の疑問です.

迫

結局のところ,フーリエ変換ってなにをしてるの?

例えば,こんな複雑な関数があったとします.

f:id:McG:20170424134457p:plain

後ほど詳しく説明しますが,実はこの複雑な見た目の関数も,私達が慣れ親しんだsin関数を足し合わせて出来ています.

f:id:McG:20170424134519p:plain

高校生くらいに,位相のずれを考えない場合,sin関数の概形を決めるためには振幅と角周波数が分かればいいというのを習いましたよね?

つまり,キーとなってくるのは振幅と角周波数なので,ちょっと抜き出して書いてみます.

f:id:McG:20170424135124p:plain

さらに,抜き出すだけなく可視化するために,振幅を縦軸,角周波数を横軸に取ったグラフを書いてみましょう.

f:id:McG:20170424134120p:plain

このグラフのように,分解した成分を大小でまとめたものをスペクトルといいます.

この分解した状態を求めることを,フーリエ変換というんです

イメージはそこまで難しくないですね.

ちょっとまとめてみましょう.

f:id:McG:20170424140953p:plain

「よくわからないものがごちゃごちゃに集まって複雑な波形になっているものを,単純なsin波にして扱いやすくしよう!!」というイメージを汲み取ってもらえたら良いと思います.

最終的に,振幅を縦軸,角周波数を横軸に取ったグラフを書きましたが,これは序盤で述べた通り,角周波数の関数になっていますよね.

f:id:McG:20170424141652p:plain

複雑な関数をただのsin関数の重ね合わせに変形してしまえば,微分積分も楽だし,解析も簡単になって嬉しいという話ですね

※すべての周期関数がこのように分解できるわけではありませんが,とりあえずはこの理解でOKだと思います.詳しく知りたい方は教科書を読んでみてください

フーリエ級数展開

今回扱うフーリエ変換について考える前に,フーリエ級数展開について理解する必要があります.

実は,フーリエ級数展開も,フーリエ変換も概念的には同じで,違いは「元の関数が周期関数か非周期関数か」と言うだけなんです

f:id:McG:20170424185555p:plain

フーリエ変換とフーリエ級数展開は親戚関係にあるので,どちらも簡単な三角関数の和で表していくというイメージ自体は全く変わりません

「繰り返しのないぐちゃぐちゃな形の非周期関数を扱うフーリエ解析より,規則正しい周期を持った周期関数を扱うフーリエ級数展開のほうが簡単なので,まずはフーリエ級数展開を見ていこう」というだけの話です.

f:id:McG:20170429171711p:plain

なぜ三角関数の和で表せる?

先ほど,「私達が慣れ親しんだsin関数を足し合わせて出来ています」と言いました.

しかし,ある疑問を抱きはしなかったでしょうか?

迫

なんであんな複雑な関数が,単純な三角関数の和で表せるんだろう...?

実は,今まで習った数学でも,複雑なものを簡単なものの和で組み合わせるという作業をしてきたはずです

そう,ベクトルです.

ということで,ベクトルの考え方を使いながら,「関数を三角関数の和で表せる理由」について考えてみたいと思います.

まずは,2次元のベクトルを直交している2つのベクトルの和で表すことを考えてみます.

f:id:McG:20170429181051p:plain

先程だした例では,関数を三角関数の和で表すことが出来ました.また,ベクトルも,直交している2つのベクトルの和で表すことが出来ました.

f:id:McG:20170429181349p:plain

ここまでくれば,三角関数って直交しているベクトル的な性質を持ってるんじゃないか…?と考えるのが自然ですね.

関数とベクトルはそっくり

実は,関数とベクトルってそっくりさんなんですよ.

例えば,ベクトルの和と関数の和を見てみましょう.

f:id:McG:20170429184458p:plain

どっちも,同じ成分同士を足しているので,同じと考えて良さそうですね.

関数とベクトルがに似たような性質をもっているということは,「関数でも内積を考えられるんじゃないか」と予想が立ちます

f:id:McG:20170430114141p:plain

こちら,シグマ記号を使って表してあげると,このような感じになります.

f:id:McG:20170430194611p:plain

ただし,実はまだ不十分なところがあります.

内積を取る時,f(x)のxの値として整数のみを取りましたが,もちろんxは整数だけではありません.

ということで,今シグマ記号になっているところを積分記号に直してあげればいいわけですね.

f:id:McG:20170430194824p:plain

このように,ベクトル的に考えてあげることによって,関数の内積を定義することが出来ました

2つの関数の内積を考えたい場合,2つの関数を掛けて積分すれば良いわけですね.

f:id:McG:20170430195010p:plain

ここで,最初の疑問に立ち返ってみましょう.

「関数が,三角関数の和で表せる」→「ベクトルも,直交しているベクトルの和で表せる」→「もしかして,三角関数って直交しているベクトルみたいな性質がある?」という話でした.

f:id:McG:20170430195052p:plain

ここで,関数に対して内積という演算を定義したので,実際に三角関数が直交している関係にあるのかを見てみましょう.

ただ,その前に,無限大が積分の中に入っていると計算がめんどくさいので,三角関数の周期性を利用して定積分に書き直してみます.

f:id:McG:20170430195459p:plain

ここまでくれば,積分計算が可能なはずです.積和の公式を使って変形した後,定積分を実行してみます.

f:id:McG:20170430195555p:plain

今回, sinx sin2xを例にしましたが,一般化してみるとこのようになります.

f:id:McG:20170430195702p:plain

そう,角周波数が異なる三角関数同士は直交しているんです

ベクトルのようにイメージは出来ませんが,内積が0となり,確かに直交していますね.

今回は sinを例にしましたが,cosも同様に直交しています.

どんな2次元ベクトルでも,直交している2つのベクトルを使って表せたのと同じように,関数も直交している三角関数たちを使って表せるということがわかっていただけたでしょうか.

f:id:McG:20170430200656p:plain

三角関数が直交しているベクトル的な性質を持っているため,関数が三角関数の和で表せるのは考えてみると当たり前なことなんですね.

指数を使ってシンプルに

さて,ベクトルと同様に考えることで,関数をsinやcosの和で表すことができるということを理解していただけたと思います.

先ほどはかなり羅列していましたが,シグマ記号を使って表すとこのようになりますね.

f:id:McG:20170501221119p:plain

なんかsinやらcosやらがいっぱい出てきてごちゃごちゃしているので,オイラーの公式を使ってまとめてあげましょう.

f:id:McG:20170501221133p:plain

オイラーの公式より,sinとcosは指数関数を使ってこのように表せます.

f:id:McG:20170501221150p:plain

先ほどのフーリエ級数展開した式を,指数関数の形に直してみましょう.

f:id:McG:20170501221229p:plain

一見すると複雑さが増したような気がしますが,実は変形すると凄くシンプルな形になるんです.

とりあえず,同類項をまとめてみましょう.

f:id:McG:20170501221251p:plain

ここで,ちょっとした思考の転換です.

 e^{-i\omega t}において, \omegaを1から∞まで変化させて足し合わせるというのは, e^{i\omega t}において, \omegaを-∞から-1まで変化させて足し合わせることと同じなんです

f:id:McG:20170501221307p:plain

そして, e^0が1であることを利用して, a_0も, a_0 e^{i 0 t}と書き直すと,一気にスッキリした形に変形することが出来ます.

f:id:McG:20170501221429p:plain

再びフーリエ変換とは

さて,ここまで考えたところで,最初にみた「フーリエ変換とはなにか」を再確認してみましょう.

フーリエ変換とは,横軸に角周波数,縦軸に振幅をとるグラフを得ることでした.

f:id:McG:20170501101256p:plain

この,「横軸に角周波数,縦軸に振幅をとるグラフ」というのは,どういうことかを考えてみます.

実はすでにかなりいいところまで来ていて,先ほど「関数は三角関数の和で表し,さらに変形して指数関数を使って表せる」というところを理解しました

関数を指数関数の和で表した時,その指数関数たちの係数部分が振幅を表しているんですよね.

f:id:McG:20170501221534p:plain

ちなみに,この指数関数たちの係数のことを,フーリエ係数と呼びます.

つまり,このフーリエ係数さえ求められれば,フーリエ変換は完了したも同然なわけです.

再びベクトルへ

では,関数を指数関数の和で表した時の係数部分を求めていきたいのですが,まずはイメージしやすいベクトルで考えてみましょう.

例えば,ベクトルの場合,係数を求めるのはすごく簡単ですね.

f:id:McG:20170501152054p:plain

ただ,この「係数を求める」という処理,ちゃんと計算した場合,内積を取っているんです

ちょっと内積を使ってαとβを求めてあげましょう.

f:id:McG:20170501153308p:plain

このように係数を求めるには内積を使えばいいということがわかりました.

つまり,フーリエ係数も,関数の内積を使って求めることが出来るというわけです.

f:id:McG:20170501212338p:plain

複素関数の内積って?

ちょっと複雑になってきたので,一旦整理しましょう.

フーリエ変換とは,横軸に周波数,縦軸に振幅をとったグラフを求めることでした.

そして,振幅とは,フーリエ係数のことで,フーリエ係数を求めるためには関数の内積を使えばいいということがわかりました.

f:id:McG:20170501155635p:plain

さて,ここで先ほどのように,関数同士の内積を取ってあげたいのですが,一旦待ってください.

ベクトルのときもそうでしたが,自分自身と内積を取ると必ず正になるというのを覚えているでしょうか?

複素数がベクトルの要素に含まれている場合,ちょっとおかしなことになってしまいます.

f:id:McG:20170501165414p:plain

そう,自分自身都の内積が負になってしまうんですね.

そこで,内積の定義を,共役な複素数で内積計算を行うと決めてあげるんです.

f:id:McG:20170501170958p:plain

実数の時は,共役の複素数をとっても全く変わらないので,これで実数の内積も複素数の内積もうまく定義することが出来るんです

高校生の時ももこういうことがありましたよね.

そう,複素数の2乗を計算する時,今回と同じように共役な複素数をかけてあげたと思います.

フーリエ係数を求める

さて,無事に内積計算を複素数へ拡張できたので,本題に進みます.

 e^{i \omega t}の共役の複素数が e^{-i \omega t}になるというのは多分大丈夫だと思いますが,一旦確認しておきましょう.

f:id:McG:20170501172231p:plain

ここで,先ほど拡張した複素数の内積の定義より,共役な複素数を取って内積計算をしてみます.

f:id:McG:20170501213341p:plain

これで,無事にフーリエ係数を求めることが出来ました!!!!

このフーリエ係数は,角周波数が決まれば一意に決まる関数となっているので,添字ではなく関数として書くことも出来ますよね.

f:id:McG:20170501213930p:plain

周期関数以外でも扱えるようにする

ここまで来たらあとは最後,一息.(ここの変形はかなり雑なので,詳しく知りたい方は是非教科書をどうぞ)

今導き出した式の定積分の範囲は,-πからπとなっています.

これってなぜだったでしょうか?そうです.-∞から∞まで積分するのがめんどくさかったので三角関数の周期性に注目して,-πからπにしたのでした

f:id:McG:20170501214445p:plain

つまり,周期性がない関数を扱いたい場合は,しっかり-∞から∞まで積分してあげれば良いんですね

f:id:McG:20170501215049p:plain

これで,フーリエ変換の公式を導き出すことが出来ました!! お疲れ様でした.

最後に

ところどころ怪しい式変形もあったかもしれませんが,基本的な考え方はこんな感じなはずです.

出来る限り小難しい数式は使わないようにして,高校数学が分かれば理解できる程度のレベルにしておきました.

はじめはなにやらよくわからなかった公式の意味も,ベクトルと照らし合わせてイメージしながら学んでいくことでなんとなく理解できたのではないでしょうか?

f:id:McG:20170501215919p:plain

電気回路,音響,画像処理,制御工学などいろんなところで出てくるので,学んでおいて損はないはず.お疲れ様でした!

© 2016 Yuki Sako.