ロボット屋の記録

ロボティクスに関する雑多な学びの記録

【古典制御】ラプラス変換の前にフーリエ級数展開を噛み砕いてみる

本記事の目的

制御工学を学ぶ際,特に理由がなければ古典制御から手を付けると思います.
導入として,制御とは何なのか,実際にどんな役に立っているのか,などを知り,ワクワクして本番へと進みます.
そして,ラプラス変換と対峙します.

多くの場合,このラプラス変換天下り的に変換式を与えられ,それ自体にはあまり触れずに,その使い方や威力を教えられます.
私は,初めて制御工学を学んだ時,この最初のステップで制御工学への興味を失いました.正確に言うと,興味を失った原因の基を辿ると,ここだったと思います.

ラプラス変換を使うと色々ないいことがあるというのは分かるのですが,ラプラス変換の得体が知れないので,結局何をやっているのか,確かな感触を感じて理解できなかったのです.

もしラプラス変換ともう少し仲良くなれていたら,その後の学習内容もよりよく理解できたかも・・・.

そこで,少しでもラプラス変換と仲良くなることを目指し,噛み砕いてみることにしました.
しかし調べてみると,ラプラス変換の説明というのは一筋縄ではいかないもののようです. 一つの記事にまとめると長くなりすぎそうなので,記事を複数に分け,順を追って理解を深めることにしました.

その第1弾として,本記事ではラプラス変換とよく似た変換でありながら,物理的な意味を理解しやすいフーリエ変換・・・を理解するために,その前身とも言えるフーリエ級数展開について整理します.

この記事だけでラプラス変換について何の情報も得られませんが,後の記事での説明をグッと理解しやすくするはずです.

記事を複数に分けたにも関わらず,かなりの長文となってしまいました.
長文になった原因は関連する用語の解説を入れたことですが,私としてはこれらの用語も合わせて整理した方が理解しやすいと思いますので,記事をさらに細分化することはせず,このままにすることにしました.
読んでくださる方にとっては大変かもしれませんが,どうぞお付き合いください.

想定する読者

  • 三角関数の存在くらいしか覚えていない将来の自分

目次

1. フーリエ級数展開の概要

フーリエ級数展開とは,『周期的な信号(関数)を三角関数の組み合わせで表現できるとしたら,どのような形になるか?』を考えた末に行きついた展開方法です.

三角関数は周期的な関数の代表と言っていい有名な関数であり,数多くの便利な特性を持つことが分かっています.
もし「正体はよく分からないけどとにかく周期的な関数」を三角関数で表現することができれば,その対象の関数を三角関数の特性を利用して調べることができます.

それでは,フーリエ級数展開の式を見てみましょう.

\displaystyle{
f(t) = a_0 + \sum_{k=1}^{\infty}\left\{ a_k\cos\left( \frac{2\pi k}{T_0}t \right) + b_k \sin\left( \frac{2\pi k}{T_0}t \right) \right\}. \label{eq:1}\tag{1}
}

ここで,f(t)は対象とする周期的な関数,a_0は直流成分の係数, a_k, b_kは各三角関数の振幅(係数),k自然数(0を除く)です.

三角関数で表現する,と言った割に,早速そうでないa_0があることに違和感を感じるかもしれませんが,これを周波数0の余弦波(\cos0=1)の振幅としてみると,一貫性を感じられると思います.

式\eqref{eq:1}の\left(\frac{2\pi k}{T_0}t \right)についておさらいします. k=1のとき,この三角関数の周波数は1/T_0となります.同じ意味ですが,角周波数が2\pi/T_0であるとも言えます.
このことは,この三角関数が時間T_0で1周するような周期性を持っていることを意味しています.

また,k=2の場合は周波数,角周波数が共に2倍になります.
このことは,時間T_0で2周することを意味します.

今,k自然数,つまりk\in\mathbb{N}としているので,式\eqref{eq:1}の右辺第2項は,T_0でちょうどk周する三角関数の総和となっていることになります.

三角関数としては,k自然数でなく,任意の実数であっても問題ありません.
しかしここでは自然数の場合のみを扱います.
これは,対象とする関数が周期的であり,その周期T_0があらかじめ分かっていることに起因します.
つまり,『周期T_0を表現するための周期的な関数(=三角関数)も,同じようにT_0で周期的であろう』,ということです.

さて,このように三角関数の角周波数について決めることができましたので,後はそれぞれの振幅である式\eqref{eq:1}内のa_0, a_k, b_kを決めれば良いことになります.

フーリエ級数展開における各振幅を,フーリエ係数」といいます.

このフーリエ係数を求めることが,フーリエ級数展開を実行する際の実質的な目標になります.

2. フーリエ係数を求める

2.1. 右辺第1項の係数(直流成分)を求める

最初に直流成分a_0を求めてみましょう.
実はこれは非常に簡単です.

