負の周波数とは何か

三角関数で負の周波数はいらない。
負の周波数という言葉が出てくるならば、それは指数関数で表現されていることを暗に意味する。

Q氏とR博士の会話1


Q「負の周波数というものがあると聞きました」
Q「周波数は正ではないのでしょうか」

R「それは”周波数”の意味が違うのだな」
R「詳しくは基底関数だ。正の時と負の時とで、基底関数が違う」

Q「意味が分かりません。もう少し詳しくお願いします」

R「そうだな」
R「別の言い方をすれば、”周波数”と言ったときに、大きく2つの周波数があるのだ」
R「1つはsin, cosの三角関数の周波数、もう1つはexpの指数関数の周波数だ」
R「この説明でどうかな」

Q「周波数は周波数でしょう。関数で意味が変わるのでしょうか。意図がつかめません。もう少しお願いします」

R「素直でよろしい。その通り、周波数の意味は関数によって変わるのだ」
R「具体的に考えよう。周波数を引数に持つ関数を考えてみようか」
R「わたしが、『時間tに依存する周波数f=1を持つ関数yを考える』と言ったら、君はどういう関数yを想像するかな」

Q「三角関数ですね。\(y=\sin(2\pi t)\)を想像します」

R「そうだ。そこが負の周波数が受け入れられない原因なのだ」
R「私は\(y=\exp(i2\pi t)\)という指数関数を想定して周波数f=1と伝えた」
R「しかし君は勝手に三角関数の周波数として理解してしまった、理解できてしまった」
R「三角関数の周波数ならば、その周波数は正の周波数しかありえない」 (数式による補足)
R「なぜなら、三角関数の周波数が負になったところで、それは正の周波数を持つ波の定数倍で表現できてしまうからだ」
R「つまり、\(\sin(-t)=-\sin(t)\)だからな。負の周波数は不要だ。」

Q「なるほど」

R「負の周波数という言葉は指数関数を考えていることを暗に示している」
R「指数関数の場合、\(\exp(-it)\)を\(\exp(it)\)を使って表現することができないのだ」
R「だから負の周波数が絶対に必要になる」

Q「問題文の説明不足が原因でしたか。理解できました」

Q氏とR博士の会話2


Q「周波数の成分が少なく済む三角関数の方が便利ではないですか」
Q「負を考える必要がないのでしょう」

R「1つ、伝えていなかったな。どちらも同じ程度の便利さだ。」
R「先ほどsinの正の周波数だけで表現できるとしたが、実はこれでは不十分なのだ」
R「ある関数を三角関数で表すならば、必ずsin, cosの両方を用いなければならない
R「つまりsin関数の周波数ゼロから正の無限大、cos関数の周波数ゼロから正の無限大の二つを用いる関数だ」
R「反対にexp関数を使う表現方法ならば、周波数は負の無限大から正の無限大の一つを用いる関数だ」
R「”周波数”にも”sin関数の周波数”、”cos関数の周波数”、”exp関数の周波数”の3つがあるわけだ」
R「指数関数ならば1つの関数系(exp)で済むから、その意味で簡単だ。しかし、負の周波数が出てきたり、複素関数として扱わなければならなくなる。」
R「三角関数ならば2つの関数系(sin, cos)を用いなければならない。どちらの周波数を考えているかいちいち説明しなければならないが、実部だけで話ができる利点がある。」

Q「なるほど。理解しました」
Q「どちらも場合によるのですね」
Q「フーリエ変換を考えたい場合は指数関数の方がよさそうですね」

R「その通り。まぁ、指数関数による表現がまさにフーリエ変換だがな」
R「ちなみに、基底関数という言葉は、ここでいう三角関数や指数関数のことだ」
R「どういう関数で展開したか?の”どういう関数”が基底関数と呼ばれる」

数式による補足


任意の関数\(y(x)\)を表現する場合、振動関数であるsin, cosまたはexpを考えます。
任意の関数を適当な関数系で表現するためには、その関数系が完全系であることが求められます。
つまり、三角関数を用いる場合、
\(\displaystyle
y(x)=\int_0^{\infty} A(f) \sin(2\pi f x) df+\int_0^{\infty} B(f) \cos(2\pi f x) df
\)

として表現できます。反対に、指数関数を用いるならば、
\(\displaystyle
y(x)=\int_{-\infty}^{\infty} C(f) e^{i2\pi f x} df
\)

と書かなければなりません。
つまり、負の周波数という言葉は指数関数が現れる場合にしかあり得ないのです。

もちろん、積分の変数変換によってsin, もしくはcos関数の周波数を負の無限大からゼロなどに変更することが可能ですが、こんなことをわざわざやる必要性、あり得ますかね。

私が昔見たことがある説明で
\(\displaystyle
\begin{align}
y(x)&=\cos(\omega x) \\
&=\frac{1}{2}\cos(\omega x)+\frac{1}{2}\cos(-\omega x)
\end{align}
\)

と変形できるから正の周波数と負の周波数になる、というものを見たことがありますが、これは完全に間違いを誘発させるための説明です。

なぜなら、\(\cos\)の係数に任意性があるためで
\(\displaystyle
\begin{align}
y(x)&=\cos(\omega x) \\
&=100\cos(\omega x)-99\cos(-\omega x)
\end{align}
\)

としても全く問題ないからです。三角関数の引数が負であるものと正であるものは独立ではないのです。

割り勘のお金のやりとりを表示する計算ツール

数人で旅行を行う際に、代表者がまとまって支払うことが多々あると思います。
旅行終了後に割り勘をする場合に計算が大変になりがちです。
その場合にスマホでも使える計算ツールを実装しました。

旅費計算ツール
https://slpr.sakura.ne.jp/qp/calc/splitcheck/split.html

発展版
https://slpr.sakura.ne.jp/qp/calc/splitcheck/split_v1.1.html
https://slpr.sakura.ne.jp/qp/calc/splitcheck/split_v1.2.html

例えば4人(A,B,C,Dさん)の旅行を考えます。グループとして支払った額を以下のように仮定します。
・旅館代としてAさんが4人分を3万円まとめて払ったとします。
・ご飯台としてBさんが4人分を1万円まとめて払ったとします。
・車台としてCさんが4人分を7000円まとめて払ったとします。
・Dさんは支払いをしていません。

旅行が終わった際に旅行全体で割り勘したいと考えたとき、計算とお金のやり取りをどうすればいいか悩みます。
少ないお金のやり取りで済ませたいですよね。そのためのツールがこれです。

人数を入れ、支払い額を入力し実行しますと結果が出ます。

上の例でお金のやり取りは、

・DさんがAさんに11750円支払う
・CさんがAさんに 4750円支払う
・BさんがAさんに 1750円支払う

ことで終わります。もし、100円単位でということであれば、”100円丸め”の計算を実行してください。


htmlとjavascriptで書いています。一度ページにアクセスしておきさえすれば、オフラインでも使えます。
計算実行時にサーバーにアクセスするわけではないので、私は入力した情報を参照することができません。安心してお使いください。
心配な方は、ソースを表示させて計算プログラムを確認してください。

お金のやり取りは最小になると思いますが、証明はしていません。最小に近いやりとり、です。