答えを言ってしまうと,対象とする関数f(t)を1周期分,例えば0を中心にして-\frac{T_0}{2}\sim \frac{T_0}{2}積分してしまえば,a_0を求めることができます.

実際にやってみましょう.
式\eqref{eq:1}の両辺をこの区間積分すると,以下の式のように表せます.

\displaystyle{
\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} f(t) \mathrm{d}t = \int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} \left\{ a_0 + \sum_{k=1}^{\infty}\left\{ a_k\cos\left( \frac{2\pi k}{T_0}t \right) + b_k \sin\left( \frac{2\pi k}{T_0}t \right) \right\} \right\} \mathrm{d}t.
}

ここで,右辺の積分と総和を入れ替えます1

\displaystyle{
  \begin{align}
\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} f(t) \mathrm{d}t
 &= \int_{-\frac{T_0}{2}}^{\frac{T_0}{2}}a_0 \mathrm{d}t\\
 &\quad + \sum_{k=1}^{\infty}\left\{\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} a_k\cos\left( \frac{2\pi k}{T_0}t \right) \mathrm{d}t
 + \int_{-\frac{T_0}{2}}^{\frac{T_0}{2}}b_k \sin\left( \frac{2\pi k}{T_0}t \right)\mathrm{d}t \right\}. \label{eq:2}\tag{2}
  \end{align}
}

ここで,次の関係を利用します.

\displaystyle{
\begin{align}
\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} \cos\left( \frac{2\pi k}{T_0}t \right) \mathrm{d}t &= \left[ \frac{T_0}{2\pi k}\sin\left( \frac{2\pi k}{T_0}t \right) \right]_{-\frac{T_0}{2}}^{\frac{T_0}{2}} = 0,\\
\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} \sin\left( \frac{2\pi k}{T_0}t \right) \mathrm{d}t &= \left[ -\frac{T_0}{2\pi k}\cos\left( \frac{2\pi k}{T_0}t \right) \right]_{-\frac{T_0}{2}}^{\frac{T_0}{2}} = 0.
\end{align}
}

これにより,結局式\eqref{eq:2}の右辺はa_0の項だけが残るので,

\displaystyle{
\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} f(t) \mathrm{d}t = \int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} a_0\mathrm{d}t = a_0T_0
}

となります.これをa_0について解くことで,

\displaystyle{
a_0 = \frac{1}{T_0}\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} f(t) \mathrm{d}t
}

と求まります.

2.2. 右辺第2項以降の係数を求める

2.2.1. 三角関数積分に関する面白い性質(直交性)

前節のa_0を求める計算では,三角関数を1周期分積分すると,その周波数に依らず常に0となることを利用しました.
a_k, b_kを求める際もこれと同様の発想を用いたいのですが,そのためにはちょっと工夫が要ります.
この工夫の際,次の特性が非常に役立ちます.

\displaystyle{
\int_{-\pi}^{\pi} \cos(mt)\cos(nt) \mathrm{d}t = 
\begin{cases}
\pi & (m=n)\\
0 & (m \neq n)
\end{cases}.
}

本質的には同じですが,今回は式\eqref{eq:1}に合わせて次のように変え,利用します.

\displaystyle{
\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} \cos\left( \frac{2\pi}{T_0} mt \right)\cos\left(\frac{2\pi}{T_0}nt \right) \mathrm{d}t = \frac{T_0}{2}\delta_{m,n}. \label{eq:3}\tag{3}
}

ここで,

\displaystyle{
\delta_{m,n} := 
\begin{cases}
1 & (m = n)\\
0 & (m \neq n)
\end{cases}
}

という記号を用いました.
この記号はクロネッカーのデルタ」と呼ばれます.
式\eqref{eq:3}のように場合分けの表記を簡略化するのに便利なため,よく用いられます.

式\eqref{eq:3}が実際に成立することを確認してみましょう.
確認では式\eqref{eq:3}の左辺を計算し,右辺に一致するか調べるわけですが,左辺の積分を簡単に行うために三角関数の加法定理を用います.
加法定理のことは忘れないと思いますが,具体的な式はよく忘れてしまうので,以下に最低限のものを記します.

\displaystyle{
\begin{align}
\sin(\alpha + \beta) &= \sin\alpha\cos\beta + \cos\alpha\sin\beta, \\
\cos(\alpha + \beta) &= \cos\alpha\cos\beta - \sin\alpha\sin\beta.
\end{align}
}

それでは式\eqref{eq:3}の左辺を計算してみます.

\displaystyle{
\begin{align}
\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} &\cos\left( \frac{2\pi}{T_0} mt \right)\cos\left( \frac{2\pi}{T_0}nt \right) \mathrm{d}t\\ 
&= \int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} \frac{1}{2}\left\{ \cos\left( \frac{2\pi}{T_0}(m-n)t \right) + \cos\left( \frac{2\pi}{T_0}(m+n)t\right) \right\}dt\\
&= \frac{1}{2}\left\{ \left[ \frac{\sin\left( \frac{2\pi}{T_0}(m-n)t \right)}{ (m-n)\frac{2\pi}{T_0}} \right]_{-\frac{T_0}{2}}^{\frac{T_0}{2}}
 + \left[ \frac{\sin\left( \frac{2\pi}{T_0}(m+n)t \right)}{ (m+n)\frac{2\pi}{T_0}} \right]_{-\frac{T_0}{2}}^{\frac{T_0}{2}} \right\}\\
&= \frac{1}{2} \left\{ \frac{ 2\sin(m-n)\pi }{(m-n)\frac{2\pi}{T_0}}
 + \frac{ 2\sin(m+n)\pi }{(m+n)\frac{2\pi}{T_0}} \right\}\\
&= \frac{T_0}{2} \left\{ \frac{ \sin(m-n)\pi }{(m-n)\pi}
 + \frac{ \sin(m+n)\pi }{(m+n)\pi} \right\}. \label{eq:4}\tag{4}
\end{align}
}

3行目から4行目では,\sin(-x)=-\sin xを用いています.
式\eqref{eq:4}の最終的な右辺の第2項を見ると,m, n\in\mathbb{N}であることから(m+n)\in\mathbb{N}ですので,常に0となることが分かります.
一方で第1項は,m=nとなる際に分母が0となりますので,場合分けして考える必要があります.
分母が0になる際には,以下の特性を利用します.

\displaystyle{
\lim_{x \rightarrow 0}\frac{\sin x}{x} = 1.
}

したがって, m\neq nの場合,

\displaystyle{
\frac{T_0}{2} \left\{ \frac{ \sin(m-n)\pi }{(m-n)\pi}
 + \frac{ \sin(m+n)\pi }{(m+n)\pi} \right\} = 0
}

であり, m=nの場合,

\displaystyle{
\frac{T_0}{2} \left\{ \frac{ \sin(m-n)\pi }{(m-n)\pi}
 + \frac{ \sin(m+n)\pi }{(m+n)\pi} \right\} = \frac{T_0}{2}
}

となることが分かります.

以上をまとめることで,式\eqref{eq:3}を得ることが出来ました.

これと同様にして,以下の関係も導くことができます.

\displaystyle{
\begin{align}
\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} \sin\left( \frac{2\pi}{T_0} mt \right)\sin\left(\frac{2\pi}{T_0}nt \right) \mathrm{d}t &= \frac{T_0}{2}\delta_{m,n},\label{eq:5}\tag{5}\\
\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} \sin\left( \frac{2\pi}{T_0} mt \right)\cos\left(\frac{2\pi}{T_0}nt \right) \mathrm{d}t &= 0. \label{eq:6}\tag{6}
\end{align}
}

式\eqref{eq:5}は,式\eqref{eq:4}の最終的な右辺第2項の符号が変わるだけであり,これはどちらにせよ0になってしまうので結果に影響しません.
式\eqref{eq:6}では,式\eqref{eq:4}の3行目から4行目にあたる計算の際,\cos(-x) = \cos xであることから全ての項が0となって消えてしまいます.

結果として,式\eqref{eq:3}, \eqref{eq:5}, \eqref{eq:6}を見ると,周波数も含めて全く同じ三角関数同士の積の場合のみ定数が残り,それ以外では全て0になることが分かります.
詳しくは後で補足しますが,このような特性を三角関数の直交性」と呼ぶこともあります.

2.2.2. 直交性を利用して係数を求める

それでは,a_0以外のフーリエ係数a_k, b_kを求める問題に視点を戻します.
前節で確認した特性を利用すると,以下の式を得ることができます.

\displaystyle{
\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} f(t)\cos\left( \frac{2\pi k}{T_0}t \right) \mathrm{d}t
 = \int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} a_k\cos\left( \frac{2\pi k}{T_0}t \right)\cos\left( \frac{2\pi k}{T_0}t \right) \mathrm{d}t = a_k\frac{T_0}{2}. \label{eq:7}\tag{7}
}

これは式\eqref{eq:1}に示したf(t)の両辺に\cos\left(\frac{2\pi k}{T_0}t \right)をかけたものを積分して得られます.
この時,前節で示したように,全く同じ三角関数同士の積以外の項は0となり,消えてしまいます.
なお,a_0の項も係数a_0を求める際にやったように,1周期分の積分で0となります.

ここはビックリポイントだと思います. 無限に項があったのに,欲しいところだけ残して消えちゃいました!

さて,ここまで来てしまえば,あとは式\eqref{eq:7}を整理するだけでa_kを求めることができます.
また,お察しのとおりb_kも同じように,対応する角周波数の\sin関数を掛けてから積分することで導くことができます.

2.3. まとめ(フーリエ係数の計算式)

長くなったので結果だけをまとめると,フーリエ係数a_0, a_k, b_kを求める式は以下であることが分かりました.

\displaystyle{
\begin{align}
a_0 &= \frac{1}{T_0}\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} f(t) \mathrm{d}t, \label{eq:8}\tag{8}\\
a_k &= \frac{2}{T_0}\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} f(t)\cos\left( \frac{2\pi k}{T_0}t \right) \mathrm{d}t, \label{eq:9}\tag{9}\\
b_k &= \frac{2}{T_0}\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}} f(t)\sin\left( \frac{2\pi k}{T_0}t \right) \mathrm{d}t. \label{eq:10}\tag{10}
\end{align}
}

こうして求まる係数を式\eqref{eq:1}に代入することで,対象の関数f(t)三角関数の組み合わせで表現することができます.

3. 計算内容を噛み砕いてみる

丁寧な説明を心掛けたためか,すでに本記事の文章量が多くなっていると思いますが,このままではフーリエ級数展開を導く過程のパズルのような面白さは分かっても,その意味的理解といいますか,イメージのようなものを掴めないと思います.

そこで,上記の計算内容が数学的にどんな意味を持っていたのか,噛み砕いてみます.

3.1. 第2.2.1節の特性をなぜ「直交性」というのか?

フーリエ級数展開では,フーリエ係数を求めることが実質的な計算内容でしたが,この時に活躍したのは第2.2.1節で説明した三角関数の特性でした.
そこでは,全く同じ三角関数同士以外の積を1周期分積分すると0となることを示し,この特性を「直交性」と呼ぶと説明しました.

ここでの「直交」とは何を意味しているのでしょうか?

直交という言葉を聞いて,最初に思い浮かぶのは2次元平面における2つの線分が直角(90°)に交わるイメージだと思います.
また,xyz座標を用いて表現される3次元空間(直交座標系)も,全ての軸が直交している空間として理解しているでしょう.
(その名の通りなので当たり前ですが.)
これらが確かに直交していることは実際に紙に書いたり造形してみたりして,それを定規や分度器で測ることで確認することができます.

それでは,4次元以上の多次元空間など,抽象的な空間についてはどのように「直交しているか?」を調べればよいのでしょうか?

こういった場合にも,数学的に「直交する」条件を考えることができます.
それは,「内積が0となること」です.

先ほどの2つの例も,直交するもの同士の内積を計算すると0になることは知っていますので,少し親近感のある定義だと思います.

そして,第2.2.1節で説明した特性を「三角関数の直交性」と呼ぶ理由は,異なる三角関数同士の内積が0になることに起因しています.

・・・ん?関数の内積

3.2. 関数の内積

3.2.1. 内積とは?

内積といえば,2つのベクトルに対して行う計算を思い浮かべると思います.
この理解は正しく,そのまま今回の話に適用することができます.

しかし,もう少し理解を深めるために,内積の定義を確認しておきましょう.

定義 1 内積
実数全体の集合\mathbb{R}複素数全体の集合\mathbb{C}のどちらかとなる集合を\mathbb{K}とする.
この\mathbb{K}上のベクトル空間Xにおける内積とは,Xの直積空間X\times Xから\mathbb{K}への写像
\displaystyle{
\langle\cdot \mid \cdot\rangle : X\times X \rightarrow \mathbb{K}
}
であり,Xの任意の元x, y, z \in Xと任意のスカラー\alpha \in \mathbb{K}に対し,次の4つが成り立つものをいう.
1. \langle x \mid x \rangle \geq 0,かつ等号が成り立つのはx=0のときのみ
2. \langle y \mid x \rangle = \overline{\langle x \mid y \rangle}
3. \langle \alpha x \mid y \rangle = \alpha \langle x \mid y \rangle
4. \langle x+y \mid z \rangle = \langle x \mid z \rangle + \langle y \mid z \rangle

なお,\overline{\cdot}\cdot複素共役として用いました.
また,内積を表す記号として,\langle x \mid y \rangleを用いました.
これはディラックのブラケット記法」などと呼ばれるもので,「\langle x \mid」の部分を「ブラ」,「\mid y \rangle」の部分を「ケット」とそれぞれ呼びます.
内積を示す際によく用いられる記法は他にも多くあり,(x \mid y), \langle x, y \rangle, (x, y), x\cdot y, などがあります.
今回は,ロボティクスを学ぶ人間にとって最もなじみのなさそうなものを選びました.

これを機に私も慣れていきたいです.

さて,定義を見ると,また難しそうな言葉がたくさん出てきました.
ちなみに,というのは単に集合を構成する要素のことです.なじみがないかもしれませんが,シンプルなのでこの説明だけで問題ないでしょう.
元を除くと,すぐに理解できない言葉は以下の3つだと思います.

  1. \mathbb{K}上のベクトル空間X
  2. Xの直積空間X\times X
  3. X\times Xから\mathbb{K}への写像

そこでこれらについて節を分けて説明します.
説明の順序は上とは異なり,簡単に説明しやすいものから書いていくことにします.

3.2.2. 直積空間とは?

これはシンプルで,2つのものの組み合わせでできる集合をイメージしてもらえれば良いと思います.「直積集合」と呼ばれるものと同じです.
例えば,行数がmで列数がnの行列を考えたとき,その行列の要素数m\times nになりますが,この要素全てから成る集合は直積空間です.

このことを定義として整理しておきましょう.

定義 2 直積空間(直積集合)
2つの集合A, Bがあり,それぞれの元をa\in A, b\in Bとしたとき, 任意の元の順序対(a,b)全てからなる集合
\displaystyle{
A\times B = \left\{ (a,b) \mid a\in A, b\in B \right\}
}
をAとBの直積空間(または直積集合)という.

ここで表れた「順序対(a,b)というのは,2つの要素をこの順序で組み合わせたものです.
順序が異なると別の順序対とみなします.つまり,(a,b)\neq (b,a)です.
なお,順序対のことを単純に「対」ということもありますが,逆に順序対と対を区別することもあります.この辺りは読んでいる文書などにおける用語の定義をよく確認した方が良いでしょう.個人的には,要素の順番が重要であることを意識して,順序対という言葉を用いる方が良いと思っています.

ここで少し注意があります.
上では順序対の表記を(x,y)としました.
しかし実はこの表記は,内積の表記の一例としても挙げたものです.さらに,順序対の表記も\langle x, y\rangle, [x,y]などなど,様々です.これについてもやはり,文書中の用語の定義をよく確認しましょう.
今回は(x,y)を用いることにします.

なじみのある2次元座標もほとんどの場合(x,y)と書きますね.

3.2.3. 写像とは?

写像の定義

写像という言葉はよく聞くと思いますが,その定義をちゃんと知らないという方は多いと思います.
実は写像というのは非常に広い意味を持っています. それではこれも定義を確認してみましょう.

定義 3 写像
集合X, Yがあり,Xの任意の元x\in Xに対し,Yの元y\in Yがただ1つ定まるとき,その対応関係を写像,もしくは関数という.
このことを
\displaystyle{
f:X \rightarrow Y
}
などと書き,写像fと呼ぶ.

ここでもやはり,写像の表記方法はこれだけではないことに注意してください.
ただ,これまで述べた内積や順序対に比べると,写像をこのように書くことは一般的なように感じます.

写像を少し噛み砕いてみる

写像の定義についてはもう十分なのですが,理解を深めるために少し考えてみましょう.

定義 3では,元x\in Xに対して定まる別の集合の元y\in Yただ1つだと書きました.
わざわざこのように書いたということは,ただ1つではなく,複数定まってしまって,写像とは呼べない場合もあるということです.
そういった場合は,AからBへの「対応(または関係)」と呼ばれます.
この対応は,直積集合A\times Bの部分集合(Gと名づけておきます)として定義できます.以降では部分集合Gを「対応G」と呼んで慣れましょう.
直積集合A\times Bは集合Aと集合Bのあらゆる組み合わせを元とする集合でした.
この部分集合である対応Gは,この中の一部の組み合わせを元とする集合です.
したがって,集合Aから何か元を選んできても,それが対応Gの元では使われていない場合もあります.
ここで,対応Gの元に使われている集合Aの元の集合には,「定義域」という名前がつけられています.
数式で整理すると,定義域をDとして,以下のように書けます.

 D=\{ a\in A \mid あるb\in Bに対し,(a,b)\in G \}.

定義域の話と同じように,集合Bの元についても,対応Gの元に使われているものとそうでないものがあります.使われている元の集合には「像」という名前がついており,次のように書けます.

 R=\{ b\in B \mid あるa\in Aに対し,(a,b)\in G \}.

ここで,「対応」や「定義域」,「像」といったネーミングの理由が気になる方もいると思います.

違和感があるともやもやしますよね.

対応Gは直積集合A\times Bの部分集合ですので,その元は順序対です.
したがってaが先,bが後,のようなイメージがあります.
そのイメージを大事にして,まずa\in Rを決めます. すると対応Gから,aと何かの組である元を特定することができます.
この元は複数あっても構いませんので,例えば(a,b), (a,b')などのように,とにかくいくつかの元が対応付けられます.
これは同時に,aを選んだことによってb, b'を間接的に選んだことになります.
このことが,「対応」という名付けのイメージだと思います.

さて,このように解釈すると,Dを「定義域」と呼ぶ理由もなんとなく分かると思います.
対応Gの元が定義されている領域,もしくは対応Gによって決まるbの領域を定義する領域,といったように理解できると思います.
「像」というのは,この定義域を対応Gによって写した領域といった解釈が良いと思います.

対応の話で長くなってしまったので,写像に視点を戻します.

「対応」との関係を意識しながら「写像」を見てみましょう.

写像は対応の特殊な場合であり,写像と呼べるようになるためには残り2つの条件を満たす必要があります.

1つ目の条件は,一意であることです.
上の話で出たようにa\in Rを選んだとき,(a,b), (a,b')\in Gであればb=b'である場合,この対応G一意であるといいます.つまり,aに対応するものはbだけということです.

2つ目の条件は,定義域Dが集合Aと一致することです. つまり,集合Aの任意の元a\in Aに対応するb\in Rが存在することです.

これら2つを合わせると,先に述べた定義 3の通りの内容を指していることが分かると思います. また,定義で書いたように,部分集合Gではなく,対応関係自体に注目して,写像fと呼ぶこともできます.
このとき,元a\in Aに対応する集合Bの元を,f(a)\in Bと書けます.
以降では,対応させる処理に注目する場合には写像fの方を用います.

ここで,集合Aの元は全て写像fに使われることが決まりましたが,集合Bについては何も述べられていません.
したがって,この時点では写像fによって対応する元bの集合(像ですね)が集合Bの一部でも良いことになります.
ちなみに,この時の集合B「値域」といいます.
よく「像」と「値域」を混同してしまいますが,分けて用いられることもあるので注意が必要です.

それでは集合Bについても言及した場合をみてみましょう.

写像の像Rが集合Bに一致する場合,その写像全射(全写)」といいます.
つまり全射によって,集合Bの全ての元は集合Aのいずれかの元に対応付けられます.
なお,この「全射」のことをBの上への写像ということもあります. なぜこのように呼ぶのかの理由には自信がありませんが,私は写された像がBの上を(ぴったりと)覆っているからだと解釈しています.

もう一度,(全射ではない)写像に視点を戻します.
写像の定義では,元a\in Aに対応する集合Bの元が1つであることは決めていますが, 同じ元(仮に元b\in Bとします)に対応する元がただ1つとは決められていません.
つまり,異なる元a, a'\in Aが同じ元b\in Bに対応することがあり得ます.
これに対し,a,a'に対応する元が等しい,つまりf(a)=f(a')ならば,a=a'である場合,この写像f単射(単写)」といいます.
こちらも別の呼び方があり,fは一対一である」といっても同じ意味です.

ここで全射の条件と,単射の条件が両立できることに注目してください.
どちらも両立する場合,写像f全単射(全単写)」といいます.
この全単射という写像は非常に重要です.
その理由は,f:A\rightarrow B全単射であるならば,g:B\rightarrow Aとなる写像が存在することが分かるためです.
そしてこの写像gは必ず全単射であり,またこのような写像はただ1つしか存在しません.
この写像gを,写像fに対応して「逆写像(または逆関数)」といい,f^{-1}と表記します.

3.2.4. ベクトル空間とは?

3.2.4.1. ベクトル空間の定義

ベクトルと聞いて,まず思い浮かぶのはなんでしょうか?
空間中にある方向を持った矢印や,数の組がまず浮かぶのではないかと思います.
しかし実は,これらはベクトルと呼ばれるもののうちの,ごく一部です.

これまで説明してきた直積空間や写像と同様に,ベクトルも数学的にきっちり定義されています.
ただし,これまでの2つと大きく違う点が1つあります.

それは,ベクトルは要素単体だけでは定義されず,その要素が従う演算規則が指定されてはじめて定義されるということです.

演算を行うためには少なくとも2つ以上の要素からなる何かしらの集合が必要になります. したがって,ベクトルを定義するためには,まずそのベクトルが属する集合を定義しなければなりません.
そしてこの集合こそが,「ベクトル空間」です.

ベクトルは「ベクトル空間の元」として定義されるということです.

それでは,ベクトル空間の定義をみていきましょう.
先に述べたように,ベクトル空間を定義するには演算規則を指定する必要があります.
そのため,これまでの定義よりも長い記述になります.

定義 4 ベクトル空間(線形空間
ある集合Xがあり,その上に次の2つの条件を満たす演算が与えられているとき,Xとそれら2つの演算をあわせて,ベクトル空間という.

  1. 集合Xの任意の元x, yに対して,和と呼ばれる集合Xの新しい元が常に定まり,次の条件を満たす.なお,和をx+yと書く.つまり,x+y\in Xである.
    • \forall x,y,z \in Xに対し,(x+y)+z = x+(y+z)が成り立つ.
    • \forall x,y \in Xに対し,x+y = y+xが成り立つ.
    • 零ベクトルと呼ばれる元0\in Xがただ1つ存在し,\forall x\in Xに対してx+0=xが成り立つ.
    • \forall x\in Xに対してx'\in Xが存在してx+x'=0が成り立つ.このx'を逆元と呼び,-xと書く.なお,x+(-x)x-xと書ける.

  2. 集合Xの任意の元xと実数\mathbb{R}の任意の元aに対し,xaの積(もしくはxa倍)と呼ばれる集合Xの新しい元ax\in Xが常に定まり,次の条件を満たす.
    • \forall x\in X\forall a,b\in \mathbb{R}に対し,(a+b)x = ax + bxが成り立つ.
    • \forall x,y\in X\forall a\in \mathbb{R}に対し,a(x+y)=ax+ayが成り立つ.
    • \forall x\in X\forall a,b\in \mathbb{R}に対し,(ab)x=a(bx)が成り立つ.
    • \forall x\in Xに対し,1x = xが成り立つ.

なお,上の定義中では\forallという記号を用いました.これは「任意」という意味の記号で,\forall x\in Xは「集合Xの任意の元x」と同じことを意味します.
「任意の元x」という表現も聞き馴染がない場合,ピンとこないかもしれません.
これは集合Xのどんな元でもいいですよ,何の制限もないですよ,というニュアンスです.
結局,集合Xの全ての元に共通する性質を述べていることになります.

上の定義で,積の演算には実数\mathbb{R}の元を用いました.実は実数以外に複素数\mathbb{C}などの元でも同じように定義することができます.
実数\mathbb{R}の元や複素数\mathbb{C}の元などを総称してスカラーと呼ばれるため,定義でaxと書いた演算にはスカラー倍」という名前がついています.

なお,スカラーが実数\mathbb{R}である場合のベクトル空間を「実数\mathbb{R}上のベクトル空間」といい,「実ベクトル空間(実線形空間)」と呼称されます.
同様にスカラー複素数\mathbb{C}である場合には「複素ベクトル空間(複素線形空間)」という名前がつけられています.

この呼称を見ると,「ベクトル」は「線形であるもの」ということが分かります.
線形性は非常に重要な性質で,制御工学において対象が線形であるか否かによって適切な制御則が大きく異なってきます.
したがって,考える対象がベクトルであるか否かを調べることは非常に重要です.

ここで,定義 4には本節の最初に述べた矢印や数の組のような話は一切でてきていないことに注意してください.
定義 4を満たすものは全て「ベクトル」であり,その中の一例として上の2つがあったのです.

ベクトルのイメージを掴むために,いくつかの例を見てみましょう

3.2.4.2. ベクトル空間の例

3.2.4.2.1. n次元数ベクトル空間\mathbb{R}^n

これは既に例示したように,代表的なベクトル空間です.
この空間は以下のように定義されます.

\displaystyle{
\mathbb{R}^n := \left\{ x = \left[ 
  \begin{array}{c}
  x_1 \\
  x_2 \\
  \vdots \\
  x_n
  \end{array}
   \right]
   : x_i \in \mathbb{R}, i=1,\cdots,n
   \right\}.
}

この空間に対し,スカラーを次のように定義します.

\displaystyle{
\begin{align}
\left[
\begin{array}{c}
  x_1 \\
  x_2 \\
  \vdots \\
  x_n
  \end{array}
   \right]
   +
   \left[
   \begin{array}{c}
  y_1 \\
  y_2 \\
  \vdots \\
  y_n
  \end{array}
   \right]
   &:=
   \left[
   \begin{array}{c}
  x_1+y_1 \\
  x_2+y_2 \\
  \vdots \\
  x_n+x_n
  \end{array}
   \right],\\
\quad\\
a\left[
\begin{array}{c}
  x_1 \\
  x_2 \\
  \vdots \\
  x_n
  \end{array}
   \right]
   &:=
   \left[
   \begin{array}{c}
  ax_1 \\
  ax_2 \\
  \vdots \\
  ax_n
  \end{array}
   \right].
\end{align}
}

このようにすると,この空間\mathbb{R}^nは定義 4の条件を全て満たしますので,ベクトル空間となります.

3.2.4.2.2. 実数値(複素数値)関数空間

ある区間,例えば[0, \infty)上に定義された実数値(複素数値でもいい)関数の全体である空間も,ベクトル空間として定義することができます.
ここで,関数の空間という概念に違和感を感じるかもしれません.
上で述べた条件に当てはまる関数は数多くありますが,ここで指している空間はそのようなたくさんある関数を集めた集合です.
したがって,元は関数となります.
実数値関数空間を例として数学的に表現すると,次のように書けます.

\displaystyle{
\mathcal{F}[0, \infty) := \left\{ f:[0,\infty) \rightarrow \mathbb{R} \right\}.
}

この空間に対して,次のようにスカラーを定義します.
なお,f,g\mathcal{F}の任意の元とします.また,ここでは便宜上,f,gt\in[0,\infty)の関数としています.

\displaystyle{
\begin{align}
(f+g)(t) &:= f(t) + g(t),\\
(af)(t) &:= af(t).
\end{align}
}

このようにすると,やはり定義 4の条件を全て満たしますので,\mathcal{F}もベクトル空間となります.

3.2.5. 内積の再考

さて,第3.2.1節内積の定義を見てから,その中で使われていた用語の意味を知るために長い道のりを経てきました.
ここまでの説明を踏まえて内積の定義を読み解くと,以下のように整理できます.

  1. 定義 4で定まるベクトル空間の任意の元を2つ取ってくる
  2. その2つの元を順序を考慮して並べた組を作る
  3. ベクトル空間を定義する際のスカラー倍で用いた空間\mathbb{K}から,作った組に対応する元をただ一つ定める対応関係を考える
  4. その対応関係が定義 1に記した4つの規則を満たすとき,この対応関係を「内積」と呼ぶ

ベクトルがこれまで知っていたものよりも遥かに多くのバリエーションを持っていたように,様々な演算を内積として考えることができます.

定義 1を満たしている演算は全て内積なのです
(それが定義なので当然なのですが・・・)

3.3. 関数の内積を考える

さて,記事が長すぎて目的を見失っているかもしれませんが,そもそも内積を理解しようと思った動機は,第3.1節で関数の内積を考えたかったためです.
三角関数が直交するか否かを判断するために,2つの三角関数内積が0になるかどうかを調べたかったのです.

第3.2.4.2.2節で例示したように,関数もベクトルとして考えることができます.
実数値関数空間での内積は,例えば次のように定義することができます.

\displaystyle{
\left\langle f \mid g \right\rangle := \int_{a}^{b} f(t)g(t) \mathrm{d}t.
}

これは定義 1の条件を全て満たします.

なお,ここでの積分区間[a, b]には特に制限はありません.
また,右辺に定数を掛けたとしても,定義 1の条件を満たすことに変わりありません.
したがって,関数の内積は無数に定義できることが分かります.

もうあの式にそっくりですね.

さて,ここまでくると式\eqref{eq:3}, \eqref{eq:5}, \eqref{eq:6}がなぜ三角関数の直交性を示すのか分かってきたのではないでしょうか?
これら3つの式の左辺は全て,三角関数同士の内積を意味しているのです.
そして既に述べたように,内積が0であることを「直交する」といいますので,異なる三角関数同士は全て直交していることが示されている,と分かります.

3.4. フーリエ係数の再考

内積に意識して,フーリエ係数の計算式である式\eqref{eq:8}, \eqref{eq:9}, \eqref{eq:10}をもう一度みてみましょう.
これらの計算内容は,対象とする関数f(t)と,振幅を調べたい三角関数内積に他なりません.

ここで,空間中の矢印でベクトルを学んだときのことを思い出してみます.
あるベクトルxと他のあるベクトルy内積\langle x \mid y \rangleを計算すると,ベクトルxをベクトルyを含むいくつかのベクトルで表現した際の,ベクトルyに関する成分を計算できたと思います.
この成分を仮にaとすれば,x = ay + ?ということです.
ベクトルxを完全に表現するためには,他にも適切なベクトルが必要になります.

このようにして任意のベクトルを表現可能な過不足ないベクトルのまとまりを,「基底」といいます.

以上のことと同様に,フーリエ級数展開では,周期的な関数の空間の基底として無数の三角関数を考え,対象とする関数ベクトルの各基底の成分を内積で求めている,ということになります.

4. まとめ

本記事ではラプラス変換と仲良くなることを目指し,その前段階のフーリエ変換のさらにその前のフーリエ級数展開について調べ,まとめてみました.
フーリエ級数展開ある周期的な関数を三角関数の組み合わせで表現する方法でした. ここで使用する三角関数は,対象の関数の周波数の自然数倍の周波数を持つものであり,それらの振幅は三角関数の直交性を利用した関数の内積によって求められました.

また,フーリエ級数展開において重要な関数の内積を理解するために,内積ベクトル空間直積空間写像などの用語とその定義を学びました.
このせいで文章量が凄いことになってしまいましたが,フーリエ係数の計算式をその形だけで見るよりも,多少は仲良くなれたのではないかと思います.

今のところはまだまだラプラス変換との繋がりがさっぱり見えてこないと思いますが,本記事で整理したイメージを大事にしておくことで,フーリエ変換ラプラス変換の意味を理解しやすくなると思います.

5. 参考文献


  1. 本来は入れ替えが可能かどうかを調べる必要がありますが,今回はラプラス変換の理解の前段階としてフーリエ級数展開を大まかに理解することを目的としているため,踏み込まないことにします.この辺りを簡潔に説明できる実力がついたら追記するかもしれません.今は,『入れ替えられる場合を対象にしてとりあえず考えを進めている』というように思ってください.